From aec0d4397659b289450d4b63b437272af2def7e4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 8 Oct 2024 23:53:34 -0400 Subject: [PATCH 01/49] Buildable scrap walls / Various map fixes / Desolate rift submission --- core/assets/bundles/bundle.properties | 6 ++++++ core/assets/maps/desolateRift.msav | Bin 10260 -> 15004 bytes core/assets/maps/mycelialBastion.msav | Bin 60390 -> 60500 bytes core/src/mindustry/content/Blocks.java | 12 ++++++++---- core/src/mindustry/content/Items.java | 2 +- core/src/mindustry/content/SectorPresets.java | 2 +- .../mindustry/content/SerpuloTechTree.java | 14 ++++++++++++-- 7 files changed, 28 insertions(+), 8 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 3663cd506c..7d39e7ddb8 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -840,6 +840,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -868,6 +869,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis @@ -2112,6 +2114,10 @@ block.phase-wall.description = Protects structures from enemy projectiles, refle 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.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. 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. diff --git a/core/assets/maps/desolateRift.msav b/core/assets/maps/desolateRift.msav index d08ee30cfee51bef2899d034cada573343c9810c..11d62928a0fcf1080b127a73ff5e29d12dfb770f 100644 GIT binary patch literal 15004 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

c;XiD)R|DKf8gp%?(+(df9UGV++TE`54gSs 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 literal 10260 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 z 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 v1e+(A)lw$ZP~r2bd}q8wE0sXJ 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 delta 60056 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 VtJnTZ^3ALL3A?F{@&mY-k`+%;Lq`Ar diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 30089d8c22..282fd46a1c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1606,29 +1606,33 @@ public static void load(){ }}; scrapWall = new Wall("scrap-wall"){{ - requirements(Category.defense, BuildVisibility.sandboxOnly, with(Items.scrap, 6)); + requirements(Category.defense, with(Items.scrap, 6)); health = 60 * wallHealthMultiplier; variants = 5; + buildCostMultiplier = 4f; }}; scrapWallLarge = new Wall("scrap-wall-large"){{ - requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.mult(scrapWall.requirements, 4)); + requirements(Category.defense, ItemStack.mult(scrapWall.requirements, 4)); health = 60 * 4 * wallHealthMultiplier; size = 2; variants = 4; + buildCostMultiplier = 4f; }}; scrapWallHuge = new Wall("scrap-wall-huge"){{ - requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.mult(scrapWall.requirements, 9)); + requirements(Category.defense, ItemStack.mult(scrapWall.requirements, 9)); health = 60 * 9 * wallHealthMultiplier; size = 3; variants = 3; + buildCostMultiplier = 4f; }}; scrapWallGigantic = new Wall("scrap-wall-gigantic"){{ - requirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.mult(scrapWall.requirements, 16)); + requirements(Category.defense, ItemStack.mult(scrapWall.requirements, 16)); health = 60 * 16 * wallHealthMultiplier; size = 4; + buildCostMultiplier = 4f; }}; thruster = new Thruster("thruster"){{ diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index cfb8bb14d6..00cc3cc5d5 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -60,7 +60,7 @@ public static void load(){ }}; scrap = new Item("scrap", Color.valueOf("777777")){{ - + cost = 0.5f; }}; silicon = new Item("silicon", Color.valueOf("53565c")){{ diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 2d099f35db..9152290555 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -120,7 +120,7 @@ public static void load(){ difficulty = 7; }}; - mycelialBastion = new SectorPreset("mycelialBastion", serpulo, 133){{ + mycelialBastion = new SectorPreset("mycelialBastion", serpulo, 260){{ difficulty = 7; }}; diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index d16383e1b8..62b5ab2908 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -262,12 +262,21 @@ public static void load(){ node(duo, () -> { node(copperWall, () -> { node(copperWallLarge, () -> { + node(scrapWall, () -> { + node(scrapWallLarge, () -> { + node(scrapWallHuge, () -> { + node(scrapWallGigantic); + }); + }); + }); + node(titaniumWall, () -> { node(titaniumWallLarge); node(door, () -> { node(doorLarge); }); + node(plastaniumWall, () -> { node(plastaniumWallLarge, () -> { @@ -365,7 +374,7 @@ public static void load(){ node(atrax, () -> { node(spiroct, () -> { node(arkyid, () -> { - node(toxopid, () -> { + node(toxopid, Seq.with(new SectorComplete(mycelialBastion)), () -> { }); }); @@ -615,7 +624,8 @@ public static void load(){ node(mycelialBastion, Seq.with( new Research(atrax), new Research(spiroct), - new Research(multiplicativeReconstructor) + new Research(multiplicativeReconstructor), + new Research(exponentialReconstructor) ), () -> { }); From f56a620dce36ee37b430c18ed8b7776e708570fd Mon Sep 17 00:00:00 2001 From: Github Actions Date: Wed, 9 Oct 2024 03:54:28 +0000 Subject: [PATCH 02/49] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 6 ++++++ core/assets/bundles/bundle_bg.properties | 6 ++++++ core/assets/bundles/bundle_ca.properties | 6 ++++++ core/assets/bundles/bundle_cs.properties | 6 ++++++ core/assets/bundles/bundle_da.properties | 6 ++++++ core/assets/bundles/bundle_de.properties | 6 ++++++ core/assets/bundles/bundle_es.properties | 6 ++++++ core/assets/bundles/bundle_et.properties | 6 ++++++ core/assets/bundles/bundle_eu.properties | 6 ++++++ core/assets/bundles/bundle_fi.properties | 6 ++++++ core/assets/bundles/bundle_fil.properties | 6 ++++++ core/assets/bundles/bundle_fr.properties | 6 ++++++ core/assets/bundles/bundle_hu.properties | 6 ++++++ core/assets/bundles/bundle_id_ID.properties | 6 ++++++ core/assets/bundles/bundle_it.properties | 6 ++++++ core/assets/bundles/bundle_ja.properties | 6 ++++++ core/assets/bundles/bundle_ko.properties | 6 ++++++ core/assets/bundles/bundle_lt.properties | 6 ++++++ core/assets/bundles/bundle_nl.properties | 6 ++++++ core/assets/bundles/bundle_nl_BE.properties | 6 ++++++ core/assets/bundles/bundle_pl.properties | 6 ++++++ core/assets/bundles/bundle_pt_BR.properties | 6 ++++++ core/assets/bundles/bundle_pt_PT.properties | 6 ++++++ core/assets/bundles/bundle_ro.properties | 6 ++++++ core/assets/bundles/bundle_ru.properties | 6 ++++++ core/assets/bundles/bundle_sr.properties | 6 ++++++ core/assets/bundles/bundle_sv.properties | 6 ++++++ core/assets/bundles/bundle_th.properties | 6 ++++++ core/assets/bundles/bundle_tk.properties | 6 ++++++ core/assets/bundles/bundle_tr.properties | 6 ++++++ core/assets/bundles/bundle_uk_UA.properties | 6 ++++++ core/assets/bundles/bundle_vi.properties | 6 ++++++ core/assets/bundles/bundle_zh_CN.properties | 6 ++++++ core/assets/bundles/bundle_zh_TW.properties | 6 ++++++ 34 files changed, 204 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index cc21cebbca..765ac14866 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -813,6 +813,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Аптымальнае месца каб пачаць. Нізкая варожая пагроза. Мала рэсурсаў.\nВазімце як мага болей свінца і медзі.\nІ рухайцеся далей. sector.frozenForest.description = Нават тут, бліжэй да гор, распаўсюдзіліся споры. Ледзяныя тэмпературы не могуць утрымліваць іх заўсёды.\n\nПачніце выкарыстоўваць энергію. Пабудуйце генератары на цвёрдым паліве. Даведайцеся як выкарыстоуваць рэгенератары. @@ -840,6 +841,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Пачатак sector.aegis.name = Ахова sector.lake.name = Рака @@ -2062,6 +2064,10 @@ block.phase-wall.description = Сцяна, пакрытая спецыяльны block.phase-wall-large.description = Сцяна, пакрытая спецыяльным фазавым адлюстроўваюць складам. Адлюстроўвае большасць куль пры ўдары. \nРазмяшчаецца на некалькіх плітках. block.surge-wall.description = Вельмі трывалы ахоўны блок. \nНакаплвае зарад пры кантакце з куляй, выпускаючы яго выпадковым чынам. block.surge-wall-large.description = Вельмі трывалы ахоўны блок. \nНакаплвает зарад пры кантакце з куляй, выпускаючы яго выпадковым чынам. \nРазмяшчаецца на некалькіх плітках. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Маленькая дзверы. Можна адкрыць або зачыніць націскам. block.door-large.description = Вялікая дзверы. Можна адкрыць і закрыць націскам. \nРазмяшчаецца на некалькіх плітках. block.mender.description = Перыядычна рамантуе блокі ў непасрэднай блізкасці. Захоўвае сродкі абароны ў цэласнасці паміж хвалямі. \nОпцонально выкарыстоўвае крэмній для павелічэння далёкасці і эфектыўнасці. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 5318b16744..f45231faa7 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -822,6 +822,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Перфектното място за започване отначало. Ниска заплаха. Ниски ресурси.\nСъбери колкото можеш мед и олово.\nПродължи напред. sector.frozenForest.description = Дори тук, близо до планините, спорите са се разпространили. Мразовитите температури не могат да ги задържат вечно.\n\nОвладейте електричеството. Постройте горивни генератори. Научете се да ползвате възстрановители. @@ -849,6 +850,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2074,6 +2076,10 @@ block.phase-wall.description = Защитава структури от враж block.phase-wall-large.description = Защитава структури от вражески огън, отразявайки повечето куршуми при удар. block.surge-wall.description = Защитава структури от вражески огън, периодично освобождавайки волтови дъги при контакт. block.surge-wall-large.description = Защитава структури от вражески огън, периодично освобождавайки волтови дъги при контакт. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Стена, която може да бъде отворена и затворена. block.door-large.description = Стена, която може да бъде отворена и затворена. block.mender.description = Периодично поправя близки блокове.\nОпционално използва силикон за да увеличи обхвата и ефективността си. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index b76d71d2d4..cb4684e9ad 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -826,6 +826,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = El lloc adequat per a començar de nou. Amenaça enemiga baixa. Pocs recursos.\nRecolliu tot el coure i plom que pugueu.\nDesprés, continueu en un altre sector. sector.frozenForest.description = Les espores han arribat fins aquí, prop de les muntanyes. Les temperatures baixes no les podran contenir per sempre.\n\nComenceu el camí del poder. Construïu generadors a combustió. Apreneu a fer servir els reparadors. @@ -853,6 +854,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = El principi sector.aegis.name = L’ègida @@ -2084,6 +2086,10 @@ block.phase-wall.description = Protegeix les estructures dels projectils enemics block.phase-wall-large.description = Protegeix les estructures dels projectils enemics, reflectint la majoria de munició que hi impacta. block.surge-wall.description = Protegeix les estructures dels projectils enemics, alliberant descàrregues elèctriques periòdicament quan algun enemic el toca. block.surge-wall-large.description = Protegeix les estructures dels projectils enemics, alliberant descàrregues elèctriques periòdicament quan algun enemic el toca. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Un mur que es pot obrir i tancar. block.door-large.description = Un mur gros que es pot obrir i tancar. block.mender.description = Repara blocs propers periòdicament.\nTambé pot usar silici per a potenciar el seu abast i eficiència. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 42a4d175a6..c6ed8ec3e0 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -824,6 +824,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. @@ -851,6 +852,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Nástup sector.aegis.name = Aegis sector.lake.name = Jezero @@ -2079,6 +2081,10 @@ block.phase-wall.description = Chrání konstrukce před nepřátelskými střel block.phase-wall-large.description = Chrání konstrukce před nepřátelskými střelami, reflecting most bullets upon impact. block.surge-wall.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává energetické výboje. block.surge-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává energetické výboje. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Zeď, která může být otevřena a zavřena. block.door-large.description = Zeď, která může být otevřena a zavřena. block.mender.description = Opakovaně opravuje bloky ve svém dosahu.\nVolitelně umí použít křemík pro posílení dosahu a efektivity. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 00206dd692..49c53b8820 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2062,6 +2064,10 @@ block.phase-wall.description = En væg legeret med specielt, reflekterende fase- block.phase-wall-large.description = En væg legeret med specielt, reflekterende fase-stof. Reflekterer de fleste slags skud.\nFylder flere felter. block.surge-wall.description = En ekstremt hård væg.\nOpbygger en ladning ved at absorbere skud. Ladningen affyres tilfældigt block.surge-wall-large.description = En ekstremt hård væg.\nOpbygger en ladning ved at absorbere skud. Ladningen affyres tilfældigt.\nFylder flere felter. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = En bette dør. Kan åbnes og lukkes ved at trykke på den. block.door-large.description = En stor dør. Kan åbnes og lukkes ved at trykke på den.\nFylder flere felter. block.mender.description = Reparerer løbende blokke i nærheden. Hjælper til at holde forsvaret oppe mellem bølger.\nSilicium kan bruges til at øge rækkevidde og effektivitet. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 100750adb1..59844dea3a 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -834,6 +834,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter. sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure. @@ -861,6 +862,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Der Anfang sector.aegis.name = Aegis @@ -2105,6 +2107,10 @@ block.phase-wall.description = Beschützt Blöcke vor Gegnern, indem sie die mei block.phase-wall-large.description = Beschützt Blöcke vor Gegnern, indem sie die meisten Schüsse reflektiert. block.surge-wall.description = Beschützt Blöcke vor Gegnern und greift Gegner mit Lichtbögen an. block.surge-wall-large.description = Beschützt Blöcke vor Gegnern und greift Gegner mit Lichtbögen an. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Ein Tor, das geöffnet und geschlossen werden kann. block.door-large.description = Ein großes Tor, das geöffnet und geschlossen werden kann. block.mender.description = Repariert regelmäßig Blöcke in seiner Umgebung.\nVerwendet optional Silizium, um Reichweite und Effizienz zu steigern. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 4d81de6576..12a10f7565 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -830,6 +830,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúne la mayor cantidad de plomo y cobre posible y sigue adelante. sector.frozenForest.description = Incluso aquí, cerca de las montañas, se han extendido las esporas. Las gélidas temperaturas no las contendrán para siempre.\nDescubre la energía eléctrica. Construye generadores de combustión. Aprende a usar reparadores. @@ -857,6 +858,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = El Inicio sector.aegis.name = Égida @@ -2097,6 +2099,10 @@ block.phase-wall.description = Protege estructuras de proyectiles enemigos. Pued block.phase-wall-large.description = Protege estructuras de proyectiles enemigos. Puede reflejar la mayoría de proyectiles al impactar. block.surge-wall.description = Protege estructuras de proyectiles enemigos. Al contaco, libera arcos eléctricos periódicamente. block.surge-wall-large.description = Protege estructuras de proyectiles enemigos. Al contaco, libera arcos eléctricos periódicamente. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Un muro que puede estar cerrado o abierto, permitiendo el paso a través de él. block.door-large.description = Un muro que puede estar cerrado o abierto, permitiendo el paso a través de él. block.mender.description = Repara estructuras cercanas constantemente. Puede usar silicio para potenciar su alcance y eficiencia. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 486284809a..93de3977ac 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = Tugev kaitsekonstruktsioon, mis on kaetud erilise block.phase-wall-large.description = Tugev kaitsekonstruktsioon, mis on kaetud erilise faaskangapõhise peegeldava ühendiga. Pakub kaitset peaaegu kõiki tüüpi kuulide ja mürskude eest.\nUlatub üle mitme bloki. block.surge-wall.description = Äärmiselt tugev kaitsekonstruktsioon.\nKuulidega kokkupõrkel neelab energiat, vabastades seda suvalistel hetkedel. block.surge-wall-large.description = Äärmiselt tugev kaitsekonstruktsioon.\nKuulidega kokkupõrkel neelab energiat, vabastades seda suvalistel hetkedel.\nUlatub üle mitme bloki. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Väike uks, mida saab avada ja sulgeda sellele vajutades. block.door-large.description = Suur uks, mida saab avada ja sulgeda sellele vajutades.\nUlatub üle mitme bloki. block.mender.description = Parandab perioodiliselt enda ümber olevaid konstruktsioone, hoides neid lahingulainete järel töökorras ja tervena. Ulatuse ja efektiivsuse parendamiseks on võimalik kasutada räni. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 0de42a8096..7a260f4fe8 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -816,6 +816,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -843,6 +844,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2066,6 +2068,10 @@ block.phase-wall.description = Fasez osatutako konposatu islatzaile batez estali block.phase-wall-large.description = Fasez osatutako konposatu islatzaile batez estalitako horma bat. Talkan jasotako bala gehienak desbideratzen ditu.\nHainbat lauza hartzen ditu. block.surge-wall.description = Defentsarako bloke nabarmen iraunkorra.\nKarga hartzen du balakadak jasotzean, hau edonora askatuz. block.surge-wall-large.description = Defentsarako bloke nabarmen iraunkorra.\nKarga hartzen du balakadak jasotzean, edonora askatuz.\nHainbat lauza hartzen ditu. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Ate txiki bat. Sakatuz ireki eta itxi daiteke. block.door-large.description = Ate handi bat. Sakatuz ireki eta itxi daiteke.\nHainbat lauza hartzen ditu. block.mender.description = Aldiro inguruko blokeak konpontzen ditu. Defentsak bere onean mantentzen ditu boladen artean.\nAukeran silizioa erabili dezake irismena eta eraginkortasuna hobetzeko. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index ef9e0ee83d..7fab8dbca5 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Optimaalinen sijainti aloittaa jälleen kerran. Matala vihollisuhka. Vähän resursseja.\nKerää niin paljon kuparia ja lyijyä, kuin mahdollista.\nJatka matkaa. sector.frozenForest.description = Itiöt ovat levittäytyneet jopa tänne, lähemmäs vuoria. Jäätävät lämpötilat eivät voi torjua niitä ikuisesti.\n\nAloita seikkailusi virtaan. Rakenna polttogeneraattoreita. Opi käyttämään korjaajia. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Alku sector.aegis.name = Aegis sector.lake.name = Lake @@ -2066,6 +2068,10 @@ block.phase-wall.description = Muuri, joka on päällystetty erityisellä kiihto block.phase-wall-large.description = Muuri, joka on päällystetty erityisellä kiihtokuitupohjaisella heijastavalla yhdisteellä. Torjuu useimmat ammukset näiden törmätessä.\nKattaa useita laattoja. block.surge-wall.description = Äärimmäisen kestävä puolustava palikka.\nVaraa jännitteen ammusten iskeytyessä, vapauttaen sen satunnaisesti. block.surge-wall-large.description = Äärimmäisen kestävä puolustava palikka.\nVaraa jännitteen ammusten iskeytyessä, vapauttaen sen satunnaisesti.\nKattaa useita laattoja. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Pieni ovi. Voidaan avata ja sulkea painamalla. block.door-large.description = Suuri ovi. Voidaan avata ja sulkea painamalla.\nKattaa useita laattoja. block.mender.description = Korjaa läheisiä palikoita ajoittain. Pitää puolustuksia korjattuna tasojen aikana ja välillä.\nKäyttää valinnaisesti piitä tehostaakseen kantamaa ja tehoa. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 7b2a2e2d41..bd92fd27e7 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy. sector.frozenForest.description = Kahit dito, mas malapit sa mga bundok, ang mga spore ay kumalat. Ang napakalamig na temperatura ay hindi maaaring maglaman ng mga ito magpakailanman.\n\nSimulan ang pakikipagsapalaran sa kapangyarihan. Bumuo ng mga generator ng pagkasunog. Matutong gumamit ng mga mender. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2063,6 +2065,10 @@ block.phase-wall.description = Isang pader na pinahiran ng espesyal na phase-bas block.phase-wall-large.description = Isang pader na pinahiran ng espesyal na phase-based na reflective compound. Pinapalihis ang karamihan sa mga bala kapag natamaan.\nGumagamit ng maraming tile. block.surge-wall.description = Isang napakatibay na defensive block.\nNagpapalaki ng singil sa bullet contact, na ilalabas ito nang random. block.surge-wall-large.description = Isang napakatibay na defensive block.\nBumubuo ng singil sa bullet contact, ilalabas ito nang random.\nGumagamit ng maraming tile. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Isang maliit na pinto. Maaaring buksan o isara sa pamamagitan ng pag-tap. block.door-large.description = Isang malaking pinto. Maaaring buksan at isara sa pamamagitan ng pag-tap.\nSpans maramihang mga tile. block.mender.description = Pana-panahong nag-aayos ng mga blocks sa paligid nito. Pinapanatiling maayos ang mga depensa sa pagitan ng mga alon.\nOpsyonal na gumagamit ng silicon upang palakasin ang saklaw at kahusayan. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index b7a5096fd5..12b45c1d44 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -837,6 +837,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et peu de ressources disponibles.\nRassemblez autant de cuivre et de plomb que possible pour continuer votre exploration. sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprenez à utiliser les bâtiments de soin. @@ -864,6 +865,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis @@ -2105,6 +2107,10 @@ block.phase-wall.description = Ce mur est moins puissant qu'un mur en thorium, m block.phase-wall-large.description = Ce mur est moins puissant qu'un mur en thorium, mais il peut dévier les balles, sauf si elles sont trop puissantes. block.surge-wall.description = Le plus puissant bloc défensif.\nA une faible chance d'envoyer des éclairs vers les ennemis. block.surge-wall-large.description = Le plus puissant bloc défensif.\nA une faible chance d'envoyer des éclairs vers les ennemis. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Une petite porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte, les ennemis peuvent passer à travers. block.door-large.description = Une grande porte pouvant être ouverte et fermée en appuyant dessus.\nSi elle est ouverte, les ennemis peuvent passer à travers. block.mender.description = Soigne périodiquement les bâtiments autour de lui, ce qui permet de remettre les défenses en bon état entre les vagues ennemies.\nPeut utiliser du silicium pour booster la portée et l'efficacité. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 9da0210368..3e413d672a 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -840,6 +840,7 @@ sector.atolls.name = Atollok sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! @@ -868,6 +869,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = A kezdet sector.aegis.name = Égisz @@ -2112,6 +2114,10 @@ block.phase-wall.description = Megvédi az épületeket az ellenséges lövedék block.phase-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, a legtöbb lövedék visszapattan róla. block.surge-wall.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. block.surge-wall-large.description = Megvédi az épületeket az ellenséges lövedékektől, periodikusan elektromos kisüléseket generál, ha hozzáérnek. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Nyitható és zárható fal. block.door-large.description = Nyitható és zárható fal. block.mender.description = Időnként javítja a közeli épületeket.\nSzilíciummal növelhető a hatósugara és hatékonysága. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 2e9b2bb4e5..44b8822daa 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -839,6 +839,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Sedikit sumber daya.\nKumpulkan timah dan tembaga sebanyak yang Anda bisa.\nMulai dari sini. sector.frozenForest.description = Di sini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nMulailah hasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -866,6 +867,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Serangan Awal sector.aegis.name = Aegis @@ -2109,6 +2111,10 @@ block.phase-wall.description = Melindungi bangunan dari tembakan musuh, dan dapa block.phase-wall-large.description = Melindungi bangunan dari tembakan musuh, dan dapat memantulkan beberapa jenis peluru senjata. block.surge-wall.description = Melindungi bangunan dari tembakan musuh, dan dapat mengeluarkan setruman listrik. block.surge-wall-large.description = Melindungi bangunan dari tembakan musuh, dan dapat mengeluarkan setruman listrik. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Dinding yang bisa dibuka dan ditutup. block.door-large.description = Dinding yang bisa dibuka dan ditutup. block.mender.description = Menyembuhkan blok di sekelilingnya secara berkala.\nGunakan silikon untuk meningkatkan jangkauan dan efisiensi (Opsional). diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index dd910ed571..63f39a7296 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -820,6 +820,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti. sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori. @@ -847,6 +848,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Nome @@ -2075,6 +2077,10 @@ block.phase-wall.description = Protegge le strutture dai proiettili nemici rifle block.phase-wall-large.description = Protegge le strutture dai proiettili nemici riflettendone la maggior parte all'impatto. block.surge-wall.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto. block.surge-wall-large.description = Protegge le strutture dai proiettili nemici rilasciando periodicamente archi elettrici al contatto. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Un muro che può essere aperto o chiuso. block.door-large.description = Un muro che può essere aperto o chiuso. block.mender.description = Ripara periodicamente i blocchi nelle sue vicinanze.\nAccetta silicio per aumentare la portata e l'efficienza. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 269a8fe345..f5a47b4f00 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -824,6 +824,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = 奪回を始めるには最適な場所です。敵の脅威は小さいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めましょう。\n始めましょう。 sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気候もでさえ胞子を永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。 @@ -851,6 +852,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = オンセット sector.aegis.name = イージス sector.lake.name = レイク @@ -2079,6 +2081,10 @@ block.phase-wall.description = トリウムの壁ほど強固ではないが、 block.phase-wall-large.description = トリウムの壁ほど強固ではないが、強力な弾でなければ弾き返すことができます。 block.surge-wall.description = 最も硬い防壁ブロックです。\n攻撃されるとたまに放電して敵を攻撃します。 block.surge-wall-large.description = 最も硬い大型防壁ブロックです。\n攻撃されるとたまに放電して敵を攻撃します。 +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = 小さなドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。 block.door-large.description = 大型のドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。 block.mender.description = 定期的に周囲のブロックを修復します。ウェーブの間も修復し続けます。\nオプションでシリコンを利用して、さらに効率的に修復が出来ます。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 348c2d7e69..3fb7680dc1 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -825,6 +825,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. @@ -852,6 +853,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = 시작 sector.aegis.name = 보호 sector.lake.name = 호수 @@ -2077,6 +2079,10 @@ block.phase-wall.description = 적 발사체로부터 아군 구조물을 보호 block.phase-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. 충돌한 탄환 대부분을 반사합니다. \n여러 타일을 차지합니다. block.surge-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. 접촉 시 무작위로 전격 아크를 방출합니다. block.surge-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. 접촉 시 무작위로 전격 아크를 방출합니다.\n여러 타일을 차지합니다. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = 탭하여 열거나 닫을 수 있는 벽입니다. block.door-large.description = 탭하여 열거나 닫을 수 있는 벽입니다.\n여러 타일을 차지합니다. block.mender.description = 주변 블록을 주기적으로 수리합니다.\n선택적으로 실리콘을 사용하여 범위와 효율성을 향상할 수 있습니다. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 294bcd6e18..55e0376866 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = Siena padengta specialiu faziniu pagrindu sukurtu block.phase-wall-large.description = Siena padengta specialiu faziniu pagrindu sukurtu junginiu. Atmuša daugumą šovinių.\nUžima kelias vietas. block.surge-wall.description = Ypač patvarus gynybinis blokas.\nKaupia krūvį kontakto metu su šoviniu atsitiktinai jį išleisdamas. block.surge-wall-large.description = Ypač patvarus gynybinis blokas.\nKaupia krūvį kontakto metu su šoviniu atsitiktinai jį išleisdamas.\nUžima kelias vietas. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Mažos durys. Gali būti atidarytos ir uždarytos paspaudus. block.door-large.description = Didelės durys. Gali būti atidarytos ir uždarytos paspaudus.\nUžima kelias vietas. block.mender.description = Periodiškai taiso blokus pasiekiamame plote. Palaiko gynybines konstrukcijas pataisytas tarp bangu.\nPapildomai naudoja silicį atstumo ir efektyvumo padidinimui. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 683215e075..0e881b91a5 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -825,6 +825,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = De optimale locatie om nog een keer te beginnen. Lage vijandelijke dreiging. Enkele grondstoffen.\nVerzamel zoveel mogelijk lood en koper.\nGa door. sector.frozenForest.description = Zelfs hier, dichter bij de bergen, hebben de schimmels zich verspreid. De koude temperaturen kunnen ze niet eeuwig tegenhouden.\n\nBegin de onderneming in energie. Bouw verbrandingsgeneratoren. Leer herstellers te gebruiken. @@ -852,6 +853,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis @@ -2077,6 +2079,10 @@ block.phase-wall.description = Not as strong as a thorium wall but will deflect block.phase-wall-large.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful.\nSpans multiple tiles. block.surge-wall.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker. block.surge-wall-large.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker.\nSpans multiple tiles. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = A small door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through. block.door-large.description = A large door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through.\nSpans multiple tiles. block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index c87d8ee5b8..e8c08fac1f 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = Not as strong as a thorium wall but will deflect block.phase-wall-large.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful.\nSpans multiple tiles. block.surge-wall.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker. block.surge-wall-large.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker.\nSpans multiple tiles. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = A small door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through. block.door-large.description = A large door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through.\nSpans multiple tiles. block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 48217721f2..5c816e859f 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -822,6 +822,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. @@ -849,6 +850,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Początek sector.aegis.name = Egida @@ -2085,6 +2087,10 @@ block.phase-wall.description = Mur pokryty specjalną mieszanką opartą o Włó block.phase-wall-large.description = Mur pokryty specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.\nObejmuje wiele kratek. block.surge-wall.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego. block.surge-wall-large.description = Ekstremalnie wytrzymały blok obronny.\nMa niewielką szansę na wywołanie błyskawicy w kierunku atakującego.\nObejmuje wiele kratek. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Małe drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić. block.door-large.description = Duże drzwi, które można otwierać i zamykać, klikając na nie.\nJeśli są otwarte, wrogowie mogą przez nie strzelać oraz nimi przechodzić.\nObejmują wiele kratek. block.mender.description = Co jakiś czas naprawia bloki w zasięgu. Utrzymuje struktury obronne w dobrym stanie.\nOpcjonalnie używa krzemu do zwiększenia zasięgu i szybkości naprawy. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index dcc1c55022..d3418b009e 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -830,6 +830,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue. sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores. @@ -857,6 +858,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = O Começo sector.aegis.name = Aegis @@ -2093,6 +2095,10 @@ block.phase-wall.description = Um muro revestido com tecido de fase. Reflete a m block.phase-wall-large.description = Um muro revestido com tecido de fase. Reflete a maioria das balas ao impacto. Ocupa múltiplos blocos. block.surge-wall.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente. block.surge-wall-large.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente. Ocupa multiplos blocos. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar. block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar. Ocupa múltiplos blocos. block.mender.description = Periodicamente repara blocos vizinhos.\nOpicionalmente usa silício para aumentar o alcance e a eficácia. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 77b8c32786..4de5007b13 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = Um muro revestido com um composto especial basead block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.\nSOcupa múltiplos blocos. block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente. block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-s aleatoriamente.\nOcupa multiplos blocos. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar. block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos. block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficiência. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 0ecac1c146..19d243d27f 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -824,6 +824,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. @@ -851,6 +852,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2079,6 +2081,10 @@ block.phase-wall.description = Protejează clădirile de proiectilele inamice, r block.phase-wall-large.description = Protejează clădirile de proiectilele inamice, reflectând majoritatea gloanțelor la impact. block.surge-wall.description = Protejează clădirile de proiectilele inamice, lansând periodic lasere electrice la contactul cu gloanțele. block.surge-wall-large.description = Protejează clădirile de proiectilele inamice, lansând periodic lasere electrice la contactul cu gloanțele. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Un perete care poate fi deschis sau închis. block.door-large.description = Un perete care poate fi deschis sau închis. block.mender.description = Repară periodic blocurile din vecinătate. \nPoate folosi silicon pt a îmbunătăți raza de acțiune și eficiența. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index fce1ee2366..5ba5a61b8a 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -825,6 +825,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. @@ -852,6 +853,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Начало sector.aegis.name = Защита @@ -2081,6 +2083,10 @@ block.phase-wall.description = Защищает постройки от враж block.phase-wall-large.description = Защищает постройки от вражеских снарядов, отражая большинство пуль при ударе. block.surge-wall.description = Защищает постройки от вражеских снарядов, периодически выпускает электрический разряд при ударе. block.surge-wall-large.description = Защищает постройки от вражеских снарядов, периодически выпускает электрический разряд при ударе. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Стена, которую можно открыть или закрыть нажатием. block.door-large.description = Стена, которую можно открыть или закрыть нажатием. block.mender.description = Периодически ремонтирует блоки в непосредственной близости.\nОпционально использует кремний для увеличения дальности и эффективности. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 19f6a49d76..7dc5330905 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -825,6 +825,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion 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. @@ -852,6 +853,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Žačetak sector.aegis.name = Okrilje @@ -2082,6 +2084,10 @@ block.phase-wall.description = Štiti građevine od neprijateljskih projektila, block.phase-wall-large.description = Štiti građevine od neprijateljskih projektila, odbijajući većinu metaka pri udaru. block.surge-wall.description = Štiti građevine od neprijateljskih projektila, povremeno uzrokavajući električne udare pri kontaktu. block.surge-wall-large.description = Štiti građevine od neprijateljskih projektila, povremeno uzrokavajući električne udare pri kontaktu. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Zid koji se može otvarati i zatvarati. block.door-large.description = Zid koji se može otvarati i zatvarati. block.mender.description = Povremeno popravlja blokove u okolini.\nMože koristiti silicijum da poveća domet i efikasnost. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 2be9367c22..66bfb7092b 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = A wall coated with special phase-based reflective block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = A small door. Can be opened or closed by tapping. block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 22a3fdfc02..1c755e2eb2 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -826,6 +826,7 @@ sector.atolls.name = อะทอลส์ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = จุดที่ดีที่สุดในการตั้งต้นใหม่อีกครั้งนึง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[accent]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้กับภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่ได้ อากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้เครื่องซ่อมแซม @@ -853,6 +854,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = การเริ่มต้น sector.aegis.name = อีจีส @@ -2092,6 +2094,10 @@ block.phase-wall.description = ป้องกันสิ่งก่อสร block.phase-wall-large.description = ป้องกันสิ่งก่อสร้างจากศัตรู ทนทานและแข็งแรง\nเคลือบด้วยวัสดุพิเศษที่สะท้อนกระสุนส่วนใหญ่ที่รับมา\nครอบคลุมหลายช่อง block.surge-wall.description = ป้องกันสิ่งก่อสร้างจากศัตรู แข็งแกร่งอย่างมาก\nจะปล่อยพลังงานสายฟ้าออกมาเป็นระยะๆ เมื่อถูกโจมตี block.surge-wall-large.description = ป้องกันสิ่งก่อสร้างจากศัตรู แข็งแกร่งอย่างมาก\nจะปล่อยพลังงานสายฟ้าออกมาเป็นระยะๆ เมื่อถูกโจมตี\nครอบคลุมหลายช่อง +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = กำแพงที่สามารถเปิดและปิดได้ ไว้ใช้เพื่อให้ยูนิตเดินผ่าน block.door-large.description = กำแพงที่สามารถเปิดและปิดได้ ไว้ใช้เพื่อให้ยูนิตเดินผ่าน\nครอบคลุมหลายช่อง block.mender.description = ซ่อมแซมสิ่งก่อสร้างในวงของมันอย่างช้าๆ\nสามารถใช้ซิลิกอนเพื่อเพิ่มระยะและประสิทธิภาพได้ diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index eb9120173d..30aa53a94c 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -814,6 +814,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -841,6 +842,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis sector.lake.name = Lake @@ -2064,6 +2066,10 @@ block.phase-wall.description = Not as strong as a thorium wall but will deflect block.phase-wall-large.description = Not as strong as a thorium wall but will deflect bullets unless they are too powerful.\nSpans multiple tiles. block.surge-wall.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker. block.surge-wall-large.description = The strongest defensive block.\nHas a small chance of triggering lightning towards the attacker.\nSpans multiple tiles. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = A small door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through. block.door-large.description = A large door that can be opened and closed by tapping on it.\nIf opened, enemies can shoot and move through.\nSpans multiple tiles. block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 98e9d2d237..c01fd9a5c9 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -824,6 +824,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle. sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren. @@ -851,6 +852,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Yeni Başlangıç sector.aegis.name = Siper sector.lake.name = Göletçik @@ -2079,6 +2081,10 @@ block.phase-wall.description = Özel faz örgüsü bazlı yansıtıcı materyal block.phase-wall-large.description = Özel faz bazlı yansıtıcı bileşik ile kaplanmış bir duvar. Çoğu mermi çarpma anında geri sektirir.\nBirçok blok alan kaplar. block.surge-wall.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır. block.surge-wall-large.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır.\nBirçok blok alan kaplar. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Küçük bir kapı. Dokunarak açılabilir veya kapatılabilir. block.door-large.description = Büyük bir kapı. Dokunarak açılabilir veya kapatılabilir.\nBirçok blok alan kaplar. block.mender.description = Çevresindeki blokları periyodik olarak tamir eder. Savunmaları dalgalar arasında tamir eder.\nİsteğe bağlı olarak menzili ve verimi arttırmak için silikon kullanılabilir. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 5784161431..288fd06e73 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -833,6 +833,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. sector.frozenForest.description = Навіть тут, ближче до гір, уже поширилися спори. Холодна температура не змогла стримати їх назавжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. @@ -860,6 +861,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = Перший наступ sector.aegis.name = Егіда @@ -2102,6 +2104,10 @@ block.phase-wall.description = Англійська назва: Phase Wall\nЗа block.phase-wall-large.description = Англійська назва: Phase Wall Large\nЗахищає споруди від ворожих снарядів, відбиває більшість куль у разі зіткненні. block.surge-wall.description = Англійська назва: Surge Wall\nЗахищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні. block.surge-wall-large.description = Англійська назва: Surge Wall Large\nЗахищає споруди від ворожих снарядів, періодично випускає електричні дуги в разі зіткненні. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Англійська назва: Door\nСтіна, яку можна відчинити й зачинити. block.door-large.description = Англійська назва: Door Large\nСтіна, яку можна відчинити й зачинити. block.mender.description = Англійська назва: Mender\nПеріодично ремонтує блоки у своєму радіусі дії.\nЗа бажанням можна використати кремній задля підвищення радіусу дії й ефективності. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 7bb3110ab8..1456f7b701 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -840,6 +840,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. @@ -868,6 +869,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = The Onset sector.aegis.name = Aegis @@ -2112,6 +2114,10 @@ block.phase-wall.description = Bảo vệ các công trình khỏi đạn của block.phase-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, phản hầu hết đạn khi va chạm. block.surge-wall.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. block.surge-wall-large.description = Bảo vệ các công trình khỏi đạn của kẻ địch, thường phóng ra các tia điện khi đạn va chạm. +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = Một bức tường có thể mở và đóng. block.door-large.description = Một bức tường có thể mở và đóng. block.mender.description = Sửa chữa định kỳ các khối trong vùng lân cận.\nTùy chọn sử dụng silicon để tăng phạm vi và hiệu quả. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 4a741c0290..c9a05fbc0e 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -834,6 +834,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = 踏上旅程的最佳位置。 这里的敌人威胁很小,但资源也少。\n\n尽你所能收集铅和铜,出发吧! sector.frozenForest.description = 一个靠近山脉的地方。 哪怕是在这里,也有了孢子扩散的痕迹。\n连极寒也无法长久地约束它们。\n\n开始运用电力,建造火力发电机并学会使用修理器。 @@ -861,6 +862,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = 始发地区 sector.aegis.name = 庇护前哨 @@ -2102,6 +2104,10 @@ block.phase-wall.description = 保护己方建筑,挡下敌方炮弹。 受大 block.phase-wall-large.description = 保护己方建筑,挡下敌方炮弹。 受大多数子弹攻击时有概率将其反弹。 block.surge-wall.description = 保护己方建筑,挡下敌方炮弹。 受攻击时间断释放电弧。 block.surge-wall-large.description = 保护己方建筑,挡下敌方炮弹。 受攻击时间断释放电弧。 +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = 可以开关的墙。 block.door-large.description = 可以开关的墙。 block.mender.description = 定期修复附近的建筑。\n可使用硅提高范围和效率。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index ab1a2b9f15..f6cf2e528e 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -830,6 +830,7 @@ sector.atolls.name = Atolls sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels +sector.mycelialBastion.name = Mycelial Bastion sector.groundZero.description = 再次開始的最佳位置。敵人威脅程度低。資源少。\n盡可能地採集鉛與銅。\n繼續前進。 sector.frozenForest.description = 即使是在如此靠近山脈的地方,孢子也已經擴散了。低溫無法永遠遏止它們。\n\n開始探索電力。建造火力發電機。學習如何修理方塊。 @@ -857,6 +858,7 @@ sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon +sector.mycelialBastion.description = WIP, map submission by Skeledragon sector.onset.name = 著陸點 sector.aegis.name = 神盾 @@ -2091,6 +2093,10 @@ block.phase-wall.description = 沒有釷牆那麼堅固但特殊的相位化合 block.phase-wall-large.description = 沒有釷牆那麼堅固但特殊的相位化合物塗層會使大多的子彈偏離。\n佔據多個方塊。 block.surge-wall.description = 最強的防禦方塊。\n有低機率對攻擊者觸發閃電。 block.surge-wall-large.description = 最強的防禦方塊。\n有低機率對攻擊者觸發閃電。\n佔據多個方塊。 +block.scrap-wall.description = Protects structures from enemy projectiles. +block.scrap-wall-large.description = Protects structures from enemy projectiles. +block.scrap-wall-huge.description = Protects structures from enemy projectiles. +block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. block.door.description = 可以通過點擊打開和關閉的一扇小門。\n如果打開,敵人可以穿過它射擊和移動。 block.door-large.description = 可以通過點擊打開和關閉的一扇大門。\n如果打開,敵人可以穿過它射擊和移動。\n佔據多個方塊。 block.mender.description = 定期修復附近的建築物。在每一波之間保持防禦力的修復。\n可選擇使用矽來提高範圍和效率。 From 488a09df963281a1e6f040100b133037b9d08a25 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Oct 2024 00:08:37 -0400 Subject: [PATCH 03/49] Retain build plans on death --- core/src/mindustry/input/InputHandler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index bae5d3806d..d3a2fc8140 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -12,6 +12,7 @@ import arc.scene.event.*; import arc.scene.ui.layout.*; import arc.struct.*; +import arc.struct.Queue; import arc.util.*; import mindustry.*; import mindustry.ai.*; @@ -97,6 +98,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public BuildPlan bplan = new BuildPlan(); public Seq linePlans = new Seq<>(); public Seq selectPlans = new Seq<>(BuildPlan.class); + public @Nullable Queue lastPlans; //for RTS controls public Seq selectedUnits = new Seq<>(); @@ -809,6 +811,15 @@ public void update(){ commandRect = false; } + if(player.isBuilder()){ + if(lastPlans != null && player.unit().plans != lastPlans && player.unit().plans.size == 0){ + for(var plan : lastPlans){ + player.unit().plans.addLast(plan); + } + } + lastPlans = player.unit().plans; + } + playerPlanTree.clear(); if(!player.dead()){ player.unit().plans.each(playerPlanTree::insert); @@ -831,7 +842,6 @@ public void update(){ //you don't want selected blocks while locked, looks weird if(locked()){ block = null; - } wasShooting = player.shooting; From 0d5869aad980c19515eafc4f04a571c3d6377090 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Oct 2024 00:25:58 -0400 Subject: [PATCH 04/49] Retain build plans when switching units --- core/src/mindustry/input/InputHandler.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index d3a2fc8140..b5bacbe51e 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -98,7 +98,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public BuildPlan bplan = new BuildPlan(); public Seq linePlans = new Seq<>(); public Seq selectPlans = new Seq<>(BuildPlan.class); - public @Nullable Queue lastPlans; + public Queue lastPlans = new Queue<>(); + public @Nullable Unit lastUnit; //for RTS controls public Seq selectedUnits = new Seq<>(); @@ -812,14 +813,19 @@ public void update(){ } if(player.isBuilder()){ - if(lastPlans != null && player.unit().plans != lastPlans && player.unit().plans.size == 0){ + if(player.unit() != lastUnit && player.unit().plans.size <= 1){ for(var plan : lastPlans){ player.unit().plans.addLast(plan); } } - lastPlans = player.unit().plans; + lastPlans.clear(); + for(var plan : player.unit().plans){ + lastPlans.addLast(plan); + } } + lastUnit = player.unit(); + playerPlanTree.clear(); if(!player.dead()){ player.unit().plans.each(playerPlanTree::insert); From 2eed3cc2ebded34e10205a472d13579d47824a99 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Oct 2024 10:06:30 -0400 Subject: [PATCH 05/49] Minor fixes --- core/src/mindustry/entities/units/UnitController.java | 3 ++- core/src/mindustry/input/InputHandler.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/units/UnitController.java b/core/src/mindustry/entities/units/UnitController.java index b77a857a2f..240728b2cc 100644 --- a/core/src/mindustry/entities/units/UnitController.java +++ b/core/src/mindustry/entities/units/UnitController.java @@ -1,10 +1,11 @@ package mindustry.entities.units; +import arc.util.*; import mindustry.gen.*; public interface UnitController{ void unit(Unit unit); - Unit unit(); + @Nullable Unit unit(); default void hit(Bullet bullet){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index b5bacbe51e..1000494da4 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -151,6 +151,8 @@ public InputHandler(){ logicCutscene = false; itemDepositCooldown = 0f; Arrays.fill(controlGroups, null); + lastUnit = null; + lastPlans.clear(); }); } @@ -814,6 +816,7 @@ public void update(){ if(player.isBuilder()){ if(player.unit() != lastUnit && player.unit().plans.size <= 1){ + player.unit().plans.ensureCapacity(lastPlans.size); for(var plan : lastPlans){ player.unit().plans.addLast(plan); } From 58596dfd29c1be71ab76ac44ae4bafd9f1ce5f01 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Oct 2024 10:18:21 -0400 Subject: [PATCH 06/49] Infested canyon update --- core/assets/maps/infestedCanyons.msav | Bin 20051 -> 20621 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/assets/maps/infestedCanyons.msav b/core/assets/maps/infestedCanyons.msav index dfa31fb1440b8c699eb68e1698382b45579147e9..02f0c043de7df1545eab1f6641e26d7abc8a0d39 100644 GIT binary patch literal 20621 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 literal 20051 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 Date: Wed, 9 Oct 2024 23:08:04 -0400 Subject: [PATCH 07/49] Bundle entry for frontier submission --- .../main/java/mindustry/annotations/entity/EntityProcess.java | 1 + core/assets/bundles/bundle.properties | 2 ++ 2 files changed, 3 insertions(+) diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 3abd583158..a6b1d95d67 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -445,6 +445,7 @@ public void process(RoundEnvironment env) throws Exception{ MethodSpec.Builder mbuilder = MethodSpec.methodBuilder(first.name()).addModifiers(first.is(Modifier.PRIVATE) ? Modifier.PRIVATE : Modifier.PUBLIC); //if(isFinal || entry.value.contains(s -> s.has(Final.class))) mbuilder.addModifiers(Modifier.FINAL); if(entry.value.contains(s -> s.has(CallSuper.class))) mbuilder.addAnnotation(CallSuper.class); //add callSuper here if necessary + if(first.has(Nullable.class)) mbuilder.addAnnotation(Nullable.class); if(first.is(Modifier.STATIC)) mbuilder.addModifiers(Modifier.STATIC); mbuilder.addTypeVariables(first.typeVariables().map(TypeVariableName::get)); mbuilder.returns(first.retn()); diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 7d39e7ddb8..2bc00ea32f 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -841,6 +841,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -864,6 +865,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 From 07cf43489422b11552212e11c2062fb9e37ab332 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 10 Oct 2024 03:09:10 +0000 Subject: [PATCH 08/49] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 765ac14866..adfdfeb42f 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -814,6 +814,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Аптымальнае месца каб пачаць. Нізкая варожая пагроза. Мала рэсурсаў.\nВазімце як мага болей свінца і медзі.\nІ рухайцеся далей. sector.frozenForest.description = Нават тут, бліжэй да гор, распаўсюдзіліся споры. Ледзяныя тэмпературы не могуць утрымліваць іх заўсёды.\n\nПачніце выкарыстоўваць энергію. Пабудуйце генератары на цвёрдым паліве. Даведайцеся як выкарыстоуваць рэгенератары. @@ -836,6 +837,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index f45231faa7..beb7119a8f 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -823,6 +823,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Перфектното място за започване отначало. Ниска заплаха. Ниски ресурси.\nСъбери колкото можеш мед и олово.\nПродължи напред. sector.frozenForest.description = Дори тук, близо до планините, спорите са се разпространили. Мразовитите температури не могат да ги задържат вечно.\n\nОвладейте електричеството. Постройте горивни генератори. Научете се да ползвате възстрановители. @@ -845,6 +846,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index cb4684e9ad..8a89aaf0a5 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -827,6 +827,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = El lloc adequat per a començar de nou. Amenaça enemiga baixa. Pocs recursos.\nRecolliu tot el coure i plom que pugueu.\nDesprés, continueu en un altre sector. sector.frozenForest.description = Les espores han arribat fins aquí, prop de les muntanyes. Les temperatures baixes no les podran contenir per sempre.\n\nComenceu el camí del poder. Construïu generadors a combustió. Apreneu a fer servir els reparadors. @@ -849,6 +850,7 @@ sector.navalFortress.description = L’enemic ha establert una base en una illa sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index c6ed8ec3e0..176459f3c1 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -825,6 +825,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. @@ -847,6 +848,7 @@ sector.navalFortress.description = Nepřítel si vybudoval základnu na odlehlé sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 49c53b8820..6e4250ce88 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 59844dea3a..597f4c5c9d 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -835,6 +835,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Der optimale Ort, um anzufangen. Schwache Gegner und weniger Ressourcen.\nSammele so viel Kupfer und Blei wie möglich.\nGeh weiter. sector.frozenForest.description = Auch hier, näher an den Bergen, sind die Sporen. Sogar die niedrigen Temperaturen können sie nicht zurückhalten.\n\nLerne, Strom zu verwenden. Baue Verbrennungsgeneratoren und Reparateure. @@ -857,6 +858,7 @@ sector.navalFortress.description = Der Gegner hat auf einer abgelegenen, von Nat sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 12a10f7565..9542a405ea 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -831,6 +831,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúne la mayor cantidad de plomo y cobre posible y sigue adelante. sector.frozenForest.description = Incluso aquí, cerca de las montañas, se han extendido las esporas. Las gélidas temperaturas no las contendrán para siempre.\nDescubre la energía eléctrica. Construye generadores de combustión. Aprende a usar reparadores. @@ -853,6 +854,7 @@ sector.navalFortress.description = El enemigo ha establecido una base en una rem sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 93de3977ac..c52763655d 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 7a260f4fe8..dfd0203d7a 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -817,6 +817,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -839,6 +840,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 7fab8dbca5..e17fa2fa06 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Optimaalinen sijainti aloittaa jälleen kerran. Matala vihollisuhka. Vähän resursseja.\nKerää niin paljon kuparia ja lyijyä, kuin mahdollista.\nJatka matkaa. sector.frozenForest.description = Itiöt ovat levittäytyneet jopa tänne, lähemmäs vuoria. Jäätävät lämpötilat eivät voi torjua niitä ikuisesti.\n\nAloita seikkailusi virtaan. Rakenna polttogeneraattoreita. Opi käyttämään korjaajia. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index bd92fd27e7..140a2c34f1 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy. sector.frozenForest.description = Kahit dito, mas malapit sa mga bundok, ang mga spore ay kumalat. Ang napakalamig na temperatura ay hindi maaaring maglaman ng mga ito magpakailanman.\n\nSimulan ang pakikipagsapalaran sa kapangyarihan. Bumuo ng mga generator ng pagkasunog. Matutong gumamit ng mga mender. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 12b45c1d44..6087eae397 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -838,6 +838,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Un endroit optimal pour commencer. Avec une menace ennemie faible et peu de ressources disponibles.\nRassemblez autant de cuivre et de plomb que possible pour continuer votre exploration. sector.frozenForest.description = Même ici, près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir indéfiniment.\n\nCommencez votre production d'énergie en construisant des générateurs à combustion et apprenez à utiliser les bâtiments de soin. @@ -860,6 +861,7 @@ sector.navalFortress.description = L’ennemi a établi une base sur une île is sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 3e413d672a..6a07c6a756 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -841,6 +841,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Az ideális helyszín, hogy ismét belekezdjünk. Alacsony ellenséges fenyegetés. Kevés nyersanyag.\nGyűjts annyi rezet és ólmot, amennyit csak tudsz.\nHaladj tovább. sector.frozenForest.description = Még itt, a hegyekhez közel is elterjedtek a spórák. A fagypont alatti hőmérséklet nem tudja örökké fogva tartani őket.\n\nFedezd fel az elektromosság erejét! Építs égetőerőműveket! Tanuld meg a foltozók használatát! @@ -864,6 +865,7 @@ sector.navalFortress.description = Az ellenség bázist létesített egy távoli sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 44b8822daa..2d39360da4 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -840,6 +840,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Sedikit sumber daya.\nKumpulkan timah dan tembaga sebanyak yang Anda bisa.\nMulai dari sini. sector.frozenForest.description = Di sini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nMulailah hasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -862,6 +863,7 @@ sector.navalFortress.description = Musuh telah mendirikan markas di sebuah pulau sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 63f39a7296..5834a87295 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -821,6 +821,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = La posizione ottimale per ricominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nParti. sector.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature gelide non possono contenerle per sempre.\n\nInizia l'avventura nell'energia. Costruisci generatori a combustione. Impara a usare i riparatori. @@ -843,6 +844,7 @@ sector.navalFortress.description = Il nemico ha stabilito una base su un'isola r sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index f5a47b4f00..8d396e65bd 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -825,6 +825,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = 奪回を始めるには最適な場所です。敵の脅威は小さいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めましょう。\n始めましょう。 sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気候もでさえ胞子を永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。 @@ -847,6 +848,7 @@ sector.navalFortress.description = 敵は、自然要塞化した離島に基地 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 3fb7680dc1..46dde10e11 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -826,6 +826,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. @@ -848,6 +849,7 @@ sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 55e0376866..5b0cb61584 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 0e881b91a5..3014edb521 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -826,6 +826,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = De optimale locatie om nog een keer te beginnen. Lage vijandelijke dreiging. Enkele grondstoffen.\nVerzamel zoveel mogelijk lood en koper.\nGa door. sector.frozenForest.description = Zelfs hier, dichter bij de bergen, hebben de schimmels zich verspreid. De koude temperaturen kunnen ze niet eeuwig tegenhouden.\n\nBegin de onderneming in energie. Bouw verbrandingsgeneratoren. Leer herstellers te gebruiken. @@ -848,6 +849,7 @@ sector.navalFortress.description = De vijand heeft een basis gevestigd op een af sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index e8c08fac1f..5e9b080707 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 5c816e859f..a03f04f9be 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -823,6 +823,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz możliwie jak najwięcej miedzi i ołowiu.\nPrzejdź do następnej strefy jak najszybciej. sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki się rozprzestrzeniały. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nZacznij od produkcji prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. @@ -845,6 +846,7 @@ sector.navalFortress.description = Wróg założył bazę na odległej, naturaln sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index d3418b009e..107b25d10b 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -831,6 +831,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue. sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores. @@ -853,6 +854,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 4de5007b13..54bc7311ba 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 19d243d27f..cac3cda280 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -825,6 +825,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. @@ -847,6 +848,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 5ba5a61b8a..6b20ef664b 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -826,6 +826,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Оптимальная локация для повторных игр. Низкая вражеская угроза. Немного ресурсов.\nСоберите как можно больше свинца и меди.\nДвигайтесь дальше. sector.frozenForest.description = Даже здесь, ближе к горам, споры распространились. Холодные температуры не могут сдерживать их вечно.\n\nНачните вкладываться в энергию. Постройте генераторы внутреннего сгорания. Научитесь пользоваться регенератором. @@ -848,6 +849,7 @@ sector.navalFortress.description = Враг возвел базу на удал sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 7dc5330905..d01856099c 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -826,6 +826,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier 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. @@ -848,6 +849,7 @@ sector.navalFortress.description = Neprijatelj je sagradio bazu na dalekom, prir sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 66bfb7092b..ec924d68e5 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 1c755e2eb2..cd058c1012 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -827,6 +827,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = จุดที่ดีที่สุดในการตั้งต้นใหม่อีกครั้งนึง ศัตรูน้อย ทรัพยากรน้อย\nเก็บ[accent]ตะกั่ว[]และ[accent]ทองแดง[]ให้ได้มากที่สุด\nแล้วลุยต่อ sector.frozenForest.description = แม้แต่ที่นี่ ณ ที่ที่อยู่ใกล้กับภูเขา [accent]สปอร์[]ก็ยังแพร่มาถึงที่นี่ได้ อากาศอันแสนเย็นเยือกไม่สามารถหยุดยั้งพวกมันได้ตลอดไป\n\nเริ่มต้นการใช้ไฟฟ้า สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้เครื่องซ่อมแซม @@ -849,6 +850,7 @@ sector.navalFortress.description = ศัตรูได้ตั้งฐาน sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 30aa53a94c..34a1b4b192 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -815,6 +815,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. @@ -837,6 +838,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index c01fd9a5c9..d4e2043443 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -825,6 +825,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle. sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren. @@ -847,6 +848,7 @@ sector.navalFortress.description = Düşman bu uzak adaya doğal olarak korunan sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 288fd06e73..53f934e2a8 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -834,6 +834,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗберіть якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. sector.frozenForest.description = Навіть тут, ближче до гір, уже поширилися спори. Холодна температура не змогла стримати їх назавжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. @@ -856,6 +857,7 @@ sector.navalFortress.description = Ворог створив базу на ві sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 1456f7b701..a57df1d551 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -841,6 +841,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = Vị trí tối ưu để bắt đầu một lần nữa. Mối đe dọa của kẻ địch thấp. Ít tài nguyên.\nThu thập càng nhiều đồng và chì càng tốt.\nTiến lên. sector.frozenForest.description = Dù ở đây, gần núi cao, các bào tử vẫn bắt đầu phát tán. Nhiệt độ lạnh giá không thể giữ chúng lại mãi.\n\nBắt đầu tạo năng lượng. Hãy xây dựng máy phát điện đốt. Học cách sử dụng máy sửa chữa. @@ -864,6 +865,7 @@ sector.navalFortress.description = Kẻ địch đã thiết lập một căn c sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index c9a05fbc0e..8cd4292737 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -835,6 +835,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = 踏上旅程的最佳位置。 这里的敌人威胁很小,但资源也少。\n\n尽你所能收集铅和铜,出发吧! sector.frozenForest.description = 一个靠近山脉的地方。 哪怕是在这里,也有了孢子扩散的痕迹。\n连极寒也无法长久地约束它们。\n\n开始运用电力,建造火力发电机并学会使用修理器。 @@ -857,6 +858,7 @@ sector.navalFortress.description = 敌人在一个有天然防御屏障的偏远 sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index f6cf2e528e..bf5bc22770 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -831,6 +831,7 @@ sector.testingGrounds.name = Testing Grounds sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion +sector.frontier.name = Frontier sector.groundZero.description = 再次開始的最佳位置。敵人威脅程度低。資源少。\n盡可能地採集鉛與銅。\n繼續前進。 sector.frozenForest.description = 即使是在如此靠近山脈的地方,孢子也已經擴散了。低溫無法永遠遏止它們。\n\n開始探索電力。建造火力發電機。學習如何修理方塊。 @@ -853,6 +854,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R +sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon sector.polarAerodrome.description = WIP, map submission by hhh i 17 sector.testingGrounds.description = WIP, map submission by dnx2019 From e384e4b4e9a73d6763cc528f011195aa8ec8945c Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 11 Oct 2024 11:12:30 -0400 Subject: [PATCH 09/49] Fixed #10259 --- core/assets/maps/mycelialBastion.msav | Bin 60500 -> 60772 bytes core/src/mindustry/type/Sector.java | 2 +- .../mindustry/world/modules/ItemModule.java | 30 ++---------------- 3 files changed, 3 insertions(+), 29 deletions(-) diff --git a/core/assets/maps/mycelialBastion.msav b/core/assets/maps/mycelialBastion.msav index 694ae5749255cd049b88b4b90e6e4b26afac3200..13b6d80e6ffc700762de21bbb853447eb2979a45 100644 GIT binary patch delta 60764 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 0; } - @Nullable - public Item first(){ + public @Nullable Item first(){ for(int i = 0; i < items.length; i++){ if(items[i] > 0){ return content.item(i); @@ -189,8 +188,7 @@ public Item first(){ return null; } - @Nullable - public Item take(){ + public @Nullable Item take(){ for(int i = 0; i < items.length; i++){ int index = (i + takeRotation); if(index >= items.length) index -= items.length; @@ -204,30 +202,6 @@ public Item take(){ return null; } - /** Begins a speculative take operation. This returns the item that would be returned by #take(), but does not change state. */ - @Nullable - public Item takeIndex(int takeRotation){ - for(int i = 0; i < items.length; i++){ - int index = (i + takeRotation); - if(index >= items.length) index -= items.length; - if(items[index] > 0){ - return content.item(index); - } - } - return null; - } - - public int nextIndex(int takeRotation){ - for(int i = 1; i < items.length; i++){ - int index = (i + takeRotation); - if(index >= items.length) index -= items.length; - if(items[index] > 0){ - return (takeRotation + i) % items.length; - } - } - return takeRotation; - } - public int get(int id){ return items[id]; } From d9d5c8733b3daf4d46291f9b33160bab3126f2ff Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 11 Oct 2024 21:46:56 -0400 Subject: [PATCH 10/49] Command setting UI for unit factories --- core/src/mindustry/content/UnitTypes.java | 3 +- core/src/mindustry/type/UnitType.java | 6 ++ .../mindustry/world/blocks/ItemSelection.java | 6 ++ .../world/blocks/units/Reconstructor.java | 2 +- .../world/blocks/units/UnitFactory.java | 102 ++++++++++++++++-- 5 files changed, 106 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 8e83af02f4..1f752a375a 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -322,7 +322,7 @@ public static void load(){ speed = 0.55f; hitSize = 8f; health = 120f; - buildSpeed = 0.35f; + buildSpeed = 0.3f; armor = 1f; abilities.add(new RepairFieldAbility(10f, 60f * 4, 60f)); @@ -1256,6 +1256,7 @@ public static void load(){ controller = u -> new MinerAI(); defaultCommand = UnitCommand.mineCommand; + allowChangeCommands = false; flying = true; drag = 0.06f; diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 3819a23e3c..9e498b65be 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -300,6 +300,8 @@ public class UnitType extends UnlockableContent implements Senseable{ /** Flags to target based on priority. Null indicates that the closest target should be found. The closest enemy core is used as a fallback. */ public BlockFlag[] targetFlags = {null}; + /** A value of false is used to hide command changing UI in unit factories. */ + public boolean allowChangeCommands = true; /** Commands available to this unit through RTS controls. An empty array means commands will be assigned based on unit capabilities in init(). */ public UnitCommand[] commands = {}; /** Command to assign to this unit upon creation. Null indicates the first command in the array. */ @@ -860,6 +862,10 @@ public void init(){ commands = cmds.toArray(); } + if(defaultCommand == null && commands.length > 0){ + defaultCommand = commands[0]; + } + if(stances.length == 0){ if(canAttack){ Seq seq = Seq.with(UnitStance.stop, UnitStance.shoot, UnitStance.holdFire, UnitStance.pursueTarget, UnitStance.patrol); diff --git a/core/src/mindustry/world/blocks/ItemSelection.java b/core/src/mindustry/world/blocks/ItemSelection.java index 24e49706de..6bbe2ba127 100644 --- a/core/src/mindustry/world/blocks/ItemSelection.java +++ b/core/src/mindustry/world/blocks/ItemSelection.java @@ -1,5 +1,6 @@ package mindustry.world.blocks; +import arc.*; import arc.func.*; import arc.math.*; import arc.scene.style.*; @@ -93,6 +94,11 @@ public static void buildTable(@Nullable Block bloc ScrollPane pane = new ScrollPane(cont, Styles.smallPane); pane.setScrollingDisabled(true, false); + pane.exited(() -> { + if(pane.hasScroll()){ + Core.scene.setScrollFocus(null); + } + }); if(block != null){ pane.setScrollYForce(block.selectScroll); diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index f0448063a4..023270260b 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -168,7 +168,7 @@ public boolean acceptUnitPayload(Unit unit){ public boolean canSetCommand(){ var output = unit(); - return output != null && output.commands.length > 1; + return output != null && output.commands.length > 1 && output.allowChangeCommands; } @Override diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 6747310d2d..c6369a0bfe 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -6,11 +6,13 @@ import arc.math.*; import arc.math.geom.*; import arc.scene.style.*; +import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import arc.util.io.*; import mindustry.*; +import mindustry.ai.*; import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; @@ -46,23 +48,32 @@ public UnitFactory(String name){ commandable = true; ambientSound = Sounds.respawning; - config(Integer.class, (UnitFactoryBuild tile, Integer i) -> { + config(Integer.class, (UnitFactoryBuild build, Integer i) -> { if(!configurable) return; - if(tile.currentPlan == i) return; - tile.currentPlan = i < 0 || i >= plans.size ? -1 : i; - tile.progress = 0; + if(build.currentPlan == i) return; + build.currentPlan = i < 0 || i >= plans.size ? -1 : i; + build.progress = 0; + if(build.command != null && !Structs.contains(build.unit().commands, build.command)){ + build.command = null; + } }); - config(UnitType.class, (UnitFactoryBuild tile, UnitType val) -> { + config(UnitType.class, (UnitFactoryBuild build, UnitType val) -> { if(!configurable) return; int next = plans.indexOf(p -> p.unit == val); - if(tile.currentPlan == next) return; - tile.currentPlan = next; - tile.progress = 0; + if(build.currentPlan == next) return; + build.currentPlan = next; + build.progress = 0; + if(build.command != null && !Structs.contains(val.commands, build.command)){ + build.command = null; + } }); + config(UnitCommand.class, (UnitFactoryBuild build, UnitCommand command) -> build.command = command); + configClear((UnitFactoryBuild build) -> build.command = null); + consume(new ConsumeItemDynamic((UnitFactoryBuild e) -> e.currentPlan != -1 ? plans.get(Math.min(e.currentPlan, plans.size - 1)).requirements : ItemStack.empty)); } @@ -177,12 +188,18 @@ public UnitPlan(UnitType unit, float time, ItemStack[] requirements){ public class UnitFactoryBuild extends UnitBuild{ public @Nullable Vec2 commandPos; + public @Nullable UnitCommand command; public int currentPlan = -1; public float fraction(){ return currentPlan == -1 ? 0 : progress / plans.get(currentPlan).time; } + public boolean canSetCommand(){ + var output = unit(); + return output != null && output.commands.length > 1 && output.allowChangeCommands; + } + @Override public void created(){ //auto-set to the first plan, it's better than nothing. @@ -225,6 +242,59 @@ public void buildConfiguration(Table table){ if(units.any()){ ItemSelection.buildTable(UnitFactory.this, table, units, () -> currentPlan == -1 ? null : plans.get(currentPlan).unit, unit -> configure(plans.indexOf(u -> u.unit == unit)), selectionRows, selectionColumns); + + table.row(); + + Table commands = new Table(); + commands.top().left(); + commands.background(Styles.black6); + + Runnable rebuildCommands = () -> { + commands.clear(); + var unit = unit(); + if(unit != null && canSetCommand()){ + var group = new ButtonGroup(); + group.setMinCheckCount(0); + int i = 0, columns = Mathf.clamp(units.size, 2, selectionColumns); + var list = unit.commands; + + commands.image(Tex.whiteui, Pal.gray).height(4f).growX().colspan(columns).row(); + + for(var item : list){ + ImageButton button = commands.button(item.getIcon(), Styles.clearNoneTogglei, 40f, () -> { + configure(item); + }).tooltip(item.localized()).group(group).get(); + + button.update(() -> button.setChecked(command == item || (command == null && unit.defaultCommand == item))); + + if(++i % columns == 0){ + commands.row(); + } + } + + if(list.length < columns){ + for(int j = 0; j < (columns - list.length); j++){ + commands.add().size(40f); + } + } + } + }; + + rebuildCommands.run(); + + UnitType[] lastUnit = {unit()}; + + commands.update(() -> { + if(lastUnit[0] != unit()){ + lastUnit[0] = unit(); + rebuildCommands.run(); + } + }); + + table.row(); + + table.add(commands).fillX().left(); + }else{ table.table(Styles.black3, t -> t.add("@none").color(Color.lightGray)); } @@ -311,9 +381,14 @@ public void updateTile(){ progress %= 1f; Unit unit = plan.unit.create(team); - if(commandPos != null && unit.isCommandable()){ - unit.command().commandPosition(commandPos); + if(unit.isCommandable()){ + if(commandPos != null){ + unit.command().commandPosition(commandPos); + } + + unit.command().command(command == null && payload.unit.type.defaultCommand != null ? payload.unit.type.defaultCommand : command); } + payload = new UnitPayload(unit); payVector.setZero(); consume(); @@ -349,7 +424,7 @@ public boolean acceptItem(Building source, Item item){ @Override public byte version(){ - return 2; + return 3; } @Override @@ -358,6 +433,7 @@ public void write(Writes write){ write.f(progress); write.s(currentPlan); TypeIO.writeVecNullable(write, commandPos); + TypeIO.writeCommand(write, command); } @Override @@ -368,6 +444,10 @@ public void read(Reads read, byte revision){ if(revision >= 2){ commandPos = TypeIO.readVecNullable(read); } + + if(revision >= 3){ + command = TypeIO.readCommand(read); + } } } } From d6073201bb981b0d5e2ff4e160033952e6b832fc Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 11 Oct 2024 21:54:41 -0400 Subject: [PATCH 11/49] Unit factory command UI cleanup --- core/src/mindustry/world/blocks/units/UnitFactory.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index c6369a0bfe..4120ac278d 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -197,7 +197,9 @@ public float fraction(){ public boolean canSetCommand(){ var output = unit(); - return output != null && output.commands.length > 1 && output.allowChangeCommands; + return output != null && output.commands.length > 1 && output.allowChangeCommands && + //to avoid cluttering UI, don't show command selection for "standard" units that only have two commands. + !(output.commands.length == 2 && output.commands[1] == UnitCommand.enterPayloadCommand); } @Override @@ -247,12 +249,13 @@ public void buildConfiguration(Table table){ Table commands = new Table(); commands.top().left(); - commands.background(Styles.black6); Runnable rebuildCommands = () -> { commands.clear(); + commands.background(null); var unit = unit(); if(unit != null && canSetCommand()){ + commands.background(Styles.black6); var group = new ButtonGroup(); group.setMinCheckCount(0); int i = 0, columns = Mathf.clamp(units.size, 2, selectionColumns); From 0e83b60aac28424752da3c5ca239862eb32a867c Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 11 Oct 2024 22:00:07 -0400 Subject: [PATCH 12/49] Unit commands/stances changed to Seq --- core/src/mindustry/ai/types/CommandAI.java | 6 ++-- core/src/mindustry/type/UnitType.java | 36 +++++++++---------- .../ui/fragments/PlacementFragment.java | 4 +-- .../world/blocks/units/Reconstructor.java | 2 +- .../world/blocks/units/UnitFactory.java | 12 +++---- 5 files changed, 28 insertions(+), 32 deletions(-) diff --git a/core/src/mindustry/ai/types/CommandAI.java b/core/src/mindustry/ai/types/CommandAI.java index e6de644bf1..9446e72aa3 100644 --- a/core/src/mindustry/ai/types/CommandAI.java +++ b/core/src/mindustry/ai/types/CommandAI.java @@ -55,7 +55,7 @@ public UnitCommand currentCommand(){ /** Attempts to assign a command to this unit. If not supported by the unit type, does nothing. */ public void command(UnitCommand command){ - if(Structs.contains(unit.type.commands, command)){ + if(unit.type.commands.contains(command)){ //clear old state. unit.mineTile = null; unit.clearBuilding(); @@ -88,8 +88,8 @@ public void updateUnit(){ } //assign defaults - if(command == null && unit.type.commands.length > 0){ - command = unit.type.defaultCommand == null ? unit.type.commands[0] : unit.type.defaultCommand; + if(command == null && unit.type.commands.size > 0){ + command = unit.type.defaultCommand == null ? unit.type.commands.first() : unit.type.defaultCommand; } //update command controller based on index. diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 9e498b65be..e8c4cb6138 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -303,11 +303,11 @@ public class UnitType extends UnlockableContent implements Senseable{ /** A value of false is used to hide command changing UI in unit factories. */ public boolean allowChangeCommands = true; /** Commands available to this unit through RTS controls. An empty array means commands will be assigned based on unit capabilities in init(). */ - public UnitCommand[] commands = {}; + public Seq commands = new Seq<>(); /** Command to assign to this unit upon creation. Null indicates the first command in the array. */ public @Nullable UnitCommand defaultCommand; /** Stances this unit can have. An empty array means stances will be assigned based on unit capabilities in init(). */ - public UnitStance[] stances = {}; + public Seq stances = new Seq<>(); /** color for outline generated around sprites */ public Color outlineColor = Pal.darkerMetal; @@ -828,53 +828,49 @@ public void init(){ canAttack = weapons.contains(w -> !w.noAttack); //assign default commands. - if(commands.length == 0){ - Seq cmds = new Seq<>(UnitCommand.class); + if(commands.size == 0){ - cmds.add(UnitCommand.moveCommand, UnitCommand.enterPayloadCommand); + commands.add(UnitCommand.moveCommand, UnitCommand.enterPayloadCommand); if(canBoost){ - cmds.add(UnitCommand.boostCommand); + commands.add(UnitCommand.boostCommand); if(buildSpeed > 0f){ - cmds.add(UnitCommand.rebuildCommand, UnitCommand.assistCommand); + commands.add(UnitCommand.rebuildCommand, UnitCommand.assistCommand); } } //healing, mining and building is only supported for flying units; pathfinding to ambiguously reachable locations is hard. if(flying){ if(canHeal){ - cmds.add(UnitCommand.repairCommand); + commands.add(UnitCommand.repairCommand); } if(buildSpeed > 0){ - cmds.add(UnitCommand.rebuildCommand, UnitCommand.assistCommand); + commands.add(UnitCommand.rebuildCommand, UnitCommand.assistCommand); } if(mineTier > 0){ - cmds.add(UnitCommand.mineCommand); + commands.add(UnitCommand.mineCommand); } if(example instanceof Payloadc){ - cmds.addAll(UnitCommand.loadUnitsCommand, UnitCommand.loadBlocksCommand, UnitCommand.unloadPayloadCommand, UnitCommand.loopPayloadCommand); + commands.addAll(UnitCommand.loadUnitsCommand, UnitCommand.loadBlocksCommand, UnitCommand.unloadPayloadCommand, UnitCommand.loopPayloadCommand); } } - - commands = cmds.toArray(); } - if(defaultCommand == null && commands.length > 0){ - defaultCommand = commands[0]; + if(defaultCommand == null && commands.size > 0){ + defaultCommand = commands.first(); } - if(stances.length == 0){ + if(stances.size == 0){ if(canAttack){ - Seq seq = Seq.with(UnitStance.stop, UnitStance.shoot, UnitStance.holdFire, UnitStance.pursueTarget, UnitStance.patrol); + stances.addAll(UnitStance.stop, UnitStance.shoot, UnitStance.holdFire, UnitStance.pursueTarget, UnitStance.patrol); if(!flying){ - seq.add(UnitStance.ram); + stances.add(UnitStance.ram); } - stances = seq.toArray(UnitStance.class); }else{ - stances = new UnitStance[]{UnitStance.stop, UnitStance.patrol}; + stances.addAll(UnitStance.stop, UnitStance.patrol); } } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index a5a1063bd3..0fac1453cf 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -525,7 +525,7 @@ public void build(Group parent){ firstCommand = true; }else{ //remove commands that this next unit type doesn't have - commands.removeAll(com -> !Structs.contains(type.commands, com)); + commands.removeAll(com -> !type.commands.contains(com)); } if(!firstStance){ @@ -533,7 +533,7 @@ public void build(Group parent){ firstStance = true; }else{ //remove commands that this next unit type doesn't have - stances.removeAll(st -> !Structs.contains(type.stances, st)); + stances.removeAll(st -> !type.stances.contains(st)); } } } diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 023270260b..8c243d878c 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -168,7 +168,7 @@ public boolean acceptUnitPayload(Unit unit){ public boolean canSetCommand(){ var output = unit(); - return output != null && output.commands.length > 1 && output.allowChangeCommands; + return output != null && output.commands.size > 1 && output.allowChangeCommands; } @Override diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 4120ac278d..c058016d91 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -54,7 +54,7 @@ public UnitFactory(String name){ if(build.currentPlan == i) return; build.currentPlan = i < 0 || i >= plans.size ? -1 : i; build.progress = 0; - if(build.command != null && !Structs.contains(build.unit().commands, build.command)){ + if(build.command != null && !build.unit().commands.contains(build.command)){ build.command = null; } }); @@ -66,7 +66,7 @@ public UnitFactory(String name){ if(build.currentPlan == next) return; build.currentPlan = next; build.progress = 0; - if(build.command != null && !Structs.contains(val.commands, build.command)){ + if(build.command != null && !val.commands.contains(build.command)){ build.command = null; } }); @@ -197,9 +197,9 @@ public float fraction(){ public boolean canSetCommand(){ var output = unit(); - return output != null && output.commands.length > 1 && output.allowChangeCommands && + return output != null && output.commands.size > 1 && output.allowChangeCommands && //to avoid cluttering UI, don't show command selection for "standard" units that only have two commands. - !(output.commands.length == 2 && output.commands[1] == UnitCommand.enterPayloadCommand); + !(output.commands.size == 2 && output.commands.get(1) == UnitCommand.enterPayloadCommand); } @Override @@ -275,8 +275,8 @@ public void buildConfiguration(Table table){ } } - if(list.length < columns){ - for(int j = 0; j < (columns - list.length); j++){ + if(list.size < columns){ + for(int j = 0; j < (columns - list.size); j++){ commands.add().size(40f); } } From 9f8f5a5279cb02dfa16a25cf8e2d69739e347d87 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 12 Oct 2024 10:26:14 -0400 Subject: [PATCH 13/49] Fixed #10261 --- core/src/mindustry/world/blocks/units/UnitFactory.java | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index c058016d91..1a7b56f78f 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -389,7 +389,7 @@ public void updateTile(){ unit.command().commandPosition(commandPos); } - unit.command().command(command == null && payload.unit.type.defaultCommand != null ? payload.unit.type.defaultCommand : command); + unit.command().command(command == null && unit.type.defaultCommand != null ? unit.type.defaultCommand : command); } payload = new UnitPayload(unit); diff --git a/gradle.properties b/gradle.properties index 0be7e3088e..7deb4aaf24 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=a39155a23e +archash=dd60085a9d From 3545ed100c5213de3ce7a5f9c2f2ec33ce62aa85 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 12 Oct 2024 11:06:11 -0400 Subject: [PATCH 14/49] More descriptive address in use error --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/ui/dialogs/HostDialog.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 2bc00ea32f..ad5ffd6797 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -305,8 +305,8 @@ 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.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Error hosting server. save.new = New Save save.overwrite = Are you sure you want to overwrite\nthis save slot? diff --git a/core/src/mindustry/ui/dialogs/HostDialog.java b/core/src/mindustry/ui/dialogs/HostDialog.java index 6abba5784e..5f8f143498 100644 --- a/core/src/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/mindustry/ui/dialogs/HostDialog.java @@ -9,7 +9,7 @@ import mindustry.gen.*; import mindustry.ui.*; -import java.io.*; +import java.util.*; import static mindustry.Vars.*; @@ -90,8 +90,8 @@ public void runHost(){ } - }catch(IOException e){ - ui.showException("@server.error", e); + }catch(Exception e){ + ui.showException(e.getMessage() != null && e.getMessage().toLowerCase(Locale.ROOT).contains("address already in use") ? "@server.error.addressinuse" : "@server.error", e); } ui.loadfrag.hide(); hide(); From 76f421e171e8702018748d41997ed3001e0623fd Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sat, 12 Oct 2024 15:07:11 +0000 Subject: [PATCH 15/49] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 +- core/assets/bundles/bundle_bg.properties | 2 +- core/assets/bundles/bundle_ca.properties | 2 +- core/assets/bundles/bundle_cs.properties | 2 +- core/assets/bundles/bundle_da.properties | 2 +- core/assets/bundles/bundle_de.properties | 2 +- core/assets/bundles/bundle_es.properties | 2 +- core/assets/bundles/bundle_et.properties | 2 +- core/assets/bundles/bundle_eu.properties | 2 +- core/assets/bundles/bundle_fi.properties | 2 +- core/assets/bundles/bundle_fil.properties | 2 +- core/assets/bundles/bundle_fr.properties | 2 +- core/assets/bundles/bundle_hu.properties | 2 +- core/assets/bundles/bundle_id_ID.properties | 2 +- core/assets/bundles/bundle_it.properties | 2 +- core/assets/bundles/bundle_ja.properties | 2 +- core/assets/bundles/bundle_ko.properties | 2 +- core/assets/bundles/bundle_lt.properties | 2 +- core/assets/bundles/bundle_nl.properties | 2 +- core/assets/bundles/bundle_nl_BE.properties | 2 +- core/assets/bundles/bundle_pl.properties | 2 +- core/assets/bundles/bundle_pt_BR.properties | 2 +- core/assets/bundles/bundle_pt_PT.properties | 2 +- core/assets/bundles/bundle_ro.properties | 2 +- core/assets/bundles/bundle_ru.properties | 2 +- core/assets/bundles/bundle_sr.properties | 2 +- core/assets/bundles/bundle_sv.properties | 2 +- core/assets/bundles/bundle_th.properties | 2 +- core/assets/bundles/bundle_tk.properties | 2 +- core/assets/bundles/bundle_tr.properties | 2 +- core/assets/bundles/bundle_uk_UA.properties | 2 +- core/assets/bundles/bundle_vi.properties | 2 +- core/assets/bundles/bundle_zh_CN.properties | 2 +- core/assets/bundles/bundle_zh_TW.properties | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index adfdfeb42f..bd1123b01f 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -294,8 +294,8 @@ connecting = [accent]Падключэнне… reconnecting = [accent]Перападключэнне... connecting.data = [accent]Загрузка дадзеных свету… server.port = Порт: -server.addressinuse = Дадзены адрас ужо выкарыстоўваецца! server.invalidport = Няправільны нумар порта! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [барвовы]Памылка стварэння сервера. save.new = Новае захаванне save.overwrite = Вы ўпэўненыя, што жадаеце перазапісаць\nгэты слот для захавання? diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index beb7119a8f..f14eedaf48 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -299,8 +299,8 @@ connecting = [accent]Свързване... reconnecting = [accent]Повторно свързване... connecting.data = [accent]Зареждане на информация за света... server.port = Порт: -server.addressinuse = Адресът вече се използва! server.invalidport = Невалиден порт! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Грешка при стартиране на сървър. save.new = Нов Запис save.overwrite = Сигурни ли сте, че искате\nда презапишете тази позиция за запиз? diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 8a89aaf0a5..dc5c3fb38f 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -299,8 +299,8 @@ connecting = [accent]Es connecta… reconnecting = [accent]Es torna a connectar… connecting.data = [accent]Es carreguen les dades del món… server.port = Port: -server.addressinuse = L’adreça ja es fa servir! server.invalidport = El número de port no és vàlid! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]S’ha produït un error mentre s’allotjava el servidor. save.new = Desa en un fitxer nou save.overwrite = Esteu segur que voleu sobreescriure\naquesta ranura de desades? diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 176459f3c1..165e653c02 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -299,8 +299,8 @@ connecting = [accent]Připojuji se...[] reconnecting = [accent]Znovu se připojuji... connecting.data = [accent]Načítám data ze serveru...[] server.port = Port: -server.addressinuse = Adresu již někdo používá! server.invalidport = Neplatné číslo portu! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Chyba při hostování serveru.[] save.new = Nové uložení hry save.overwrite = Jsi si jistý, že chceš přepsat\ntuto pozici pro uložení hry? diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 6e4250ce88..0044959be5 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -295,8 +295,8 @@ connecting = [accent]Forbinder... reconnecting = [accent]Reconnecting... connecting.data = [accent]Indlæser bane-data... server.port = Port: -server.addressinuse = IP-adressen er allerede i brug! server.invalidport = Ugyldigt port-nummer! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Der skete en fejl. save.new = Nyt gem save.overwrite = Er du sikker på, at du vil overskrive\ndette gem? diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 597f4c5c9d..163fba0e4f 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -302,8 +302,8 @@ connecting = [accent] Verbinde... reconnecting = [accent]Verbindung wird wiederhergestellt... connecting.data = [accent] Welt wird geladen... server.port = Port: -server.addressinuse = Adresse bereits in Verwendung! server.invalidport = Falscher Port! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson] Fehler beim Hosten des Servers:[accent] {0} save.new = Neuer Spielstand save.overwrite = Möchtest du diesen Spielstand wirklich überschreiben? diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 9542a405ea..e49d0594c8 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -299,8 +299,8 @@ connecting = [accent]Conectando... reconnecting = [accent]Reconectado... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: -server.addressinuse = ¡La dirección ya está en uso! server.invalidport = ¡El número de puerto no es valido! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Error alojando el servidor. save.new = Nuevo archivo de guardado save.overwrite = ¿Quieres sobrescribir\neste guardado? diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index c52763655d..242c1d3e7b 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -295,8 +295,8 @@ connecting = [accent]Ühendamine... reconnecting = [accent]Reconnecting... connecting.data = [accent]Maailma andmete allalaadimine... server.port = Port: -server.addressinuse = Aadress on juba kasutusel! server.invalidport = Ebasobiv pordi number! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Viga serveri hostimisel. save.new = Uus salvestis save.overwrite = Oled kindel, et soovid selle salvestise asendada? diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index dfd0203d7a..f94291ba4c 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -297,8 +297,8 @@ connecting = [accent]Konektatzen... reconnecting = [accent]Reconnecting... connecting.data = [accent]Munduaren datuak kargatzen... server.port = Ataka: -server.addressinuse = Helbidea dagoeneko erabilita dago! server.invalidport = Ataka zenbaki baliogabea! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Errorea zerbitzaria ostatatzean: [accent]{0} save.new = Gordetako partida berria save.overwrite = Ziur gordetzeko tarte hau gainidatzi nahi duzula? diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index e17fa2fa06..eaf90e4858 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -295,8 +295,8 @@ connecting = [accent]Yhdistetään... reconnecting = [accent]Yhdistetään uudelleen... connecting.data = [accent]Ladataan maailman tietoja... server.port = Portti: -server.addressinuse = Osoite on jo käytössä! server.invalidport = Tällä portilla ei löytynyt peliä! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Virhe palvelimen hostaamisessa: [accent]{0} save.new = Uusi tallennus save.overwrite = Haluatko varmasti korvata \ntämän tallennuspaikan?? diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 140a2c34f1..8444145ed2 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -295,8 +295,8 @@ 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.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Error hosting server. save.new = Bagong Save save.overwrite = Sigurado ka bang gusto mong i-overwrite ang save slot na ito? diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 6087eae397..9ae0010916 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -305,8 +305,8 @@ connecting = [accent]Connexion... reconnecting = [accent]Reconnexion... connecting.data = [accent]Chargement des données du monde... server.port = Port : -server.addressinuse = Adresse déjà utilisée ! server.invalidport = Numéro de port invalide ! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Erreur lors de l'hébergement du serveur. save.new = Nouvelle sauvegarde save.overwrite = Êtes-vous sûr de vouloir\nécraser cette sauvegarde ? diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 6a07c6a756..b638d2a5c2 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -305,8 +305,8 @@ connecting = [accent]Kapcsolódás... reconnecting = [accent]Újrakapcsolódás... connecting.data = [accent]Világadatok betöltése... server.port = Port: -server.addressinuse = A cím már használatban van! server.invalidport = Érvénytelen port! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Kiszolgálóhiba. save.new = Új mentés save.overwrite = Biztosan felülírod\nezt a mentést? diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 2d39360da4..35d4ec89c6 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -305,8 +305,8 @@ connecting = [accent]Menghubungkan... reconnecting = [accent]Menghubungkan kembali... connecting.data = [accent]Memuat data dunia... server.port = Port: -server.addressinuse = Alamat sudah dipakai! server.invalidport = Nomor port tidak valid! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Terjadi kesalahan saat menghosting server: [accent]{0} save.new = Simpanan Baru save.overwrite = Anda yakin ingin menimpa \nsimpanan ini? diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 5834a87295..4e1a3dbdff 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -297,8 +297,8 @@ connecting = [accent]Connessione in corso... reconnecting = [accent]Riconnessione in corso... connecting.data = [accent]Caricamento del mondo... server.port = Porta: -server.addressinuse = Indirizzo già in uso! server.invalidport = Numero porta non valido! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Errore nell'hosting del server. save.new = Nuovo Salvataggio save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio? diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 8d396e65bd..9889674eed 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -299,8 +299,8 @@ connecting = [accent]接続中... reconnecting = [accent]再接続中... connecting.data = [accent]ワールドデータを読み込み中... server.port = ポート: -server.addressinuse = アドレスがすでに使用されています! server.invalidport = 無効なポート番号です! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]サーバーのホストエラー: [accent]{0} save.new = 新規保存 save.overwrite = このスロットに上書きしてもよろしいですか? diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 46dde10e11..07d06a7dce 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -299,8 +299,8 @@ connecting = [accent] 연결중... reconnecting = [accent]재접속중... connecting.data = [accent]맵 데이터 불러오는중... server.port = 포트: -server.addressinuse = 이미 사용 중인 주소입니다! server.invalidport = 잘못된 포트 번호입니다! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]서버 호스팅 오류 save.new = 새로 저장 save.overwrite = 저장된 슬롯을 덮어쓰시겠습니까? diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 5b0cb61584..261b9ddb61 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -295,8 +295,8 @@ connecting = [accent]Prisijungiama... reconnecting = [accent]Reconnecting... connecting.data = [accent]Kraunama pasaulio informacija... server.port = Prievadas: -server.addressinuse = Adresas jau naudojamas! server.invalidport = Negaliams prievado numeris! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Įvyko klaida. save.new = Naujas Išsaugojimas save.overwrite = Ar esate tikras, jog\n norite perrašyti šį elementą? diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 3014edb521..e52bce1e57 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -303,8 +303,8 @@ connecting = [accent]Aan het verbinden... reconnecting = [accent]Aan het herverbinden... connecting.data = [accent]Wereld aan het laden... server.port = Poort: -server.addressinuse = Adres is al in gebruik! server.invalidport = Poort is geen geldig getal! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Fout met hosten: [accent]{0} save.new = Nieuwe Save save.overwrite = Weet je zeker dat je deze\nsave wilt overschrijven? diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 5e9b080707..93facd0d5f 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -295,8 +295,8 @@ connecting = [accent]Verbinden... reconnecting = [accent]Reconnecting... connecting.data = [accent]Laden map data... server.port = Poort: -server.addressinuse = Dit adres wordt al gebruikt! server.invalidport = Ongeldige poort! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Fout bij het openen van de server: [accent]{0} save.new = Nieuwe save save.overwrite = Ben je zeker dat je deze save\nwilt overschrijven? diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index a03f04f9be..65faeb583c 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -299,8 +299,8 @@ connecting = [accent]Łączenie... reconnecting = [accent]Ponowne łączenie... connecting.data = [accent]Ładowanie danych świata... server.port = Port: -server.addressinuse = Adres jest już w użyciu! server.invalidport = Nieprawidłowy numer portu. +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Błąd hostowania serwera: [accent]{0} save.new = Nowy zapis save.overwrite = Czy na pewno chcesz nadpisać zapis gry? diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 107b25d10b..24acb0ce2e 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -299,8 +299,8 @@ connecting = [accent]Conectando... reconnecting = [accent]Reconectando... connecting.data = [accent]Carregando dados do mundo... server.port = Porta: -server.addressinuse = Porta em uso! server.invalidport = Numero de port inválido! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Erro ao hospedar o servidor: [accent]{0} save.new = Novo save save.overwrite = Você tem certeza que quer sobrescrever este save? diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 54bc7311ba..15e219d50f 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -295,8 +295,8 @@ connecting = [accent]Conectando... reconnecting = [accent]Reconnecting... connecting.data = [accent]Carregando dados do mundo... server.port = Porte: -server.addressinuse = Endereço em uso! server.invalidport = Numero de porta invalido! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Erro ao hospedar o servidor: [accent]{0} save.new = Novo gravamento save.overwrite = Você tem certeza que quer sobrescrever este gravamento? diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index cac3cda280..30eff1c4ff 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -299,8 +299,8 @@ connecting = [accent]Conectare... reconnecting = [accent]Reconectare... connecting.data = [accent]Se încarcă datele hărții... server.port = Port: -server.addressinuse = Adresa este deja în uz! server.invalidport = Număr de port invalid! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Eroare la găzduirea serverului. save.new = Nouă Salvare save.overwrite = Sigur vrei să scrii peste \nacest slot de salvare? diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 6b20ef664b..0b1f1ff407 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -299,8 +299,8 @@ connecting = [accent]Подключение… reconnecting = [accent]Переподключение… connecting.data = [accent]Загрузка данных мира… server.port = Порт: -server.addressinuse = Данный адрес уже используется! server.invalidport = Неверный номер порта! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Ошибка создания сервера. save.new = Новое сохранение save.overwrite = Вы уверены, что хотите перезаписать\nэтот слот для сохранения? diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index d01856099c..2101460c98 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -299,8 +299,8 @@ connecting = [accent]Povezivanje... reconnecting = [accent]Ponovno povezivanje... connecting.data = [accent]Učitavanje podataka... server.port = Port: -server.addressinuse = Adresa je već u upotrebi! server.invalidport = Invalid port number! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Error hosting server. save.new = Novi Snimak save.overwrite = Da li ste sigurni da želite da prerežete\novaj snimak? diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index ec924d68e5..de375dbecf 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -295,8 +295,8 @@ connecting = [accent]Ansluter... reconnecting = [accent]Reconnecting... connecting.data = [accent]Loading world data... server.port = Port: -server.addressinuse = Address already in use! server.invalidport = Ogiltigt portnummer! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Error hosting server: [accent]{0} save.new = Ny sparfil save.overwrite = Are you sure you want to overwrite\nthis save slot? diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index cd058c1012..695d2d8da0 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -299,8 +299,8 @@ connecting = [accent]กำลังเชื่อมต่อ... reconnecting = [accent]กำลังเชื่อมต่อใหม่... connecting.data = [accent]กำลังโหลดข้อมูลของโลก ... server.port = พอร์ต: -server.addressinuse = มีคนใช้ที่อยู่นี้อยู่แล้ว! server.invalidport = เลขพอร์ตไม่ถูกต้อง! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]การโฮสต์เซิร์ฟเวอร์ผิดพลาด save.new = เซฟใหม่ save.overwrite = คุณแน่ใจหรือว่าจะเซฟทับ\nเซฟนี้? diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 34a1b4b192..d95e12e50b 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -295,8 +295,8 @@ connecting = [accent]Baglaniliyor reconnecting = [accent]Reconnecting... connecting.data = [accent]Loading world data... server.port = Link: -server.addressinuse = Addres zaten kullaniliyor! server.invalidport = Geçersiz Oyun numarasi! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Oyun acarkes sorun olustu: [accent]{0} save.new = Yeni Kayit Dosyasi save.overwrite = Bu oyunun uzerinden\ngecmek istedigine emin\nmisin? diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index d4e2043443..9e77643639 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -299,8 +299,8 @@ connecting = [accent]Bağlanılıyor... reconnecting = [accent]Yeniden Bağlanılıyor... connecting.data = [accent]Dünya verisi yükleniyor... server.port = Port: -server.addressinuse = Adres zaten kullanılıyor! server.invalidport = Geçersiz port sayısı! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Sunucu kurulamadı: [accent]{0} save.new = Yeni kayıt save.overwrite = Bu kaydın üstüne yazmak istediğine\nemin misin? diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 53f934e2a8..a87a5b4d9f 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -301,8 +301,8 @@ connecting = [accent]Приєднання… reconnecting = [accent]Повторне з’єднання… connecting.data = [accent]Завантаження даних світу… server.port = Порт: -server.addressinuse = Ця адреса вже використовується! server.invalidport = Недійсний номер порту! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]Помилка створення сервера. save.new = Нове збереження save.overwrite = Ви дійсно хочете перезаписати це місце збереження? diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index a57df1d551..3b8967453e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -305,8 +305,8 @@ connecting = [accent]Đang kết nối... reconnecting = [accent]Đang kết nối lại... connecting.data = [accent]Đang tải dữ liệu thế giới... server.port = Cổng: -server.addressinuse = Địa chỉ đang được sử dụng! server.invalidport = Số cổng không hợp lệ! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]Lỗi tạo máy chủ. save.new = Bản lưu mới save.overwrite = Bạn có chắc muốn ghi đè\nbản lưu này? diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 8cd4292737..0f335c5390 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -302,8 +302,8 @@ connecting = [accent]连接中… reconnecting = [accent]重新连接中… connecting.data = [accent]地图加载中… server.port = 端口: -server.addressinuse = 地址已被占用! server.invalidport = 无效的端口! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [scarlet]创建服务器错误。 save.new = 新存档 save.overwrite = 确定要覆盖这个存档吗? diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index bf5bc22770..f7dda11538 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -299,8 +299,8 @@ connecting = [accent]連線中…… reconnecting = [accent]重新連接中…… connecting.data = [accent]地圖資料載入中…… server.port = 連接埠: -server.addressinuse = 該位置已被使用! server.invalidport = 無效的連接埠! +server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! server.error = [crimson]建立伺服器時發生錯誤。 save.new = 新存檔 save.overwrite = 您確定要覆寫存檔嗎? From c2405a882cff5c65196018c0dae215e71247b68c Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 12 Oct 2024 22:16:37 -0400 Subject: [PATCH 16/49] Added fallback URLs for server list --- core/src/mindustry/Vars.java | 4 ++-- core/src/mindustry/ui/dialogs/JoinDialog.java | 20 +++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 2eb0e16ca5..c838f55c15 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -72,9 +72,9 @@ public class Vars implements Loadable{ /** URL the links to the wiki's modding guide.*/ public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/"; /** URL to the JSON file containing all the BE servers. Only queried in BE. */ - public static final String serverJsonBeURL = "https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_be.json"; + public static final String[] serverJsonBeURLs = {"https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_be.json", "https://cdn.jsdelivr.net/gh/anuken/mindustryserverlist/servers_be.json"}; /** URL to the JSON file containing all the stable servers. */ - public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_v8.json"; + public static final String[] serverJsonURLs = {"https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_v8.json", "https://cdn.jsdelivr.net/gh/anuken/mindustryserverlist/servers_v8.json"}; /** URL of the github issue report template.*/ public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md"; /** list of built-in servers.*/ diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index b0912c7b9c..f6e4191c7b 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -631,12 +631,24 @@ private void loadServers(){ Core.settings.remove("server-list"); } - var url = Version.type.equals("bleeding-edge") || Vars.forceBeServers ? serverJsonBeURL : serverJsonURL; - Log.info("Fetching community servers at @", url); + var urls = Version.type.equals("bleeding-edge") || Vars.forceBeServers ? serverJsonBeURLs : serverJsonURLs; + + fetchServers(urls, 0); + } + + private void fetchServers(String[] urls, int index){ + if(index >= urls.length) return; //get servers - Http.get(url) - .error(t -> Log.err("Failed to fetch community servers", t)) + Http.get(urls[index]) + .error(t -> { + if(index < urls.length - 1){ + //attempt fetching from the next URL upon failure + fetchServers(urls, index + 1); + }else{ + Log.err("Failed to fetch community servers", t); + } + }) .submit(result -> { Jval val = Jval.read(result.getResultAsString()); Seq servers = new Seq<>(); From a7c3ce5d8ca8985817c6c2a9afe161bfb017191f Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 13 Oct 2024 12:11:23 -0400 Subject: [PATCH 17/49] Fixed #10253 --- core/src/mindustry/game/Schematics.java | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 32b304f3e9..d9abfa796b 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -654,7 +654,7 @@ public static Schematic rotate(Schematic input, int times){ private static Schematic rotated(Schematic input, boolean counter){ int direction = Mathf.sign(counter); - Schematic schem = input == tmpSchem ? tmpSchem2 : tmpSchem2; + Schematic schem = input == tmpSchem ? tmpSchem2 : tmpSchem; schem.width = input.width; schem.height = input.height; Pools.freeAll(schem.tiles); diff --git a/gradle.properties b/gradle.properties index 7deb4aaf24..e0f0692c65 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=dd60085a9d +archash=c1e3b23ddd From ea5975737cfd5ffa01064374e53cb3fad4aa4755 Mon Sep 17 00:00:00 2001 From: Son Phan Trung Date: Sun, 13 Oct 2024 23:13:32 +0700 Subject: [PATCH 18/49] add gradle build option to show commit hash (#10264) --- build.gradle | 8 ++++++++ core/src/mindustry/core/Version.java | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a7d9988b58..6a49b0ce6e 100644 --- a/build.gradle +++ b/build.gradle @@ -89,6 +89,10 @@ allprojects{ return project.getProperties()["buildversion"] } + getCommitHash = { + return 'git rev-parse --verify --short HEAD'.execute().text.trim() + } + getPackage = { return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1) } @@ -133,6 +137,10 @@ allprojects{ props["number"] = versionNumber props["modifier"] = versionModifier props["build"] = buildid + props["commitHash"] = "unknown" + if(project.hasProperty("showCommitHash")){ + props["commitHash"] = getCommitHash() + } props.store(pfile.newWriter(), "Autogenerated file. Do not modify.") } diff --git a/core/src/mindustry/core/Version.java b/core/src/mindustry/core/Version.java index 73bbd59416..c79594eebd 100644 --- a/core/src/mindustry/core/Version.java +++ b/core/src/mindustry/core/Version.java @@ -12,6 +12,8 @@ public class Version{ public static String type = "unknown"; /** Build modifier, e.g. 'alpha' or 'release' */ public static String modifier = "unknown"; + /** Git commit hash (short) */ + public static String commitHash = "unknown"; /** Number specifying the major version, e.g. '4' */ public static int number; /** Build number, e.g. '43'. set to '-1' for custom builds. */ @@ -32,6 +34,7 @@ public static void init(){ type = map.get("type"); number = Integer.parseInt(map.get("number", "4")); modifier = map.get("modifier"); + commitHash = map.get("commitHash"); if(map.get("build").contains(".")){ String[] split = map.get("build").split("\\."); try{ @@ -73,6 +76,6 @@ public static String combined(){ if(build == -1){ return "custom build"; } - return (type.equals("official") ? modifier : type) + " build " + build + (revision == 0 ? "" : "." + revision); + return (type.equals("official") ? modifier : type) + " build " + build + (revision == 0 ? "" : "." + revision) + (commitHash.equals("unknown") ? "" : " (" + commitHash + ")"); } } From 23416586d7f183c3c37eee88889b4cca33206c2c Mon Sep 17 00:00:00 2001 From: SpaceEarthEX <68502246+SpaceEarthEX@users.noreply.github.com> Date: Mon, 14 Oct 2024 06:11:11 +0900 Subject: [PATCH 19/49] Update bundle_ko.properties (#10265) * Update bundle_ko.properties Oh boy, 3 hours of work lol.. * oops i forgot something --- core/assets/bundles/bundle_ko.properties | 646 ++++++++++++----------- 1 file changed, 347 insertions(+), 299 deletions(-) diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 07d06a7dce..34e8d4e3c0 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -70,7 +70,7 @@ schematic.shareworkshop = 창작마당에 공유 schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 설계도 뒤집기 schematic.saved = 설계도 저장됨 schematic.delete.confirm = 이 설계도는 완전히 삭제될 것입니다. -schematic.edit = Edit Schematic +schematic.edit = 설계도 수정 schematic.info = {0}x{1}, {2} 블록 schematic.disabled = [scarlet]설계도 비활성화됨[]\n이 [accent]맵[] 또는 [accent]서버[] 에서는 설계도를 사용할 수 없습니다. schematic.tags = 태그: @@ -79,13 +79,13 @@ schematic.addtag = 태그 추가하기 schematic.texttag = 텍스트 태그 schematic.icontag = 아이콘 태그 schematic.renametag = 태그 이름바꾸기 -schematic.tagged = {0} tagged +schematic.tagged = {0} 태그됨 schematic.tagdelconfirm = 이 태그를 완전히 삭제하시겠습니까? schematic.tagexists = 이 태그는 이미 존재합니다. stats = 기록 stats.wave = 진행 단계 -stats.unitsCreated = 생성한 기체 +stats.unitsCreated = 생성한 유닛 stats.enemiesDestroyed = 파괴한 적 stats.built = 건설한 건물 stats.destroyed = 파괴한 건물 @@ -98,7 +98,7 @@ level.highscore = 최고 점수: [accent]{0} level.select = 맵 선택 level.mode = 게임 모드: coreattack = < 코어가 공격을 받고 있습니다! > -nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n단계가 시작하는 순간 구역 내의 모든 건물과 기체가 파괴됩니다! +nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n단계가 시작하는 순간 구역 내의 모든 건물과 유닛이 파괴됩니다! database = 코어 데이터베이스 database.button = 데이터베이스 savegame = 게임 저장 @@ -146,6 +146,7 @@ mod.multiplayer.compatible = [gray]멀티플레이어 호환 가능 mod.disable = 비활성화 mod.content = 콘텐츠: mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다. + mod.incompatiblegame = [red]구버전 게임 mod.incompatiblemod = [red]호환되지 않음 mod.blacklisted = [red]지원하지 않음 @@ -153,6 +154,7 @@ mod.unmetdependencies = [red]충촉되지 않은 종속성 mod.erroredcontent = [scarlet]콘텐츠 오류 mod.circulardependencies = [red]순환 의존성 mod.incompletedependencies = [red]불완전한 의존성 + mod.requiresversion.details = 게임 버전 요구: [accent]{0}[]\n당신의 게임은 구버전입니다. 이 모드가 작동하려면 최신 버전의 게임이 필요합니다. (베타/알파 릴리즈일 가능성이 있음). mod.outdatedv7.details = 이 모드는 최신 버전의 게임과 호환되지 않습니다. 반드시 작성자가 업데이트해야 하고, [accent]mod.json[] 파일에 [accent]최소게임버전: 136[]을 추가해야 합니다. mod.blacklisted.details = 이 모드는 이 버전의 게임에서 충돌 또는 기타 문제를 일으키는 것으로 인해 수동으로 블랙리스트에 올라와 있습니다. 사용하지 마세요. @@ -160,7 +162,9 @@ mod.missingdependencies.details = 이 모드에는 종속성이 없음: {0} mod.erroredcontent.details = 이 게임은 로딩하는 동안 오류가 발생했습니다. 모드 작성자에게 수정하도록 요청하세요. mod.circulardependencies.details = 이 모드는 서로 의존하는 의존성을 지니고 있습니다. mod.incompletedependencies.details = 잘못되었거나 누락한 종속성으로 인해 이 모드를 불러올 수 없습니다: {0}. + mod.requiresversion = 필요한 게임 버전: [red]{0} + mod.errors = 콘텐츠를 불러오는 중에 오류가 발생함 mod.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화하거나 플레이하기 전에 오류를 수정하세요. mod.nowdisabled = [scarlet]모드 '{0}'에 필요한 종속성이 없습니다:[accent] {1}\n[lightgray]이 모드를 먼저 내려받아야 합니다.\n이 모드는 자동으로 비활성화됩니다. @@ -191,9 +195,9 @@ available = 새로운 콘텐츠 해금이 가능합니다! unlock.incampaign = < 해금 후 상세정보 열람이 가능합니다 > campaign.select = 캠페인 시작지점 선택하기 campaign.none = [lightgray]시작할 행성을 선택하십시오.\n언제든지 전환할 수 있습니다. -campaign.erekir = [accent]신규 플레이어에게 추천합니다.[]\n\n보다 새롭고 세련된 컨텐츠. 대부분 순차적으로 캠페인이 진행됩니다.\n\n더 높은 완성도의 지도와 다채로운 경험. -campaign.serpulo = [scarlet]신규 플레이어에게 권장되지 않습니다.[]\n\n오래된 컨텐츠: 고전적인 경험. 좀 더 개방적이죠.\n\n잠재적으로 불균형한 지도와 캠페인 메커니즘. 덜 세련됩니다. -campaign.difficulty = Difficulty +campaign.erekir = [scarlet]신규 플레이어에게 권장되지 않습니다.[]\n\n보다 새롭고 세련된 컨텐츠. 대부분 순차적으로 캠페인이 진행됨.\n\n더 어렵고, 더 높은 완성도의 맵과 다채로운 경험. +campaign.serpulo = [accent]신규 플레이어에게 추천합니다.[]\n\n오래된 콘텐츠, 고전적인 경험. 더 개방적이고, 더 많은 콘텐츠.\n\n잠재적으로 불균형한 맵과 캠페인 메커니즘. 덜 세련됨. +campaign.difficulty = 난이도 completed = [accent]완료됨 techtree = 연구 기록 techtree.select = 연구 기록 선택 @@ -250,8 +254,8 @@ servers.disclaimer = 커뮤니티 서버는 개발자가 소유하거나 제어 servers.showhidden = 숨겨진 서버 보이기/숨기기 server.shown = 서버 숨기기 server.hidden = 서버 보이기 -viewplayer = 플레이어 보기: [accent]{0} +viewplayer = 플레이어 보기: [accent]{0} trace = 플레이어 정보 보기 trace.playername = 플레이어 이름: [accent]{0} trace.ip = IP: [accent]{0} @@ -261,14 +265,16 @@ trace.mobile = 모바일 클라이언트: [accent]{0} trace.modclient = 사용자 지정 클라이언트: [accent]{0} trace.times.joined = 입장 횟수: [accent]{0} trace.times.kicked = 추방 횟수: [accent]{0} -trace.ips = IPs: -trace.names = Names: +trace.ips = IP: +trace.names = 이름: invalidid = 잘못된 클라이언트 ID입니다! 버그 보고서를 보내주세요. + player.ban = 플레이어 차단 player.kick = 플레이어 강퇴 player.trace = 플레이어 찾기 player.admin = 관리자 권한 부여 player.team = 팀 변경하기 + server.bans = 차단 목록 server.bans.none = 차단된 플레이어를 찾을 수 없습니다! server.admins = 관리자 @@ -286,7 +292,7 @@ confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까? confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하시겠습니까? confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까? votekick.reason = 강퇴 사유 -votekick.reason.message = "{0}[white]" 을(를) 투표 추방하시려면 해당 사유를 적어주세요 : +votekick.reason.message = "{0}[white]" 을(를) 투표 추방하시려면 해당 사유를 적어주세요: joingame.title = 게임 참가 joingame.ip = 주소: disconnect = 연결이 끊어졌습니다. @@ -300,7 +306,7 @@ reconnecting = [accent]재접속중... connecting.data = [accent]맵 데이터 불러오는중... server.port = 포트: server.invalidport = 잘못된 포트 번호입니다! -server.error.addressinuse = [scarlet]Failed to open server on port 6567.[]\n\nMake sure no other Mindustry servers are running on your device or network! +server.error.addressinuse = [scarlet]포트 6567에서 서버를 열지 못했습니다.[]\n\n다른 Mindustry 서버가 귀하의 장치나 네트워크에서 실행되고 있지 않은지 확인하세요! server.error = [scarlet]서버 호스팅 오류 save.new = 새로 저장 save.overwrite = 저장된 슬롯을 덮어쓰시겠습니까? @@ -342,7 +348,7 @@ open = 열기 customize = 사용자 정의 규칙 cancel = 취소 command = 명령 -command.queue = [lightgray][Queuing] +command.queue = 대기 command.mine = 채굴 command.repair = 수리 command.rebuild = 재건 @@ -353,7 +359,7 @@ command.enterPayload = 화물 블록에 들어가기 command.loadUnits = 유닛 적재 command.loadBlocks = 블록 적재 command.unloadPayload = 화물 내려놓기 -command.loopPayload = Loop Unit Transfer +command.loopPayload = 유닛 반복 운반 stance.stop = 명령 취소하기 stance.shoot = 명령: 사격 stance.holdfire = 명령: 사격 중지 @@ -393,7 +399,7 @@ wave.waiting = 다음 단계까지[lightgray] {0}초 wave.waveInProgress = [lightgray]단계 진행중 waiting = [lightgray]대기중... waiting.players = 상대 플레이어를 기다리는 중... -wave.enemies = [lightgray]적 기체 {0}기 남음 +wave.enemies = [lightgray]적 유닛 {0}기 남음 wave.enemycores = [accent]{0}[lightgray] 적 코어들 wave.enemycore = [accent]{0}[lightgray] 적 코어 wave.enemy = [lightgray]{0}기 남음 @@ -423,6 +429,7 @@ publishing = [accent]게시 중... publish.confirm = 이것을 게시하시겠습니까?[lightgray]창작마당 EULA에 동의해야 합니다. 그렇지 않으면 아이템이 표시되지 않습니다! publish.error = 아이템 게시 오류: {0} steam.error = 스팀 서비스를 초기화하지 못했습니다.\n오류: {0} + editor.planet = 행성: editor.sector = 구역: editor.seed = 시드: @@ -439,12 +446,12 @@ editor.waves = 단계 editor.rules = 규칙 editor.generation = 지형 생성 editor.objectives = 목표 -editor.locales = Locale Bundles -editor.worldprocessors = World Processors -editor.worldprocessors.editname = Edit Name -editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. -editor.worldprocessors.nospace = No free space to place a world processor!\nDid you fill the map with structures? Why would you do this? -editor.worldprocessors.delete.confirm = Are you sure you want to delete this world processor?\n\nIf it is surrounded by walls, it will be replaced by an environmental wall. +editor.locales = 번역 팩 +editor.worldprocessors = 월드 프로세서 +editor.worldprocessors.editname = 이름 수정 +editor.worldprocessors.none = [lightgray]월드 프로세서 블록을 찾을 수 없습니다!\n맵 편집기에서 추가하거나 아래의 \ue813 추가 버튼을 사용하세요. +editor.worldprocessors.nospace = 월드 프로세서를 배치할 여유 공간이 없습니다!\n맵을 전부 구조물로 채웠나요? 왜 이렇게 했나요? +editor.worldprocessors.delete.confirm = 이 월드 프로세서를 삭제하시겠습니까?\n\n주변이 벽으로 둘러싸여 있다면 지형 벽으로 대체될 것입니다. editor.ingame = 인게임 편집 editor.playtest = 맵 테스트 editor.publish.workshop = 창작마당 게시 @@ -486,9 +493,9 @@ waves.sort = 정렬 기준 waves.sort.reverse = 정렬 뒤집기 waves.sort.begin = 시작 단계 waves.sort.health = 체력 -waves.sort.type = 기체 유형 -waves.search = Search waves... -waves.filter = Unit Filter +waves.sort.type = 유닛 유형 +waves.search = 단계 검색... +waves.filter = 유닛 필터 waves.units.hide = 모두 숨기기 waves.units.show = 모두 보이기 @@ -496,17 +503,18 @@ waves.units.show = 모두 보이기 wavemode.counts = 기 wavemode.totals = 총 wavemode.health = 체력 -all = All +all = 모두 editor.default = [lightgray]<기본값> details = 설명... edit = 편집... variables = 변수 -logic.clear.confirm = Are you sure you want to clear all code from this processor? -logic.globals = Built-in Variables +logic.clear.confirm = 이 프로세서의 모든 코드를 삭제하시겠습니까? +logic.globals = 내장 변수 + editor.name = 이름: -editor.spawn = 기체 생성 -editor.removeunit = 기체 삭제 +editor.spawn = 유닛 생성 +editor.removeunit = 유닛 삭제 editor.teams = 팀 editor.errorload = 파일을 불러오지 못했습니다. editor.errorsave = 파일을 저장하지 못했습니다. @@ -515,7 +523,7 @@ editor.errorlegacy = 이 맵은 너무 오래됐고, 더 이상 지원하지 않 editor.errornot = 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요? -editor.errorlocales = Error reading invalid locale bundles. +editor.errorlocales = 잘못된 언어 팩을 읽는 동안 오류가 발생했습니다. editor.update = 업데이트 editor.randomize = 무작위 editor.moveup = 위로 이동 @@ -527,7 +535,7 @@ editor.sectorgenerate = 구역 형성 editor.resize = 맵 크기조정 editor.loadmap = 맵 불러오기 editor.savemap = 맵 저장 -editor.savechanges = [scarlet]You have unsaved changes!\n\n[]Do you want to save them? +editor.savechanges = [scarlet]저장하지 않은 변경 사항이 있습니다!\n\n[]저장하시겠습니까? editor.saved = 저장됨! editor.save.noname = 맵에 이름이 없습니다! '맵 정보' 메뉴에서 설정하세요. editor.save.overwrite = 이 맵은 내장된 맵을 덮어씁니다! '맵 정보' 에서 다른 이름을 선택하세요. @@ -566,8 +574,8 @@ toolmode.eraseores = 자원 초기화 toolmode.eraseores.description = 자원만 초기화합니다. toolmode.fillteams = 팀 채우기 toolmode.fillteams.description = 블록의 팀을 선택한 팀으로 채웁니다. -toolmode.fillerase = Fill Erase -toolmode.fillerase.description = Erase blocks of the same type. +toolmode.fillerase = 유형별 지우기 +toolmode.fillerase.description = 같은 유형의 블록을 지웁니다. toolmode.drawteams = 팀 그리기 toolmode.drawteams.description = 블록의 팀을 선택한 팀으로 그립니다. #unused @@ -592,7 +600,7 @@ filter.clear = 초기화 filter.option.ignore = 무시 filter.scatter = 흩뿌리기 filter.terrain = 지형 -filter.logic = Logic +filter.logic = 로직 filter.option.scale = 크기 filter.option.chance = 배치 빈도 @@ -618,23 +626,24 @@ filter.option.radius = 반경 filter.option.percentile = 백분율 filter.option.code = 코드 filter.option.loop = 루프 -locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable) -locales.deletelocale = Are you sure you want to delete this locale bundle? -locales.applytoall = Apply Changes To All Locales -locales.addtoother = Add To Other Locales -locales.rollback = Rollback to last applied -locales.filter = Property filter -locales.searchname = Search name... -locales.searchvalue = Search value... -locales.searchlocale = Search locale... -locales.byname = By name -locales.byvalue = By value -locales.showcorrect = Show properties that are present in all locales and have unique values everywhere -locales.showmissing = Show properties that are missing in some locales -locales.showsame = Show properties that have same values in different locales -locales.viewproperty = View in all locales -locales.viewing = Viewing property "{0}" -locales.addicon = Add Icon + +locales.info = 여기에서 특정 언어에 대한 언어 팩을 맵에 추가할 수 있습니다. 언어 팩에서 각 속성에는 이름과 값이 있습니다. 이러한 속성은 이름을 사용하여 월드 프로세서와 목표에서 사용할 수 있습니다. 텍스트 서식 지정(플레이스홀더를 실제 값으로 대체)을 지원합니다.\n\n[cyan]예시 속성:\n[]이름: [accent]timer[]\n값: [accent]예시 타이머, 남은 시간: {0}[]\n\n[cyan]사용법:\n[]목표의 텍스트로 설정: [accent]@timer\n\n[]월드 프로세서에서 Print:\n[accent]localeprint "timer"\nformat time\n[gray](여기서 시간은 별도로 계산된 변수) +locales.deletelocale = 이 언어 팩을 삭제하시겠습니까? +locales.applytoall = 모든 언어 팩에 변경 사항 적용 +locales.addtoother = 다른 언어 팩에 추가 +locales.rollback = 마지막으로 적용된 상태로 롤백 +locales.filter = 속성 필터 +locales.searchname = 이름 검색... +locales.searchvalue = 값 검색... +locales.searchlocale = 언어 팩 검색... +locales.byname = 이름으로 +locales.byvalue = 값으로 +locales.showcorrect = 모든 언어 팩에 존재하고 모든 곳에서 고유한 값을 갖는 속성을 표시 +locales.showmissing = 일부 언어 팩에서 누락된 속성 표시 +locales.showsame = 다른 언어 팩에서 동일한 값을 갖는 속성 표시 +locales.viewproperty = 모든 언어 팩에서 보기 +locales.viewing = 속성 보기 "{0}" +locales.addicon = 아이콘 추가 width = 너비: height = 높이: @@ -671,26 +680,29 @@ research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서 map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 다른 구역을 보고, 이동이 가능합니다. uncover = 지역 개방 configure = 초기자원 설정 + objective.research.name = 연구 objective.produce.name = 획득 objective.item.name = 획득한 자원 objective.coreitem.name = 코어 자원 objective.buildcount.name = 건설 횟수 -objective.unitcount.name = 기체 횟수 -objective.destroyunits.name = 기체 처치 +objective.unitcount.name = 유닛 횟수 +objective.destroyunits.name = 유닛 처치 objective.timer.name = 타이머 objective.destroyblock.name = 단일 블록 파괴 objective.destroyblocks.name = 다수 블록 파괴 objective.destroycore.name = 코어 파괴 objective.commandmode.name = 명령 모드 objective.flag.name = 플래그 + marker.shapetext.name = 도형과 문자 -marker.point.name = Point +marker.point.name = 포인트 marker.shape.name = 도형 marker.text.name = 문자 -marker.line.name = Line -marker.quad.name = Quad -marker.texture.name = Texture +marker.line.name = 라인 +marker.quad.name = 쿼드 +marker.texture.name = 텍스처 + marker.background = 배경 marker.outline = 외곽선 @@ -701,14 +713,15 @@ objective.destroyblocks = [accent]파괴: [lightgray]{0}[white]/{1}\n{2}[lightgr objective.item = [accent]획득: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.coreitem = [accent]코어로 운반:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.build = [accent]건설: [][lightgray]{0}[]개\n{1}[lightgray]{2} -objective.buildunit = [accent]기체 생산: [][lightgray]{0}[]기\n{1}[lightgray]{2} -objective.destroyunits = [accent]처치: [][lightgray]{0}[]기의 기체 +objective.buildunit = [accent]유닛 생산: [][lightgray]{0}[]기\n{1}[lightgray]{2} +objective.destroyunits = [accent]처치: [][lightgray]{0}[]기의 유닛 objective.enemiesapproaching = [accent]적이 [lightgray]{0}[]초 후에 도착합니다 objective.enemyescelating = [accent]적의 생산량이 증가하고 있습니다[lightgray]{0}[] -objective.enemyairunits = [accent]적의 공중 기체가 생산되고 있습니다[lightgray]{0}[] +objective.enemyairunits = [accent]적의 공중 유닛이 생산되고 있습니다[lightgray]{0}[] objective.destroycore = [accent]적의 코어를 파괴하세요 -objective.command = [accent]기체 조종 +objective.command = [accent]유닛 조종 objective.nuclearlaunch = [accent]⚠ 핵공격이 감지되었습니다: [lightgray]{0} + announce.nuclearstrike = [red]⚠ 핵 공습 감지 ⚠ loadout = 출격 @@ -743,6 +756,7 @@ weather.snowing.name = 눈 weather.sandstorm.name = 모래 폭풍 weather.sporestorm.name = 포자 폭풍 weather.fog.name = 안개 + campaign.playtime = \uf129 [lightgray]지역 플레이타임: {0} campaign.complete = [accent]축하드립니다.\n\n {0} 지역의 적이 패배하였습니다\n[lightgray] 마지막 지역을 점령하였습니다. @@ -787,11 +801,12 @@ threat.medium = 보통 threat.high = 높음 threat.extreme = 매우 높음 threat.eradication = 극한 -difficulty.casual = Casual -difficulty.easy = Easy -difficulty.normal = Normal -difficulty.hard = Hard -difficulty.eradication = Eradication + +difficulty.casual = 캐주얼 +difficulty.easy = 쉬움 +difficulty.normal = 보통 +difficulty.hard = 어려움 +difficulty.eradication = 근절 planets = 태양계 @@ -814,26 +829,26 @@ sector.fungalPass.name = 포자 지대 sector.biomassFacility.name = 유기물 합성 시설 sector.windsweptIslands.name = 폭풍의 격전지 sector.extractionOutpost.name = 자원 추출기지 -sector.facility32m.name = Facility 32 M -sector.taintedWoods.name = Tainted Woods -sector.infestedCanyons.name = Infested Canyons +sector.facility32m.name = 32 M 시설 +sector.taintedWoods.name = 오염된 산림 +sector.infestedCanyons.name = 감염된 깊은 협곡 sector.planetaryTerminal.name = 대행성 출격단지 sector.coastline.name = 해안선 sector.navalFortress.name = 해군 요새 -sector.polarAerodrome.name = Polar Aerodrome -sector.atolls.name = Atolls -sector.testingGrounds.name = Testing Grounds -sector.seaPort.name = Sea Port -sector.weatheredChannels.name = Weathered Channels -sector.mycelialBastion.name = Mycelial Bastion -sector.frontier.name = Frontier +sector.polarAerodrome.name = 극지 비행장 +sector.atolls.name = 환초 +sector.testingGrounds.name = 시험장 +sector.seaPort.name = 바다 항구 +sector.weatheredChannels.name = 풍화된 수로 +sector.mycelialBastion.name = 균사 요새 +sector.frontier.name = 국경 지방 sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지녔습니다. 적은 위협적이지 않지만, 자원도 풍부하진 않습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n이제 출격할 시간입니다! sector.frozenForest.description = 산과 가까운 이곳에도, 포자가 퍼졌습니다. 혹한의 추위조차 포자가 퍼지는 것을 억누를 수 없습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배워야 합니다. sector.saltFlats.description = 사막의 변두리에는 소금으로 이루어진 평원이 있습니다. 이곳에선 매우 적은 자원만 발견되었습니다.\n\n하지만 자원이 희소한 이곳에서도 적들의 요새가 포착되었습니다. 그들을 사막의 모래로 만들어버리세요! sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 탈환하여 강화 유리를 제련하고, 포탑과 드릴에 물을 공급하여 더 강력한 방어선을 구축하여야 합니다. sector.ruinousShores.description = 폐허를 지나서 나오는 해안선. 한때, 이곳에는 해안 방어기지가 있었습니다.\n많은 부분이 소실되었습니다. 기본적인 방어 시설을 제외한 모든 것이 고철 덩어리가 되었습니다. \n외부로 세력을 확장하기 위한 첫 발걸음으로, 무너진 시설을 재건하고 잃어버린 기술을 다시 회수하십시오. -sector.stainedMountains.description = 더 내륙에는 아직 포자에 오염되지 않은 산맥이 있습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n이곳은 더 강력한 적이 주둔하고 있습니다. 적이 가장 강력한 기체를 준비할 시간을 주지 마십시오. +sector.stainedMountains.description = 더 내륙에는 아직 포자에 오염되지 않은 산맥이 있습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n이곳은 더 강력한 적이 주둔하고 있습니다. 적이 가장 강력한 유닛을 준비할 시간을 주지 마십시오. sector.overgrowth.description = 이곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이곳에 전초기지를 설립했습니다. 대거를 생산해 적의 기지를 박살 내고 우리가 잃어버린 것을 되찾아야 합니다! sector.tarFields.description = 산지와 사막 사이에 있는 석유 생산지의 외곽이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 가공기술을 익히는 것이 도움이 될 것입니다. sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만, 사용 가능한 공간은 거의 없습니다. 적의 공격 주기가 길지만, 기지가 파괴될 위험이 높으니 가능한 한 빨리 방어시설을 구축하여야 합니다. @@ -844,8 +859,9 @@ sector.windsweptIslands.description = 육지에서 멀리 떨어진 이곳에는 sector.extractionOutpost.description = 적이 다른 지역에 자원을 보내기 위한 용도로 건설한 보급기지입니다.\n\n강력한 적들이 지키고 있는 지역을 공격하거나, 적에게 침공당한 지역을 효과적으로 수호하기 위해서는 우리도 이 수송 기술이 필요합니다. 적의 기지를 파괴하고, 그들의 수송 기술을 강탈하십시오. sector.impact0078.description = 이곳에는 태양계에 처음 진입한 우주 수송선의 잔해가 존재합니다.\n\n우주선이 파괴된 잔해에서 최대한 많은 자원을 회수하고, 손상되지 않은 그들의 기술을 획득하십시오. sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를 준비하십시오.\n\n적이 필사의 각오로 지키고 있는 이 해안 기지엔 우주에 코어를 발사할 수 있는 시설이 있습니다.\n\n해군을 생산하여 적을 신속하게 제거하고, 그들의 행성간 이동 기술을 강탈하십시오.\n\n[royal] 건투를 빕니다.[] -sector.coastline.description = 이 장소에서 해상 기체 기술의 잔재가 발견되었습니다. 적의 공격을 격퇴하고, 이 지역을 점령하고, 기술을 습득하십시오. +sector.coastline.description = 이 장소에서 해상 유닛 기술의 잔재가 발견되었습니다. 적의 공격을 격퇴하고, 이 지역을 점령하고, 기술을 습득하십시오. sector.navalFortress.description = 적은 자연적으로 요새화된 외딴 섬에 기지를 세웠습니다. 이 전초기지를 파괴하여 적의 발전된 함선 건조 기술을 습득하고 연구하십시오. + sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R @@ -856,6 +872,7 @@ sector.testingGrounds.description = WIP, map submission by dnx2019 sector.seaPort.description = WIP, map submission by inkognito626 sector.weatheredChannels.description = WIP, map submission by Skeledragon sector.mycelialBastion.description = WIP, map submission by Skeledragon + sector.onset.name = 시작 sector.aegis.name = 보호 sector.lake.name = 호수 @@ -873,22 +890,23 @@ sector.siege.name = 포위 sector.crossroads.name = 교차로 sector.karst.name = 카르스트 sector.origin.name = 근원 -sector.onset.description = 튜토리얼 지역. 아직 목표가 정해지지 않았습니다. 추가적인 정보를 제공받기 위해 잠시 대기해 주세요 -sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하여야 합니다. + +sector.onset.description = 에르키아 정복을 시작하세요. 자원을 모으고, 유닛을 생산하고, 기술 연구를 시작하세요. +sector.aegis.description = 이 구역에는 텅스텐 매장지가 있습니다.\n[accent]충격 드릴[]을 연구해 이 자원을 채굴하고 해당 지역의 적 기지를 파괴하세요. sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버링 유닛만이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하여야 합니다. -sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구축하고 가능한 한 빠르게 확장하여야 합니다.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 기체가 필요할 것입니다. -sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 기체가 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하세요. +sector.intersect.description = 정찰 결과 이 지역은 착륙 직후 여러 방향에서 공격받을 것으로 예측됩니다.\n방어선을 빠르게 구축하고 가능한 한 빠르게 확장하여야 합니다.\n이 지역의 험난한 지형을 위해서는 [accent]기계[] 유닛이 필요할 것입니다. +sector.atlas.description = 이 지역은 각기 다른 지형을 포함하고 있으며, 효과적으로 공격하기 위해서는 다양한 기체가 필요합니다.\n이곳에서 발견된 더 강력한 적의 기지를 통과하기 위해서는 상위 등급의 유닛이 필요할 수도 있습니다.\n[accent]전해조[]와 [accent]전차 재조립기[]를 연구하세요. sector.split.description = 이 지역에 최소한으로 존재하는 적 주둔군은 새로운 운송 기술을 시험하기에 완벽합니다. sector.basin.description = 이 지역에는 많은 수의 적이 확인되었습니다. 발판을 마련하기 위해 신속히 유닛을 생산하여 적의 기지를 무력화 해야 합니다. sector.marsh.description = 이 지역은 아르키사이트가 풍부하지만 분출구의 수는 한정적입니다.\n[accent]화학적 연소실[]을 건설하여 전력을 생산하세요. -sector.peaks.description = 이 지역의 산악 지형은 대부분의 기체를 무용지물로 만들었습니다. 비행 가능한 기체가 필요합니다.\n적의 방공망에 유의하십시오. 일부 시설은 지원 건물을 공격하여 무력화시킬 수 있습니다. -sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 기지가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]설금[]을 생산하여 포탑 [accent]어플릭트[]를 건설하세요. +sector.peaks.description = 이 지역의 산악 지형은 대부분의 유닛을 무용지물로 만들었습니다. 비행 가능한 유닛이 필요합니다.\n적의 방공망에 유의하십시오. 일부 시설은 지원 건물을 공격하여 무력화시킬 수 있습니다. +sector.ravine.description = 적의 중요한 이동 경로이긴 하지만, 해당 구역에선 적의 기지가 감지되지 않았습니다. 다양한 적군을 맞닥뜨릴 것으로 예상됩니다.\n[accent]서지 합금[]을 생산하여 포탑 [accent]어플릭트[]를 건설하세요. sector.caldera-erekir.description = 이 지역에서 탐지된 자원은 여러 섬에 분산되어 있습니다 .\n드론을 기반으로 한 운송수단을 연구하고 활용하세요. -sector.stronghold.description = 이 지역의 대규모 적 야영지에는 적들이 지키고 있는 상당한 양의 [accent]토륨[] 매장지가 있습니다.\n더 높은 등급의 기체와 포탑을 연구할 때 사용합니다. +sector.stronghold.description = 이 지역의 대규모 적 야영지에는 적들이 지키고 있는 상당한 양의 [accent]토륨[] 매장지가 있습니다.\n더 높은 등급의 유닛과 포탑을 연구할 때 사용합니다. sector.crevice.description = 적들은 이 지역에서 당신의 기지를 제거하기 위해 맹렬한 공격부대를 보낼 것입니다.\n[accent]탄화물[]과 [accent]열분해 발전기[]를 연구하는 것은 살아남기 위해 반드시 필요합니다. -sector.siege.description = 이 지역은 두 갈래의 공격을 강요하는 두 개의 평행 협곡이 특징입니다.\n더 강력한 전차 기체를 만들기 위한 능력을 얻기 위해 [accent]시아노겐[]을 연구하시오.\n주의: 적의 장거리 발사체가 감지되었습니다. 미사일은 충돌 전에 격추될 수 있습니다. -sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 위차하고 있는 것이 확인 되었으며 이로 인해 위해 다양한 기체가 필요합니다. \n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보아야 합니다. -sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]메타[]를 연구하세요. +sector.siege.description = 이 지역은 두 갈래의 공격을 강요하는 두 개의 평행 협곡이 특징입니다.\n더 강력한 전차 유닛을 만들기 위한 능력을 얻기 위해 [accent]시아노겐[]을 연구하시오.\n주의: 적의 장거리 발사체가 감지되었습니다. 미사일은 충돌 전에 격추될 수 있습니다. +sector.crossroads.description = 이 지역의 적 기지는 다양한 지형에 위차하고 있는 것이 확인 되었으며 이로 인해 다양한 유닛이 필요합니다. \n또한, 일부 기지는 보호막으로 보호되고 있습니다. 그들이 어떻게 전력을 공급받는지 알아보아야 합니다. +sector.karst.description = 이 지역은 자원이 풍부하지만, 새로운 코어가 착륙하면 적에게 공격을 받을 것입니다.\n자원의 이점을 활용하고 [accent]위상 섬유[]를 연구하세요. sector.origin.description = 상당한 적이 존재하는 마지막 지역입니다.\n 모든 연구를 마쳤으니 오직 모든 적의 코어를 파괴하는 데만 집중하세요. status.burning.name = 발화 @@ -974,13 +992,13 @@ stat.repairspeed = 수리 속도 stat.weapons = 무기 stat.bullet = 탄환 stat.moduletier = 모듈 등급 -stat.unittype = Unit Type +stat.unittype = 유닛 유형 stat.speedincrease = 속도 증가 stat.range = 사거리 stat.drilltier = 채굴 가능 stat.drillspeed = 기본 채굴 속도 stat.boosteffect = 버프 효과 -stat.maxunits = 최대 기체 수 +stat.maxunits = 최대 유닛 수 stat.health = 체력 stat.armor = 방어력 stat.buildtime = 건설 시간 @@ -1011,7 +1029,7 @@ stat.abilities = 능력 stat.canboost = 이륙 가능 stat.flying = 비행 stat.ammouse = 탄약 사용 -stat.ammocapacity = Ammo Capacity +stat.ammocapacity = 탄약 용량 stat.damagemultiplier = 피해량 배수 stat.healthmultiplier = 체력 배수 stat.speedmultiplier = 이동속도 배수 @@ -1022,47 +1040,48 @@ stat.immunities = 상태이상 면역 stat.healing = 회복량 ability.forcefield = 보호막 필드 -ability.forcefield.description = Projects a force shield that absorbs bullets +ability.forcefield.description = 탄약을 흡수하는 보호막을 만들어냄 ability.repairfield = 수리 필드 -ability.repairfield.description = Repairs nearby units +ability.repairfield.description = 근처 유닛을 수리함 ability.statusfield = 상태이상 필드 -ability.statusfield.description = Applies a status effect to nearby units +ability.statusfield.description = 근처 유닛에 상태 효과를 제공함 ability.unitspawn = 공장 -ability.unitspawn.description = Constructs units +ability.unitspawn.description = 유닛을 생산함 ability.shieldregenfield = 방어막 복구 필드 -ability.shieldregenfield.description = Regenerates shields of nearby units +ability.shieldregenfield.description = 근처 유닛의 방어막을 재생성함 ability.movelightning = 가속 전격 -ability.movelightning.description = Releases lightning while moving -ability.armorplate = Armor Plate -ability.armorplate.description = Reduces damage taken while shooting -ability.shieldarc = 방어막 아크 -ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets +ability.movelightning.description = 이동하면서 번개를 방출함 +ability.armorplate = 장갑판 +ability.armorplate.description = 사격 시 받는 피해가 감소됨 +ability.shieldarc = 호 보호막 +ability.shieldarc.description = 탄약을 흡수하는 호 형태의 보호막을 만들어냄 ability.suppressionfield = 재생성 억제 필드 -ability.suppressionfield.description = Stops nearby repair buildings +ability.suppressionfield.description = 근처 수리 건물을 잠깐동안 억제함 ability.energyfield = 에너지 필드 -ability.energyfield.description = Zaps nearby enemies -ability.energyfield.healdescription = Zaps nearby enemies and heals allies -ability.regen = Regeneration -ability.regen.description = Regenerates own health over time -ability.liquidregen = Liquid Absorption -ability.liquidregen.description = Absorbs liquid to heal itself -ability.spawndeath = Death Spawns -ability.spawndeath.description = Releases units on death -ability.liquidexplode = Death Spillage -ability.liquidexplode.description = Spills liquid on death -ability.stat.firingrate = [stat]{0}/sec[lightgray] firing rate -ability.stat.regen = [stat]{0}[lightgray] health/sec -ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse -ability.stat.shield = [stat]{0}[lightgray] shield -ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed -ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit -ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown -ability.stat.maxtargets = [stat]{0}[lightgray] max targets -ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] same type repair amount -ability.stat.damagereduction = [stat]{0}%[lightgray] damage reduction -ability.stat.minspeed = [stat]{0} tiles/sec[lightgray] min speed -ability.stat.duration = [stat]{0} sec[lightgray] duration -ability.stat.buildtime = [stat]{0} sec[lightgray] build time +ability.energyfield.description = 근처 적을 감전시킴 +ability.energyfield.healdescription = 근처 적에게 전기 충격을 주고 아군을 치료함 +ability.regen = 재생 +ability.regen.description = 시간이 지남에 따라 스스로 체력을 재생함 +ability.liquidregen = 액체 흡수 +ability.liquidregen.description = 액체를 흡수하여 스스로를 치유함 +ability.spawndeath = 스폰 죽음 +ability.spawndeath.description = 사망 시 유닛을 방출함 +ability.liquidexplode = 유출 죽음 +ability.liquidexplode.description = 사망 시 액체를 쏟음 + +ability.stat.firingrate = [stat]{0}/초[lightgray] 발사 속도 +ability.stat.regen = [stat]{0}[lightgray] 체력/초 +ability.stat.pulseregen = [stat]{0}[lightgray] 체력/파동 +ability.stat.shield = [stat]{0}[lightgray] 실드 +ability.stat.repairspeed = [stat]{0}/초[lightgray] 수리 속도 +ability.stat.slurpheal = [stat]{0}[lightgray] 체력/액체 단위 +ability.stat.cooldown = [stat]{0} 초[lightgray] 쿨타임 +ability.stat.maxtargets = [stat]{0}[lightgray] 최대 목표 +ability.stat.sametypehealmultiplier = [stat]{0}%[lightgray] 동일 유형 회복량 +ability.stat.damagereduction = [stat]{0}%[lightgray] 피해 감소 +ability.stat.minspeed = [stat]{0} tiles/초[lightgray] 최소 속도 +ability.stat.duration = [stat]{0} 초[lightgray] 지속 시간 +ability.stat.buildtime = [stat]{0} 초[lightgray] 건설 시간 bar.onlycoredeposit = 코어에만 투입할 수 있습니다 bar.drilltierreq = 더 좋은 드릴 필요 @@ -1148,8 +1167,8 @@ category.items = 자원 category.crafting = 입력/출력 category.function = 기능 category.optional = 선택적 향상 -setting.alwaysmusic.name = Always Play Music -setting.alwaysmusic.description = When enabled, music will always play on loop in-game.\nWhen disabled, it only plays at random intervals. +setting.alwaysmusic.name = 항상 음악 재생 +setting.alwaysmusic.description = 이 기능을 활성화하면, 게임 내에서 음악이 항상 반복 재생됩니다.\n비활성화하면, 무작위 간격으로만 재생됩니다. setting.skipcoreanimation.name = 코어 발사/착륙 애니메이션 건너뛰기 setting.landscape.name = 가로화면 잠금 setting.shadows.name = 그림자 @@ -1161,7 +1180,7 @@ setting.backgroundpause.name = 백그라운드에서 일시정지 setting.buildautopause.name = 건설 자동 일시정지 setting.doubletapmine.name = 연속 터치로 채광 setting.commandmodehold.name = 키를 누른 상태로 명령 -setting.distinctcontrolgroups.name = Limit One Control Group Per Unit +setting.distinctcontrolgroups.name = 유닛당 하나의 제어 그룹으로 제한 setting.modcrashdisable.name = 로딩 중 충돌 시 모드 비활성화 setting.animatedwater.name = 액체 애니메이션 효과 setting.animatedshields.name = 보호막 애니메이션 효과 @@ -1209,7 +1228,7 @@ setting.sfxvol.name = 효과음 크기 setting.mutesound.name = 소리 끄기 setting.crashreport.name = 익명으로 오류 보고서 자동 전송 setting.savecreate.name = 자동 저장 활성화 -setting.steampublichost.name = Public Game Visibility +setting.steampublichost.name = 공개 게임 가시성 setting.playerlimit.name = 플레이어 제한 setting.chatopacity.name = 채팅창 투명도 setting.lasersopacity.name = 전선 투명도 @@ -1229,12 +1248,12 @@ keybind.title = 조작키 설정 keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다. category.general.name = 일반 category.view.name = 보기 -category.command.name = Unit Command +category.command.name = 유닛 지휘 category.multiplayer.name = 멀티플레이어 category.blocks.name = 블록 선택 placement.blockselectkeys = \n[lightgray]단축키: [{0}, keybind.respawn.name = 리스폰 -keybind.control.name = 기체 제어 +keybind.control.name = 유닛 제어 keybind.clear_building.name = 설계도 초기화 keybind.press = 키를 누르세요... keybind.press.axis = 마우스 휠 또는 키를 누르세요... @@ -1247,14 +1266,16 @@ keybind.mouse_move.name = 커서를 따라서 이동 keybind.pan.name = 팬 보기 keybind.boost.name = 이륙 keybind.command_mode.name = 명령 모드 -keybind.command_queue.name = 유닛 명령 Queue +keybind.command_queue.name = 유닛 명령 대기 keybind.create_control_group.name = 컨트롤 그룹 만들기 keybind.cancel_orders.name = 명령 취소 + keybind.unit_stance_shoot.name = 유닛 명령: 사격 keybind.unit_stance_hold_fire.name = 유닛 명령: 사격 중지 keybind.unit_stance_pursue_target.name = 유닛 명령: 타겟 추격 keybind.unit_stance_patrol.name = 유닛 명령: 정찰 keybind.unit_stance_ram.name = 유닛 명령: 돌격 + keybind.unit_command_move.name = 유닛 제어: 이동 keybind.unit_command_repair.name = 유닛 제어: 수리 keybind.unit_command_rebuild.name = 유닛 제어: 재건 @@ -1265,7 +1286,8 @@ keybind.unit_command_load_units.name = 유닛 제어: 유닛 적재 keybind.unit_command_load_blocks.name = 유닛 제어: 블록 적재 keybind.unit_command_unload_payload.name = 유닛 제어: 화물 투하 keybind.unit_command_enter_payload.name = 유닛 제어: 화물 건물에 착륙/진입 -keybind.unit_command_loop_payload.name = Unit Command: Loop Unit Transfer +keybind.unit_command_loop_payload.name = 유닛 제어: 유닛 반복 운반 + keybind.rebuild_select.name = 지역 재건 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 @@ -1292,8 +1314,8 @@ keybind.select.name = 선택/공격 keybind.diagonal_placement.name = 대각선 설치 keybind.pick.name = 블록 선택 keybind.break_block.name = 블록 파괴 -keybind.select_all_units.name = 전체 기체 선택 -keybind.select_all_unit_factories.name = 전체 기체 공장 선택 +keybind.select_all_units.name = 전체 유닛 선택 +keybind.select_all_unit_factories.name = 전체 유닛 공장 선택 keybind.deselect.name = 선택해제 keybind.pickupCargo.name = 화물 집기 keybind.dropCargo.name = 화물 내려놓기 @@ -1316,7 +1338,7 @@ keybind.chat_history_prev.name = 이전 채팅 기록 keybind.chat_history_next.name = 다음 채팅 기록 keybind.chat_scroll.name = 채팅 스크롤 keybind.chat_mode.name = 채팅 모드 변경 -keybind.drop_unit.name = 기체 내려놓기 +keybind.drop_unit.name = 유닛 내려놓기 keybind.zoom_minimap.name = 미니맵 확대 mode.help.title = 모드 설명 mode.survival.name = 생존 @@ -1329,9 +1351,9 @@ mode.pvp.description = 다른 플레이어와 현장에서 싸우세요.\n[gray] mode.attack.name = 공격 mode.attack.description = 적의 기지를 파괴하세요.\n[gray]플레이하려면 맵에 적 코어가 필요합니다. mode.custom = 사용자 정의 규칙 + rules.invaliddata = 잘못된 클립보드 데이터 입니다. rules.hidebannedblocks = 금지된 블록 숨기기 - rules.infiniteresources = 무한 자원 rules.onlydepositcore = 오직 코어에만 투입 가능 rules.derelictrepair = 잔해 블록 수리 허 @@ -1341,18 +1363,18 @@ rules.disableworldprocessors = 월드 프로세서 비활성화 rules.schematic = 설계도 허용 rules.wavetimer = 시간 제한이 있는 단계 rules.wavesending = 단계 넘김 -rules.allowedit = Allow Editing Rules -rules.allowedit.info = When enabled, the player can edit rules in-game via the button in the bottom left corner of the Pause menu. -rules.alloweditworldprocessors = Allow Editing World Processors -rules.alloweditworldprocessors.info = When enabled, world logic blocks can be placed and edited even outside the editor. +rules.allowedit = 규칙 편집 허용 +rules.allowedit.info = 이 기능을 활성화하면, 플레이어는 일시 정지 메뉴의 왼쪽 하단에 있는 버튼을 통해 게임 내에서 규칙을 편집할 수 있습니다. +rules.alloweditworldprocessors = 월드 프로세서 편집 허용 +rules.alloweditworldprocessors.info = 이 기능을 활성화하면 편집기 외부에서도 월드 로직 블록을 배치하고 편집할 수 있습니다. rules.waves = 단계 -rules.airUseSpawns = Air units use spawn points +rules.airUseSpawns = 공중 유닛 스폰 지점 사용 rules.attack = 공격 모드 rules.buildai = 기지 건설 AI rules.buildaitier = 건설 AI 등급 rules.rtsai = RTS AI -rules.rtsai.campaign = RTS Attack AI -rules.rtsai.campaign.info = In attack maps, makes units group up and attack player bases in a more intelligent manner. +rules.rtsai.campaign = RTS 공격 AI +rules.rtsai.campaign.info = 공격 맵에서는 유닛을 그룹화하여 더욱 지능적인 방식으로 플레이어 기지를 공격합니다. rules.rtsminsquadsize = 최소 부대 규모 rules.rtsmaxsquadsize = 최대 부대 규모 rules.rtsminattackweight = 최소 공격 중량 @@ -1370,7 +1392,7 @@ rules.unitdamagemultiplier = 기체 피해량 배수 rules.unitcrashdamagemultiplier = 기체 파손 피해량 배수 rules.solarmultiplier = 태양광 전력 배수 rules.unitcapvariable = 코어 기체수 제한 추가 -rules.unitpayloadsexplode = Carried Payloads Explode With The Unit +rules.unitpayloadsexplode = 들어올린 화물 유닛과 함께 폭발 rules.unitcap = 기본 기체 제한 rules.limitarea = 맵 영역 제한 rules.enemycorebuildradius = 적 코어 건설금지 범위:[lightgray] (타일) @@ -1380,7 +1402,7 @@ rules.buildcostmultiplier = 건설 비용 배수 rules.buildspeedmultiplier = 건설 속도 배수 rules.deconstructrefundmultiplier = 철거 환불 배수 rules.waitForWaveToEnd = 한 단계가 끝날때까지 대기 -rules.wavelimit = Map Ends After Wave +rules.wavelimit = 특정 단계 이후 맵 종료 rules.dropzoneradius = 스폰 구역 범위: [lightgray] (타일) rules.unitammo = 기체 탄약 필요 rules.enemyteam = 적 팀 @@ -1395,9 +1417,9 @@ rules.title.teams = 팀 rules.title.planet = 행성 rules.lighting = 조명 표시 rules.fog = 전장의 안개 -rules.invasions = Enemy Sector Invasions -rules.showspawns = Show Enemy Spawns -rules.randomwaveai = Unpredictable Wave AI +rules.invasions = 적 지역 침공 +rules.showspawns = 적 스폰 표시 +rules.randomwaveai = 무작위 단계 AI rules.fire = 방화 허용 rules.anyenv = <모두> rules.explosions = 블록/기체 폭발 피해 @@ -1406,7 +1428,8 @@ rules.weather = 날씨 추가 rules.weather.frequency = 빈도: rules.weather.always = 항상 rules.weather.duration = 지속 시간: -rules.randomwaveai.info = Makes units spawned in waves target random structures instead of directly attacking the core or power generators. + +rules.randomwaveai.info = 단계에 생성된 유닛이 코어 또는 전력 생산기를 공격하는 대신 무작위 구조물을 공격하게 됩니다. rules.placerangecheck.info = 플레이어가 적 건물 근처에 건설 불가 구역을 생성합니다. 만일, 플레이어가 포탑을 건설하고자 할 경우 반경이 증가되어 적 건물이 포탑의 사정거리에 닿지 않게됩니다. rules.onlydepositcore.info = 코어를 제외한 어떠한 건물에도 자원을 투하할 수 없게 만듭니다. @@ -1417,6 +1440,7 @@ content.block.name = 블록 content.status.name = 상태 이상 content.sector.name = 지역 content.team.name = 파벌 + wallore = (벽) item.copper.name = 구리 @@ -1549,8 +1573,8 @@ block.graphite-press.name = 흑연 압축기 block.multi-press.name = 다중 압축기 block.constructing = {0} [lightgray](제작중) block.spawn.name = 적 소환지점 -block.remove-wall.name = Remove Wall -block.remove-ore.name = Remove Ore +block.remove-wall.name = 벽 제거 +block.remove-ore.name = 광석 제거 block.core-shard.name = 코어: 조각 block.core-foundation.name = 코어: 기반 block.core-nucleus.name = 코어: 핵심 @@ -1630,7 +1654,7 @@ block.inverted-sorter.name = 반전 필터 block.message.name = 메모 블록 block.reinforced-message.name = 보강된 메모 블록 block.world-message.name = 월드 메모 블록 -block.world-switch.name = World Switch +block.world-switch.name = 월드 스위치 block.illuminator.name = 조명 block.overflow-gate.name = 포화 필터 block.underflow-gate.name = 불포화 필터 @@ -1746,6 +1770,8 @@ block.payload-unloader.name = 화물 언로더 block.payload-unloader.description = 들어간 블록에서 액체와 아이템을 가져옵니다. block.heat-source.name = 열 공급기 block.heat-source.description = 엄청난 양의 열을 출력합니다. 샌드박스 전용. + +#Erekir block.empty.name = 공백 block.rhyolite-crater.name = 유문암 구덩이 block.rough-rhyolite.name = 거친 유문암 @@ -1904,6 +1930,7 @@ block.logic-display.name = 로직 디스플레이 block.large-logic-display.name = 대형 로직 디스플레이 block.memory-cell.name = 메모리 셀 block.memory-bank.name = 메모리 보관소 + team.malis.name = 말리스 team.crux.name = 크럭스 team.sharded.name = 샤디드 @@ -1915,20 +1942,20 @@ hint.skip = 넘기기 hint.desktopMove = [accent][[WASD][] 키를 이용해 움직이십시오. hint.zoom = [accent]스크롤[]을 통해 화면 확대/축소가 가능합니다. hint.desktopShoot = [accent][[좌클릭][]으로 발사할 수 있습니다. -hint.depositItems = 자원을 코어로 옮기려면, 기체의 자원을 코어로 끌어다놓으십시오. -hint.respawn = 기체를 떠나려면 [accent][[V][]를 누르십시오. -hint.respawn.mobile = 기체 혹은 포탑을 조종할 수 있습니다. 기체를 떠나려면 [accent]왼쪽 위의 아바타를 누르십시오.[] +hint.depositItems = 자원을 코어로 옮기려면, 유닛의 자원을 코어로 끌어다놓으십시오. +hint.respawn = 유닛을 떠나려면 [accent][[V][]를 누르십시오. +hint.respawn.mobile = 유닛 혹은 포탑을 조종할 수 있습니다. 유닛을 떠나려면 [accent]왼쪽 위의 아바타를 누르십시오.[] hint.desktopPause = 게임을 일시 정지/재개하기 위해 [accent][[Space][]를 누르십시오. hint.breaking = 블록을 부수려면 [accent]우클릭[]한 후 드래그하십시오. -hint.breaking.mobile = 블록을 부수려면 오른쪽 아래의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화하십시오.\n\n손가락으로 누른 채로 끌어서 해체 범위를 지정하십시오. +hint.breaking.mobile = 블록을 부수려면 오른쪽 하단의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화하십시오.\n\n손가락으로 누른 채로 끌어서 해체 범위를 지정하십시오. hint.blockInfo = 블록 정보를 확인하려면, [accent]건설 목록[]에서 블록을 선택한 후 오른쪽의 [accent][[?][] 버튼을 누르십시오. hint.derelict = [accent]버려진[] 구조물은 더 이상 작동하지 않는 오래된 기지의 부서진 잔해입니다.\n\n이 구조물은 [accent]철거[]하여 자원을 얻을 수 있습니다. hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을 누르십시오. hint.research.mobile = 새 기술을 연구하려면 \ue88c [accent]메뉴[] 아래의 \ue875 [accent]연구[]버튼을 누르십시오. -hint.unitControl = 아군 기체와 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른 채로 [accent]클릭[] 하십시오. -hint.unitControl.mobile = 아군 기체와 포탑을 조종하려면 해당 개체를 [accent]빠르게 두 번 누르십시오[]. -hint.unitSelectControl = 기체를 조종하려면, [accent]왼쪽 shift[]를 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 누르거나 끌어서 기체를 선택합니다. [accent]우클릭[]으로 기체에게 이동과 공격을 명령할 수 있습니다. -hint.unitSelectControl.mobile = 기체를 조종하려면, 왼쪽 아래에 있는 [accent]명령[]을 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 길게 누르거나 끌어서 기체를 선택합니다. 눌러서 기체에게 이동과 공격을 명령할 수 있습니다. +hint.unitControl = 아군 유닛과 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른 채로 [accent]클릭[] 하십시오. +hint.unitControl.mobile = 아군 유닛과 포탑을 조종하려면 해당 개체를 [accent]빠르게 두 번 누르십시오[]. +hint.unitSelectControl = 유닛을 조종하려면, [accent]왼쪽 shift[]를 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 누르거나 끌어서 유닛을 선택합니다. [accent]우클릭[]으로 유닛에게 이동과 공격을 명령할 수 있습니다. +hint.unitSelectControl.mobile = 유닛을 조종하려면, 왼쪽 아래에 있는 [accent]명령[]을 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 길게 누르거나 끌어서 유닛을 선택합니다. 눌러서 유닛에게 이동과 공격을 명령할 수 있습니다. hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다. hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다. hint.schematicSelect = [accent][[F][]를 누른 채로 끌어서 복사하고 붙여넣을 블록을 선택하십시오. \n\n [accent][[마우스 휠][]을 누르면 한 개의 블록만 복사할 수 있습니다. @@ -1936,55 +1963,57 @@ hint.rebuildSelect = [accent][[B][]를 누르고 끌어서 파괴된 블록 흔 hint.rebuildSelect.mobile = 복사버튼 \ue874 을 선택하시고, 재건축 버튼 \ue80f 을 탭 하신 뒤, 드래그 하여 블록 흔적을 선택하세요. 선택된 블록은 자동으로 복구됩니다. hint.conveyorPathfind = [accent][[왼쪽 Ctrl][]을 누른 채로 컨베이어를 대각선으로 끌면 길을 자동으로 만들어줍니다. hint.conveyorPathfind.mobile = \ue844 [accent]대각 모드[]를 활성화하고 컨베이어를 대각선으로 끌면 길을 자동으로 찾아줍니다. -hint.boost = [accent][[왼쪽 Shift][]를 눌러 탑승한 기체로 장애물을 넘을 수 있습니다. \n\n 일부 지상 기체만 이륙할 수 있습니다. +hint.boost = [accent][[왼쪽 Shift][]를 눌러 탑승한 기체로 장애물을 넘을 수 있습니다. \n\n 일부 지상 유닛만 이륙할 수 있습니다. hint.payloadPickup = 작은 블록이나 기체를 집으려면 [accent][[[]를 누르십시오. -hint.payloadPickup.mobile = 작은 블록이나 기체를 집으려면 [accent]잠깐 누르십시오[]. +hint.payloadPickup.mobile = 작은 블록이나 유닛을 집으려면 [accent]잠깐 누르십시오[]. hint.payloadDrop = 다시 내려놓으려면 [accent]][]를 누르십시오. hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화면을 잠깐 누르십시오[]. hint.waveFire = [accent]파도[] 포탑에 물을 공급하면 주변에 발생한 화재를 자동으로 진압합니다. hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]전력 노드[]를 활용하십시오. -hint.guardian = [accent]수호자[] 기체는 방어력이 존재합니다. [accent]구리[]와 [accent]납[]처럼 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n수호자를 제거하려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오. +hint.guardian = [accent]수호자[] 유닛은 높은 체력과 방어력을 가졌습니다. [accent]구리[]와 [accent]납[]처럼 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n수호자를 제거하려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오. hint.coreUpgrade = 코어는 [accent]상위 코어를 위에 설치[]하여 업그레이드할 수 있습니다.\n\n [accent]기반[] 코어를 [accent]조각[] 코어 위에 설치하십시오. 주변에 장애물이 없는지 확인하십시오. hint.presetLaunch = [accent]얼어붙은 숲[]과 같은 회색[accent]캠페인 지역[]은 어디에서나 출격해서 올 수 있습니다. 주변 지역을 점령하지 않아도 됩니다.\n\n이와 같은 [accent]네임드 지역[]들은 [accent]선택적[]입니다. hint.presetDifficulty = 이 지역은 [scarlet]위험도가 높은[] 지역입니다.\n적절한 기술과 준비 없이 이런 지역들로 출격하는건 [accent]추천하지 않습니다[]. hint.coreIncinerate = 코어가 자원으로 가득 찬 후에 받는 모든 자원들은 [accent]소각[]될 것입니다. -hint.factoryControl = 기체 공장의 [accent]출력 목적지[]를 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 마우스 오른쪽 버튼으로 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다. -hint.factoryControl.mobile = 기체 공장의 [accent]출력 목적지[]를 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 눌러서 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다. -gz.mine = 주변 바닥에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 눌러서 채굴을 시작하세요. -gz.mine.mobile = 주변 바닥에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 눌러서 채굴을 시작하세요. -gz.research = \ue875 연구 기록을 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 오른쪽 아래에 있는 메뉴에서 선택하세요.\n구리조각 위를 눌러서 배치합니다. -gz.research.mobile = \ue875 연구 기록을 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 오른쪽 아래에 있는 메뉴에서 선택하세요.\n구리조각 위를 눌러서 배치합니다.\n\n오른쪽 아래에서 \ue800 [accent]체크마크[]를 눌러 확정지으세요. -gz.conveyors = \uf896 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n클릭하고 끌어서 컨베이어를 길게 배치하세요.\n[accent]스크롤[]해서 방향을 회전할 수 있습니다. -gz.conveyors.mobile = \uf896 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n손가락을 길게 누르고 끌어서 컨베이어를 길게 배치하세요. -gz.drills = 채굴 작업을 확장하세요.\n기계식 드릴을 더 배치하세요.\n구리 100개 채굴하기. -gz.lead = \uf837 [accent]납[]은 일반적으로 사용되는 또 다른 자원입니다.\n납을 채굴하기 위한 드릴을 설치하세요. +hint.factoryControl = 유닛 공장의 [accent]출력 목적지[]를 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 마우스 오른쪽 버튼으로 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다. +hint.factoryControl.mobile = 유닛 공장의 [accent]출력 목적지[]를 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 눌러서 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다. + +gz.mine = 주변 땅에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 클릭해서 채굴을 시작하세요. +gz.mine.mobile = 주변 땅에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 눌러서 채굴을 시작하세요. +gz.research = 오른쪽 하단에 \ue875 연구 기록을 클릭하거나 [J]키를 눌러 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 연구 기록을 닫아서 오른쪽 아래에 있는 메뉴에서 해당 드릴을 선택하세요.\n구리 광석 위에 클릭해서 배치합니다.\n(만약 바로 건설되는게 불편하다면, 설정에서 건설 자동 일시정지를 킬 수 있습니다.)[] +gz.research.mobile = 왼쪽 상단에 \ue875 연구 기록을 눌러 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 연구 메뉴를 닫아서 오른쪽 아래에 있는 블록 메뉴에서 해당 드릴을 선택하세요.\n구리 광석 위에 눌러서 배치합니다.\n\n오른쪽 아래 \ue800 [accent]체크마크[]를 눌러 확정지으세요. +gz.conveyors = \uf896 이제 연구 기록을 다시 열어 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n컨베이어를 선택하고, 클릭하고 드래그해서 컨베이어를 길게 배치하세요.\n[accent]스크롤[]로 방향을 회전할 수 있습니다. +gz.conveyors.mobile = \uf896 이제 연구 기록을 다시 열어 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n손가락을 길게 누르고 끌어서 컨베이어를 길게 배치하세요. +gz.drills = 채굴 작업을 확장하세요.\n기계식 드릴을 더 배치하세요.\n[accent]새 목표:[] 드릴로 구리를 채굴하고 컨베이어를 이용해 [accent]구리 100개[]를 코어로 운반하기. +gz.lead = \uf837 [accent]납[]은 일반적으로 사용되는 또 다른 자원입니다.\n납을 채굴하기 위한 드릴을 건설하세요. gz.moveup = \ue804 추가 목표를 위해 위로 이동하세요. -gz.turrets = 코어를 보호하기 위해 \uf861 [accent]듀오[] 포탑을 연구하고 2개를 설치하세요.\n듀오 포탑은 컨베이어로부터 \uf838 [accent]탄약[]을 공급받아야 합니다. +gz.turrets = 연구하는 방법은 얼추 익히셨다고 생각하니 이제 이 게임의 핵심인 '코어'를 보호하기 위해 \uf861 [accent]듀오[] 포탑을 연구하고 2개를 설치하세요.\n듀오 포탑은 컨베이어로부터 \uf838 [accent]탄약[]을 공급받아야 합니다. gz.duoammo = 컨베이어를 활용하여, 듀오 포탑에 [accent]구리[]를 공급하세요. gz.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf8ae [accent]구리 벽[]을 배치하세요. gz.defend = 적이 다가옵니다, 방어 태세를 갖추세요. -gz.aa = 비행 기체는 기본 포탑으로는 쉽게 처리할 수 없습니다.\n\uf860 [accent]스캐터[] 포탑은 훌륭한 대공 방어를 자랑하지만, 탄환으로 \uf837 [accent]납[]이 필요합니다. +gz.aa = 비행 유닛은 기본 포탑으로는 쉽게 처리할 수 없습니다.\n\uf860 [accent]스캐터[] 포탑은 훌륭한 대공 방어를 자랑하지만, 탄환으로 \uf837 [accent]납[]이 필요합니다. gz.scatterammo = 컨베이어를 활용하여,스캐터 포탑에 [accent]납[]을 공급하세요. gz.supplyturret = [accent]보급 포탑 gz.zone1 = 이건 적의 착륙 지점입니다. gz.zone2 = 반경에 세워진 모든 것은 단계가 시작되면 파괴됩니다. gz.zone3 = 단계가 지금 시작됩니다.\n준비하세요. -gz.finish = 포탑을 더 건설하고, 자원을 더 채굴하고,\n그리고 모든 단계를 막아내어 [accent]지역을 점령[]하세요. -onset.mine = 벽에 붙어있는 \uf748 [accent]베릴륨[]을 클릭하여 채굴하세요.\n\n[accent][[WASD]로 움직이세요. +gz.finish = 포탑을 더 건설하고, 자원을 더 채굴하고,\n그리고 모든 단계를 막아내어 [accent]지역을 점령[]하세요. 이것으로 튜토리얼을 마칩니다. 행운을 빕니다. + +onset.mine = 벽에 붙어있는 \uf748 [accent]베릴륨[]을 클릭하여 채굴하세요.\n\n[accent][WASD]로 움직이세요. onset.mine.mobile = 벽에 붙어있는 \uf748 [accent]베릴륨[]을 눌러서 채굴하세요. -onset.research = \ue875 연구 기록을 여세요.\n \uf73e [accent]터빈 응결기[]를 연구하고, 구덩이 위에 배치하세요.\n[accent]전력[]을 생산합니다. -onset.bore = \uf741 [accent]플라즈마 채광기[]를 연구하고 배치하세요.\n벽으로부터 자동으로 자원을 채굴합니다. +onset.research = \ue875 연구 기록을 여세요.\n \uf73e [accent]터빈 응결기[]를 연구하고, 연구 기록을 다시 닫은 다음, 구덩이 위에 배치하세요.\n[accent]전력[]을 생산합니다. +onset.bore = 다시 연구 기록을 열어 \uf741 [accent]플라즈마 채광기[]를 연구하고 배치하세요.\n벽으로부터 자동으로 자원을 채굴합니다. onset.power = [accent]전력[]을 플라즈마 채광기로 전달하기 위해선, \uf73d [accent]빔 노드[]를 연구하고 배치하세요.\n터빈 응결기와 플라즈마 채광기를 연결하세요. onset.ducts = \uf799 [accent]도관[]을 연구하고 배치하여 플라즈마 채광기에서 채굴한 자원을 코어로 운반하세요.\n클릭하고 끌어서 도관을 길게 연결하세요.\n[accent]스크롤해서[]해서 방향을 회전할 수 있습니다. onset.ducts.mobile = \uf799 [accent]도관[]을 연구하고 배치하여 플라즈마 채광기에서 채굴한 자원을 코어로 운반하세요.\n손가락을 길게 누르고 끌어서 도관을 길게 연결하세요. -onset.moremine = 채굴 작업을 확장하세요.\n더 많은 플라즈마 채광기를 배치하고 빔 노드와 덕트를 사용하여 보조하세요.\n베릴륨 200개 채굴하기. +onset.moremine = 채굴 작업을 확장하세요.\n더 많은 플라즈마 채광기를 배치하고 빔 노드와 도관을 사용하여 보조하세요.\n베릴륨 200개 채굴하기. onset.graphite = 더 복잡한 건물은 \uf835 [accent]흑연[]이 필요합니다.\n흑연을 채굴하는 플라즈마 채광기를 배치하세요. onset.research2 = [accent]공장[]을 연구할 시간입니다.\n \uf74d [accent]벽 분쇄기[]와 \uf779 [accent]실리콘 아크 화로[]를 연구하세요. onset.arcfurnace = 아크 화로는 \uf834 [accent]모래[]와 \uf835 [accent]흑연[]을 가공하여 \uf82f [accent]실리콘[]을 생산합니다.\n[accent]전력[] 또한 필수입니다. onset.crusher = \uf74d [accent]벽 분쇄기[]를 사용하여 모래를 채굴하세요. -onset.fabricator = [accent]기체[]는 지도를 정찰하거나, 건물을 보호하거나, 적을 공격할 때 활용할 수 있습니다. \uf6a2 [accent]전차 재조립기[]를 연구하고 배치하세요. -onset.makeunit = 기체를 생산하세요.\n"?" 버튼을 눌러 선택한 공장의 요구사항을 확인할 수 있습니다. -onset.turrets = 기체는 유용하지만, [accent]포탑[]은 사용하기에 따라 더 나은 방어 성능을 보여줍니다.\n \uf6eb [accent]브리치[] 포탑을 배치하세요.\n포탑은 \uf748 [accent]탄약[]이 필요합니다. +onset.fabricator = [accent]유닛[]은 맵을 정찰하거나, 건물을 보호하거나, 적을 공격할 때 활용할 수 있습니다. \uf6a2 [accent]전차 재조립기[]를 연구하고 배치하세요. +onset.makeunit = 유닛을 생산하세요.\n"?" 버튼을 눌러 선택한 공장의 요구사항을 확인할 수 있습니다. +onset.turrets = 유닛은 유용하지만, [accent]포탑[]은 사용하기에 따라 더 나은 방어 성능을 보여줍니다.\n \uf6eb [accent]브리치[] 포탑을 배치하세요.\n포탑은 \uf748 [accent]탄약[]이 필요합니다. onset.turretammo = 포탑에 [accent]베릴륨 탄약[]을 공급하세요. onset.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf6ee [accent]베릴륨 벽[]을 배치하세요. onset.enemies = 적이 다가옵니다, 방어 태세를 갖추세요. @@ -1992,14 +2021,15 @@ onset.defenses = [accent]방어 태세 갖추기:[lightgray] {0} onset.attack = 적은 취약한 상태입니다. 반격하세요. onset.cores = 새로운 코어는 [accent]코어 타일[]위에 배치할 수 있습니다.\n새로운 코어는 전진기지 역할을 하며 다른 코어와 저장된 자원을 공유합니다.\n \uf725 코어를 배치하세요. onset.detect = 적은 2분 이내에 당신을 탐지할 것입니다.\n생산, 채굴, 방어시설을 구성하세요. -onset.commandmode = [accent]shift[]를 눌러 [accent]명령 모드[]를 활성화하세요.\n[accent]좌클릭과 드래그[]로 기체를 선택하세요.\n[accent]우클릭[]으로 선택된 기체들에게 이동 또는 공격 명령을 내리세요. -onset.commandmode.mobile = [accent]명령 버튼[]을 눌러 [accent]명령 모드[]를 활성화하세요.\n손가락을 꾹 누르고, [accent]드래그[]해서 유닛을 선택하세요.\n[accent]눌러서[] 선택된 기체들에게 이동 또는 공격 명령을 내리세요. -aegis.tungsten = 텅스텐을 채굴하려면 [accent]충격드릴[]이 필요합니다.\n 충격 드릴은[accent]물[]과 [accent]전력[]을 필요로 합니다. -split.pickup = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(화물을 집어올리거나 내리는 기본 키는 [ 그리고 ]입니다) -split.pickup.mobile = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(무언가를 집어올리거나 내려놓으려면, 길게 누르세요.) -split.acquire = 기체를 제조하려면 텅스텐을 채굴해야 합니다. -split.build = 기체를 벽의 반대편으로 운반해야 합니다.\n두 개의 [accent]회물 매스 드라이버[]를 각 벽면에 하나씩 배치하세요.\n둘 중 하나를 누른 다음 다른 하나를 선택하여 연결을 설정합니다. -split.container = 컨테이너와 마찬가지로, 기체도 [accent]화물 매스 드라이버[]를 사용하여 운송할 수 있습니다.\n기체 조립대를 매스 드라이버 근처에 배치하여 기체를 적재한 후, 벽을 가로질러 보내 적 기지를 공격합니다. +onset.commandmode = [accent]shift[]를 눌러 [accent]명령 모드[]를 활성화하세요.\n[accent]좌클릭과 드래그[]로 유닛을 선택하세요.\n[accent]우클릭[]으로 선택된 유닛들에게 이동 또는 공격 명령을 내리세요. +onset.commandmode.mobile = [accent]명령 버튼[]을 눌러 [accent]명령 모드[]를 활성화하세요.\n손가락을 꾹 누르고, [accent]드래그[]해서 유닛을 선택하세요.\n[accent]눌러서[] 선택된 유닛들에게 이동 또는 공격 명령을 내리세요. 이것으로 에르키아의 튜토리얼을 마칩니다. 행운을 빕니다. +aegis.tungsten = 텅스텐을 채굴하려면 [accent]충격 드릴[]이 필요합니다.\n 충격 드릴은[accent]물[]과 [accent]전력[]을 필요로 합니다. + +split.pickup = 일부 블록은 코어 유닛으로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(화물을 집어올리거나 내리는 기본 키는 [ 그리고 ]입니다.) +split.pickup.mobile = 일부 블록은 코어 유닛으로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(무언가를 집어올리거나 내려놓으려면, 길게 누르세요.) +split.acquire = 유닛을 생산하려면 텅스텐을 채굴해야 합니다. +split.build = 유닛을 벽의 반대편으로 운반해야 합니다.\n두 개의 [accent]화물 매스 드라이버[]를 각 벽면에 하나씩 배치하세요.\n둘 중 하나를 누른 다음 다른 하나를 선택하여 연결을 설정합니다. +split.container = 컨테이너와 마찬가지로, 유닛도 [accent]화물 매스 드라이버[]를 사용하여 운송할 수 있습니다.\n유닛 조립대를 매스 드라이버 근처에 배치하여 유닛을 적재한 후, 벽을 가로질러 보내 적 기지를 공격하게 만듭니다. item.copper.description = 모든 종류의 구조물 및 탄약으로 사용하는 기본 자원입니다. item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포되어 있습니다. 기본적으로 보강하지 않는 한 구조적으로 약합니다. @@ -2022,6 +2052,8 @@ item.spore-pod.description = 석유, 폭발물과 연료로 전환하는 데 사 item.spore-pod.details = 포자, 합성 생명체로 판단됩니다. 타 유기체에 치명적인 독가스를 내뿜으며. 매우 빠르게 퍼집니다. 특정한 조건에서 인화성이 매우 높습니다. item.blast-compound.description = 폭탄과 폭발성 탄약에 사용되는 불안정한 화합물입니다. item.pyratite.description = 방화 무기와 연료를 연소하는 발전기에 사용되는 가연성이 매우 높은 물질입니다. + +#Erekir item.beryllium.description = 에르키아의 여러 종류의 건축물과 탄약에 사용됩니다. item.tungsten.description = 드릴, 장갑 및 탄약에 사용됩니다. 보다 발전된 구조물을 건설하는 데 필요합니다. item.oxide.description = 전원의 열전도체 및 절연체로 사용됩니다. @@ -2031,6 +2063,8 @@ liquid.water.description = 냉각기 및 폐기물 처리에 사용됩니다. liquid.slag.description = 분리기를 통해 다른 자원으로 정제하거나 탄환으로 적들에게 살포할 수 있습니다. liquid.oil.description = 고급 재료 생산, 석탄으로 전환 및 적들에게 살포하여 불을 지를 수 있습니다. liquid.cryofluid.description = 원자로, 포탑 및 공장에서 냉각수로 사용되는 비부식성 액체입니다. + +#Erekir liquid.arkycite.description = 발전 및 재료 합성을 위한 화학 반응에 사용됩니다. liquid.ozone.description = 재료 생산에서 산화제로 사용되며 연료로도 사용됩니다. 적당한 폭발성 물질입니다. liquid.hydrogen.description = 자원 추출, 기체 생산 및 구조물 수리에 사용됩니다. 가연성 물질입니다. @@ -2039,7 +2073,7 @@ liquid.nitrogen.description = 자원 추출, 가스 생성 및 기체 생산에 liquid.neoplasm.description = 신생물 반응로의 위험한 생물학적 부산물. 접촉하는 즉시 인접한 모든 수분 함유 블록으로 빠르게 확산되며, 진행되는 동안 피해를 입힙니다. 점성을 띄는 물질입니다. liquid.neoplasm.details = 신생물, 진흙과 비슷한 점성을 가졌으며, 통제 불능의 속도로 빠르게 확산되는 합성세포 덩어리 입니다. 고온에 저항력이 있으며, 일반적인 분석으로는 너무나 복잡하고 불안정하여 아직 정확한 행동 양식이나 생태를 확인하지 못 했습니다. 열 저항. 물과 관련된 구조물에는 매우 위험합니다.\n\n 광재 웅덩이에 소각하는 것이 바람직합니다. -block.derelict = \ue815 [lightgray]잔해 +block.derelict = \uF77E [lightgray]잔해 block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다. block.illuminator.description = 발광합니다. block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다. @@ -2081,10 +2115,10 @@ block.phase-wall.description = 적 발사체로부터 아군 구조물을 보호 block.phase-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. 충돌한 탄환 대부분을 반사합니다. \n여러 타일을 차지합니다. block.surge-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. 접촉 시 무작위로 전격 아크를 방출합니다. block.surge-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. 접촉 시 무작위로 전격 아크를 방출합니다.\n여러 타일을 차지합니다. -block.scrap-wall.description = Protects structures from enemy projectiles. -block.scrap-wall-large.description = Protects structures from enemy projectiles. -block.scrap-wall-huge.description = Protects structures from enemy projectiles. -block.scrap-wall-gigantic.description = Protects structures from enemy projectiles. +block.scrap-wall.description = 적 발사체로부터 아군 구조물을 보호합니다. +block.scrap-wall-large.description = 적 발사체로부터 아군 구조물을 보호합니다. +block.scrap-wall-huge.description = 적 발사체로부터 아군 구조물을 보호합니다. +block.scrap-wall-gigantic.description = 적 발사체로부터 아군 구조물을 보호합니다. block.door.description = 탭하여 열거나 닫을 수 있는 벽입니다. block.door-large.description = 탭하여 열거나 닫을 수 있는 벽입니다.\n여러 타일을 차지합니다. block.mender.description = 주변 블록을 주기적으로 수리합니다.\n선택적으로 실리콘을 사용하여 범위와 효율성을 향상할 수 있습니다. @@ -2100,7 +2134,7 @@ block.bridge-conveyor.description = 지형이나 건물을 넘어 자원을 운 block.phase-conveyor.description = 지형이나 건물 너머로 자원을 즉시 운반합니다. 속도가 빠르고 다리 컨베이어보다 길지만, 작동하려면 전력이 필요합니다. block.sorter.description = 입력된 자원이 선택과 일치하면 앞으로 통과하며, 그렇지 않으면 왼쪽과 오른쪽으로 출력합니다. block.inverted-sorter.description = 필터와 비슷하지만, 대신 선택된 자원을 측면으로 출력합니다. -block.router.description = 입력된 자원을 최대 3개의 다른 방향으로 동등하게 분배합니다.\n\n[scarlet]공장에서 생산된 자원으로 인해 입력이 막힐 수 있으므로, 절대로 공장 바로 옆에서 사용하지 마세요. +block.router.description = 입력된 자원을 최대 3개의 다른 방향으로 동등하게 분배합니다.\n\n[scarlet]공장에서 생산된 자원으로 인해 입력이 막힐 수 있으므로, 절대로 공장 바로 옆에서 사용하지 마세요.[] block.router.details = 필요악. 자원 입력을 위해 공장 옆에 설치하는 것은 그 공장의 출력으로 인해 막힐 수 있으므로 사용하지 않는 것이 좋음. block.distributor.description = 입력된 자원을 최대 7개의 다른 방향으로 동등하게 분배합니다. block.overflow-gate.description = 앞쪽 경로가 차단된 경우에만 왼쪽과 오른쪽으로 출력합니다. @@ -2193,6 +2227,8 @@ block.logic-display.description = 프로세서를 이용해 임의로 그래픽 block.large-logic-display.description = 프로세서를 이용해 임의로 그래픽을 출력할 수 있습니다. block.interplanetary-accelerator.description = 거대한 전자기 레일건 타워. 행성 간 이동을 위한 탈출 속도까지 코어를 가속합니다. block.repair-turret.description = 피해를 입은 가장 가까운 기체를 지속적으로 수리합니다. 선택적으로 냉각수를 넣을 수 있습니다. + +#Erekir block.core-bastion.description = 기지의 핵심입니다. 튼튼합니다. 한번 파괴되면, 구역을 잃습니다. block.core-citadel.description = 기지의 핵심입니다. 더 튼튼합니다. 코어: 요새보다 더 많은 양의 자원을 저장합니다. block.core-acropolis.description = 기지의 핵심입니다. 매우 튼튼합니다. 코어: 성채보다 더 많은 양의 자원을 저장합니다. @@ -2324,6 +2360,8 @@ unit.oxynoe.description = 주변의 적을 향해 구조물을 수리하는 화 unit.cyerce.description = 주변의 적을 향해 유도 집속 미사일을 발사합니다. 아군 기체를 수리합니다. unit.aegires.description = 에너지 필드로 들어온 모든 적 기체와 구조물에게 충격을 줍니다. 모든 아군을 수리합니다. unit.navanax.description = 적 전력망에 상당한 피해를 주고 아군 블록을 수리하는 폭발성 EMP 탄환을 발사합니다. 4개의 자율 레이저 포탑으로 주변 적을 녹입니다. + +#Erekir unit.stell.description = 적 대상에게 일반적인 탄환을 발사합니다. unit.locus.description = 적 대상에게 번갈아 나오는 탄환을 발사합니다. unit.precept.description = 적 대상에게 관통하는 집속탄환을 발사합니다. @@ -2343,104 +2381,112 @@ unit.evoke.description = 코어: 요새를 지켜내기 위해 구조물을 건 unit.incite.description = 코어: 성채를 지켜내기 위해 구조물을 건설합니다. 빔으로 구조물을 수리합니다. unit.emanate.description = 코어: 도심을 지켜내기 위해 구조물을 건설합니다. 빔으로 구조물을 수리합니다. -lst.read = 연결된 메모리 셀에서 숫자 읽음 -lst.write = 연결된 메모리 셀에 숫자 작성 -lst.print = 프린트 버퍼에 텍스트 추가\n[accent]Print Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 -lst.format = Replace next placeholder in text buffer with a value.\nDoes not do anything if placeholder pattern is invalid.\nPlaceholder pattern: "{[accent]number 0-9[]}"\nExample:\n[accent]print "test {0}"\nformat "example" -lst.draw = 드로잉 버퍼에 실행문 추가\n[accent]Draw Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다 -lst.drawflush = 대기중인 [accent]Draw[]실행문을 디스플레이에 출력 -lst.printflush = 대기중인 [accent]Print[]실행문을 메시지 블록에 출력 -lst.getlink = 순서별로 프로세서의 연결을 가져옴. 0부터 시작 -lst.control = 건물 조종 -lst.radar = 건물 주변의 기체 검색 -lst.sensor = 건물 또는 기체의 정보 수집 -lst.set = 변수 선언/할당 -lst.operation = 1~2개의 변수로 연산 -lst.end = 실행줄의 가장 위로 건너뜀 -lst.wait = 일정 시간(초) 동안 대기 -lst.stop = 이 프로세서의 실행 중지 -lst.lookup = id를 통해 특정 유형의 아이템/액체/기체/블록 조회\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\n...로 각 유형의 총 갯수를 알 수 있습니다. -lst.jump = 조건부로 다른 실행문으로 건너뜀 -lst.unitbind = type 옆에 있는 기체를 지정하고, [accent]@unit[]에 저장 -lst.unitcontrol = 현재 지정된 기체 조종 -lst.unitradar = 현재 지정된 기체 주변의 기체 검색 -lst.unitlocate = 특정 유형의 위치/건물을 지도상에서 조회\n지정된 기체가 필요합니다 -lst.getblock = 특정 위치의 타일 정보를 불러옴 -lst.setblock = 특정 위치의 타일 정보 설정 -lst.spawnunit = 특정 위치에 기체 소환 -lst.applystatus = 기체에게 상태이상을 적용하거나 삭제 -lst.weathersense = Check if a type of weather is active. -lst.weatherset = Set the current state of a type of weather. -lst.spawnwave = 특정 위치에 이전 단계를 실행\n실제 단계가 넘어가지 않습니다 -lst.explosion = 특정 위치에 폭발 생성 -lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정 -lst.fetch = 기체, 코어, 플레이어 또는 건물을 엔티티 번호로 조회\n번호는 0에서 시작하여 엔티티 번호-1에서 끝납니다 -lst.packcolor = 그리기 혹은 규칙 설정을 위해 [0, 1] RGBA 단일 요소로 묶음 -lst.setrule = 게임 규칙 설정 -lst.flushmessage = 텍스트 버퍼로부터 화면에 메세지를 표시\n이전 메세지가 완료될 때까지 기다립니다 -lst.cutscene = 플레이어 카메라 조작 -lst.setflag = 모든 프로세서가 읽을 수 있는 전역 플래그 설정 -lst.getflag = 전역 플래그가 설정되어 있는지 확인 -lst.setprop = 기체 혹은 건물의 속성을 설정합니다. -lst.effect = Create a particle effect. -lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second at most. -lst.playsound = Plays a sound.\nVolume and pan can be a global value, or calculated based on position. -lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world. -lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction. -lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first. +lst.read = 연결된 메모리 셀에서 숫자를 읽습니다. +lst.write = 연결된 메모리 셀에 숫자를 작성합니다. +lst.print = 프린트 버퍼에 텍스트를 추가합니다.\n[accent]Print Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다. +lst.format = 텍스트 버퍼의 다음 플레이스홀더를 값으로 바꿉니다.\n자리 표시자 패턴이 유효하지 않은 경우 아무것도 하지 않습니다.\n플레이스홀더 패턴: "{[accent]number 0-9[]}"\n예:\n[accent]print "test {0}"\nformat "example" +lst.draw = 드로잉 버퍼에 실행문을 추가합니다.\n[accent]Draw Flush[]가 사용되기 전까진 아무것도 보여주지 않습니다. +lst.drawflush = 대기중인 [accent]Draw[]실행문을 디스플레이에 출력합니다. +lst.printflush = 대기중인 [accent]Print[]실행문을 메시지 블록에 출력합니다. +lst.getlink = 순서별로 프로세서의 연결을 가져옵니다. 0부터 시작합니다. +lst.control = 건물을 조종합니다. +lst.radar = 건물 주변의 유닛을 검색합니다. +lst.sensor = 건물 또는 기체의 정보를 수집합니다. +lst.set = 변수를 설정합니다. +lst.operation = 1~2개의 변수로 연산합니다. +lst.end = 실행줄의 가장 위로 건너뜁니다. +lst.wait = 일정 시간(초) 동안 대기합니다. +lst.stop = 이 프로세서의 실행 중지합니다. +lst.lookup = id를 통해 특정 유형의 아이템/액체/기체/블록을 조회합니다.\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]\n...로 각 유형의 총 갯수를 알 수 있습니다. +lst.jump = 조건부로 다른 실행문으로 건너뜁니다. +lst.unitbind = type 옆에 있는 유닛을 지정하고, [accent]@unit[]에 저장합니다. +lst.unitcontrol = 현재 지정된 유닛을 조종합니다. +lst.unitradar = 현재 지정된 유닛 주변의 다른 유닛을 검색합니다. +lst.unitlocate = 특정 유형의 위치/건물을 맵 상에서 조회.\n지정된 유닛이 필요합니다. +lst.getblock = 특정 위치의 타일 정보를 불러옵니다. +lst.setblock = 특정 위치의 타일 정보 설정합니다. +lst.spawnunit = 특정 위치에 유닛을 소환합니다. +lst.applystatus = 유닛에게 상태 이상을 적용하거나 삭제합니다. +lst.weathersense = 어떤 유형의 날씨가 활동하는지 확인합니다. +lst.weatherset = 날씨 유형의 현재 상태를 설정합니다. +lst.spawnwave = 특정 위치에 이전 단계를 실행합니다.\n실제로 단계가 넘어가지는 않습니다. +lst.explosion = 특정 위치에 폭발을 생성합니다. +lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정합니다. +lst.fetch = 기체, 코어, 플레이어 또는 건물을 엔티티 번호로 조회합니다.\n번호는 0에서 시작하여 엔티티 번호-1에서 끝납니다. +lst.packcolor = 그리기 혹은 규칙 설정을 위해 [0, 1] RGBA 단일 요소로 묶습니다. +lst.setrule = 게임 규칙을 설정합니다. +lst.flushmessage = 텍스트 버퍼로부터 화면에 메세지를 표시합니다.\n이전 메세지가 완료될 때까지 기다립니다. +lst.cutscene = 플레이어 카메라를 조작합니다. +lst.setflag = 모든 프로세서가 읽을 수 있는 전역 플래그 설정합니다. +lst.getflag = 전역 플래그가 설정되어 있는지 확인합니다. +lst.setprop = 유닛 혹은 건물의 속성을 설정합니다. +lst.effect = 파티클 효과를 만듭니다. +lst.sync = 네트워크 전체에서 변수를 동기화합니다.\n1초에 최대 10번만 호출됩니다. +lst.playsound = 소리를 재생합니다.\n볼륨과 팬은 전역 값이 될 수도 있고, 위치를 기준으로 계산될 수도 있습니다. +lst.makemarker = 월드에 새로운 논리 마커를 만듭니다.\n 이 마커를 식별할 ID를 제공해야 합니다.\n 현재 마커는 월드당 20,000개로 제한되어 있습니다. +lst.setmarker = 마커의 속성을 설정합니다.\n사용된 ID는 마커 만들기 지침에서와 동일해야 합니다. +lst.localeprint = 텍스트 버퍼에 맵 언어 팩 속성 값을 추가합니다.\n맵 편집기에서 맵 언어 팩을 설정하려면 [accent]맵 정보 > 언어 팩[]을 선택합니다.\n클라이언트가 모바일 기기인 경우 먼저 ".mobile"로 끝나는 속성을 print하려고 시도합니다. + lglobal.false = 0 lglobal.true = 1 lglobal.null = null -lglobal.@pi = The mathematical constant pi (3.141...) -lglobal.@e = The mathematical constant e (2.718...) -lglobal.@degToRad = Multiply by this number to convert degrees to radians -lglobal.@radToDeg = Multiply by this number to convert radians to degrees -lglobal.@time = Playtime of current save, in milliseconds -lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks) -lglobal.@second = Playtime of current save, in seconds -lglobal.@minute = Playtime of current save, in minutes -lglobal.@waveNumber = Current wave number, if waves are enabled -lglobal.@waveTime = Countdown timer for waves, in seconds -lglobal.@mapw = Map width in tiles -lglobal.@maph = Map height in tiles -lglobal.sectionMap = Map -lglobal.sectionGeneral = General -lglobal.sectionNetwork = Network/Clientside [World Processor Only] -lglobal.sectionProcessor = Processor -lglobal.sectionLookup = Lookup -lglobal.@this = The logic block executing the code -lglobal.@thisx = X coordinate of block executing the code -lglobal.@thisy = Y coordinate of block executing the code -lglobal.@links = Total number of blocks linked to this processors -lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second) -lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction -lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction -lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction -lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction -lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise -lglobal.@client = True if the code is running on a client connected to a server -lglobal.@clientLocale = Locale of the client running the code. For example: en_US -lglobal.@clientUnit = Unit of client running the code -lglobal.@clientName = Player name of client running the code -lglobal.@clientTeam = Team ID of client running the code -lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise - -logic.nounitbuild = [red]기체의 건설 로직은 여기서 허용되지 않습니다. - -lenum.type = 건물/기체의 유형\n예로 분배기는 문자열이 아니라 [accent]@router[]를 반환합니다. +lglobal.@pi = 수학적 상수; 파이(pi) (3.141...) +lglobal.@e = 수학적 상수; 자연상수(e) (2.718...) +lglobal.@degToRad = 이 숫자를 곱하여 각도를 라디안으로 변환 +lglobal.@radToDeg = 이 숫자를 곱하여 라디안을 각도로 변환 + +lglobal.@time = 현재 저장의 재생 시간(밀리초) +lglobal.@tick = 현재 저장의 재생 시간(틱 단위, 1초 = 60틱) +lglobal.@second = 현재 저장의 재생 시간(초) +lglobal.@minute = 현재 저장 파일의 재생 시간(분) +lglobal.@waveNumber = 현재 단계 번호(단계가 활성화된 경우) +lglobal.@waveTime = 단계 카운트다운 타이머(초) +lglobal.@mapw = 타일 ​​단위의 맵 너비 +lglobal.@maph = 타일 ​​단위의 맵 높이 + +lglobal.sectionMap = 맵 +lglobal.sectionGeneral = 일반 +lglobal.sectionNetwork = 네트워크/클라이언트 측 [월드 프로세서 전용] +lglobal.sectionProcessor = 프로세서 +lglobal.sectionLookup = 조회 + +lglobal.@this = 코드를 실행하는 로직 블록 +lglobal.@thisx = 코드를 실행하는 블록의 X 좌표 +lglobal.@thisy = 코드를 실행하는 블록의 Y 좌표 +lglobal.@links = 이 프로세서에 연결된 총 블록 수 +lglobal.@ipt = 틱당 명령어로 표현된 프로세서의 실행 속도(60틱 = 1초) + +lglobal.@unitCount = 게임에서 유닛 콘텐츠 유형의 총 수; 조회 지침과 함께 사용됨 +lglobal.@blockCount = 게임의 블록 콘텐츠 유형의 총 수; 조회 지침과 함께 사용됨 +lglobal.@itemCount = 게임의 아이템 콘텐츠 유형의 총 수; 조회 지침과 함께 사용됨 +lglobal.@liquidCount = 게임의 액체 콘텐츠 유형의 총 수; 조회 지침과 함께 사용됨 + +lglobal.@server = 코드가 서버 또는 싱글 플레이어에서 실행되는 경우 true, 그렇지 않은 경우 false +lglobal.@client = 코드가 서버에 연결된 클라이언트에서 실행되는 경우 true + +lglobal.@clientLocale = 코드를 실행하는 클라이언트의 언어 팩. 예: en_US (한국어는 ko_KR) +lglobal.@clientUnit = 코드를 실행하는 클라이언트의 단위 +lglobal.@clientName = 코드를 실행하는 클라이언트의 플레이어 이름 +lglobal.@clientTeam = 코드를 실행하는 클라이언트의 팀 ID +lglobal.@clientMobile = 코드를 실행하는 클라이언트가 모바일에 있는 경우 true, 그렇지 않으면 false + +logic.nounitbuild = [red]유닛의 건설 로직은 여기에서 허용되지 않습니다. + +lenum.type = 건물/유닛의 유형\n예로 분배기는 문자열이 아니라 [accent]@router[]를 반환합니다. lenum.shoot = 특정 위치에 발사 lenum.shootp = 목표물 속도를 예측하여 발사 lenum.config = 필터의 아이템같은 건물의 설정 lenum.enabled = 블록의 활성 여부 -laccess.currentammotype = Current ammo item/liquid of a turret. -laccess.color = 조명 색상 -laccess.controller = 기체 제어자. 프로세서가 제어하면, 프로세서를 반환합니다.\n다른 기체에 의해 지휘되면(G키), 지휘하는 기체를 반환합니다.\n그 외에는 자신을 반환합니다. -laccess.dead = 기체 또는 건물 사망/무효 여부 -laccess.controlled = 만약 기체 제어자가 프로세서라면 [accent]@ctrlProcessor[]를 반환합니다.\n만약 기체/건물 제어자가 플레이어라면 [accent]@ctrlPlayer[]를 반환합니다.\n만약 기체가 다른 기체에 의해 지휘되면(G키)[accent]@ctrlFormation[]를 반환합니다.\n그 외에는 0을 반환합니다. +laccess.currentammotype = 포탑의 현재 탄약/액체. +laccess.color = 조명 색상. +laccess.controller = 유닛 제어자. 프로세서가 제어하면, 프로세서를 반환합니다.\n다른 유닛에 의해 지휘되면(G키), 지휘하는 유닛을 반환합니다.\n그 외에는 자신을 반환합니다. +laccess.dead = 기체 또는 건물 사망/무효 여부. +laccess.controlled = 만약 유닛 제어자가 프로세서라면 [accent]@ctrlProcessor[]를 반환합니다.\n만약 유닛/건물 제어자가 플레이어라면 [accent]@ctrlPlayer[]를 반환합니다.\n만약 유닛가 다른 유닛에 의해 지휘되면(G키)[accent]@ctrlFormation[]를 반환합니다.\n그 외에는 0을 반환합니다. laccess.progress = 작업 진행률, 0 에서 1 로 감.\n포탑 재장전이나 구조물 진행률을 반환합니다. -laccess.speed = 기체의 최대 속도, 타일/초 -laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup operation. +laccess.speed = 기체의 최대 속도, 타일/초. +laccess.id = 유닛/블록/아이템/액체의 ID.\n이것은 조회 작업의 역순입니다. + lcategory.unknown = 알 수 없음 lcategory.unknown.description = 분류되지 않은 설명 lcategory.io = 입력 & 출력 @@ -2467,7 +2513,7 @@ graphicstype.poly = 정다각형 채우기 graphicstype.linepoly = 정다각형 외곽선 그리기 graphicstype.triangle = 삼각형 채우기 graphicstype.image = 일부 콘텐츠의 이미지 그리기\n예: [accent]@router[] 또는 [accent]@dagger[]. -graphicstype.print = Draws text from the print buffer.\nClears the print buffer. +graphicstype.print = 프린트 버퍼에서 텍스트를 그립니다.\n프린트 버퍼를 지웁니다. lenum.always = 항상 참 lenum.idiv = 정수 나누기 @@ -2487,7 +2533,7 @@ lenum.xor = 비트연산자 XOR lenum.min = 두 수의 최솟값 lenum.max = 두 수의 최댓값 lenum.angle = 벡터의 각(도) -lenum.anglediff = Absolute distance between two angles in degrees. +lenum.anglediff = 두 각도 사이의 절대 거리(도). lenum.len = 벡터의 길이 lenum.sin = 사인(도) @@ -2555,7 +2601,8 @@ unitlocate.building = 찾은 건물을 대입할 변수 unitlocate.outx = X좌표 unitlocate.outy = Y좌표 unitlocate.group = 찾을 건물 집단 -playsound.limit = If true, prevents this sound from playing\nif it has already been played in the same frame. + +playsound.limit = true인 경우, 같은 프레임에서 이미 재생된 사운드는 재생되지 않습니다. lenum.idle = 이동 정지, 채광/건설 유지\n기본 상태입니다. lenum.stop = 이동/채광/건설 중단 @@ -2563,7 +2610,7 @@ lenum.unbind = 로직 컨트롤 완전 비활성화\n표준 AI를 다시 따릅 lenum.move = 특정 위치로 이동 lenum.approach = 특정 위치로 반지름만큼 접근 lenum.pathfind = 적 스폰 지점으로 길찾기 -lenum.autopathfind = Automatically pathfinds to the nearest enemy core or drop point.\nThis is the same as standard wave enemy pathfinding. +lenum.autopathfind = 가장 가까운 적의 코어이나 착륙 지점까지 자동으로 경로를 찾습니다.\n이것은 일반적인 웨이브 적 경로 찾기와 동일합니다. lenum.target = 특정 위치에 발사 lenum.targetp = 목표물 속도를 예측하여 발사 lenum.itemdrop = 아이템 투하 @@ -2574,13 +2621,14 @@ lenum.payenter = 유닛 아래의 화물 건물에 착륙/진입 lenum.flag = 깃발 수 설정 lenum.mine = 특정 위치에서 채광 lenum.build = 구조물 건설 -lenum.getblock = Fetch building, floor and block type at coordinates.\nUnit must be in range of the position, otherwise null is returned. +lenum.getblock = 좌표에서 건물, 층, 블록 유형을 가져옵니다.\n단위는 위치 범위 내에 있어야 하며, 그렇지 않으면 null이 반환됩니다. lenum.within = 좌표 주변 기체 발견 여부 lenum.boost = 이륙 시작/중단 -lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle. -lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument. -lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size. -lenum.autoscale = Whether to scale marker corresponding to player's zoom level. -lenum.posi = Indexed position, used for line and quad markers with index zero being the first position. -lenum.uvi = Texture's position ranging from zero to one, used for quad markers. -lenum.colori = Indexed position, used for line and quad markers with index zero being the first color. + +lenum.flushtext = 해당되는 경우, 프린트 버퍼의 내용을 마커에 플러시.\nFetch가 true로 설정된 경우, 맵 언어 팩 또는 게임 번들에서 속성을 가져오려고 시도합니다. +lenum.texture = 게임의 texture atlas에서 직접 가져온 텍스처 이름(케밥식 명명 스타일 사용).\n printFlush가 true로 설정된 경우, 텍스트 인수로 텍스트 버퍼 내용을 사용합니다. +lenum.texturesize = 타일의 텍스처 크기. 0 값은 마커 너비를 원래 텍스처 크기에 맞게 조정합니다. +lenum.autoscale = 플레이어의 확대/축소 레벨에 맞춰 마커의 크기를 조정할지 여부. +lenum.posi = 인덱스 위치. 라인 및 쿼드 마커에 사용되며 인덱스 0이 첫 번째 위치입니. +lenum.uvi = 0에서 1까지의 텍스처 위치, 쿼드 마커에 사용. +lenum.colori = 인덱스된 위치, 인덱스 0이 첫 번째 색상이며 라인 및 쿼드 마커에 사용. From f12be51da312faae0e964075fc5c5d7adb4e685d Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sun, 13 Oct 2024 21:12:03 +0000 Subject: [PATCH 20/49] Automatic bundle update --- core/assets/bundles/bundle_ko.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 34e8d4e3c0..003a678379 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -2073,7 +2073,7 @@ liquid.nitrogen.description = 자원 추출, 가스 생성 및 기체 생산에 liquid.neoplasm.description = 신생물 반응로의 위험한 생물학적 부산물. 접촉하는 즉시 인접한 모든 수분 함유 블록으로 빠르게 확산되며, 진행되는 동안 피해를 입힙니다. 점성을 띄는 물질입니다. liquid.neoplasm.details = 신생물, 진흙과 비슷한 점성을 가졌으며, 통제 불능의 속도로 빠르게 확산되는 합성세포 덩어리 입니다. 고온에 저항력이 있으며, 일반적인 분석으로는 너무나 복잡하고 불안정하여 아직 정확한 행동 양식이나 생태를 확인하지 못 했습니다. 열 저항. 물과 관련된 구조물에는 매우 위험합니다.\n\n 광재 웅덩이에 소각하는 것이 바람직합니다. -block.derelict = \uF77E [lightgray]잔해 +block.derelict = \uf77e [lightgray]잔해 block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다. block.illuminator.description = 발광합니다. block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다. From e2019fd5dc041df12e2f6f5d62c422c40b75072e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 13 Oct 2024 22:57:53 -0400 Subject: [PATCH 21/49] Made unlocked blocks in campaign reflect host research --- core/src/mindustry/ctype/UnlockableContent.java | 1 + core/src/mindustry/input/InputHandler.java | 2 +- core/src/mindustry/ui/fragments/PlacementFragment.java | 4 ++-- core/src/mindustry/world/blocks/units/UnitFactory.java | 4 +++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index e86da73fea..d1bb37fc6a 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -222,6 +222,7 @@ public void quietUnlock(){ } } + /** @return in multiplayer, whether this is unlocked for the host player, otherwise, whether it is unlocked for the local player (same as unlocked()) */ public boolean unlockedNowHost(){ if(!state.isCampaign()) return true; return net != null && net.client() ? diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 1000494da4..0bc95debcb 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1728,7 +1728,7 @@ boolean tryRepairDerelict(Tile selected){ } boolean canRepairDerelict(Tile tile){ - return tile != null && tile.build != null && !state.rules.editor && player.team() != Team.derelict && tile.build.team == Team.derelict && tile.build.block.unlockedNow() && + return tile != null && tile.build != null && !state.rules.editor && player.team() != Team.derelict && tile.build.team == Team.derelict && tile.build.block.unlockedNowHost() && Build.validPlace(tile.block(), player.team(), tile.build.tileX(), tile.build.tileY(), tile.build.rotation); } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 0fac1453cf..6b42c3c3fc 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -739,8 +739,8 @@ Block getSelectedBlock(Category cat){ } boolean unlocked(Block block){ - return block.unlockedNow() && block.placeablePlayer && block.environmentBuildable() && - block.supportsEnv(state.rules.env); //TODO this hides env unsupported blocks, not always a good thing + return block.unlockedNowHost() && block.placeablePlayer && block.environmentBuildable() && + block.supportsEnv(state.rules.env); } boolean hasInfoBox(){ diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 1a7b56f78f..b9a35f0ae6 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -285,6 +285,8 @@ public void buildConfiguration(Table table){ rebuildCommands.run(); + //Since the menu gets hidden when a new unit is selected, this is unnecessary. + /* UnitType[] lastUnit = {unit()}; commands.update(() -> { @@ -292,7 +294,7 @@ public void buildConfiguration(Table table){ lastUnit[0] = unit(); rebuildCommands.run(); } - }); + });*/ table.row(); From 5d4ece62d0d5e430f5789ff2c9e2e57837d4d6c8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 13 Oct 2024 23:16:44 -0400 Subject: [PATCH 22/49] Researched list is now UnlockableContent --- core/src/mindustry/core/Logic.java | 2 +- .../mindustry/ctype/UnlockableContent.java | 21 +++++++++++-------- core/src/mindustry/game/Rules.java | 3 ++- core/src/mindustry/net/NetworkIO.java | 2 +- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index bbf4d7f3ed..c6e39cf0ff 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -395,7 +395,7 @@ public static void researched(Content content){ if(!(content instanceof UnlockableContent u)) return; boolean was = u.unlockedNow(); - state.rules.researched.add(u.name); + state.rules.researched.add(u); if(!was){ Events.fire(new UnlockEvent(u)); diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index d1bb37fc6a..c4ed0bf708 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -222,17 +222,25 @@ public void quietUnlock(){ } } - /** @return in multiplayer, whether this is unlocked for the host player, otherwise, whether it is unlocked for the local player (same as unlocked()) */ public boolean unlockedNowHost(){ - if(!state.isCampaign()) return true; + return !state.isCampaign() || unlockedHost(); + } + + /** @return in multiplayer, whether this is unlocked for the host player, otherwise, whether it is unlocked for the local player (same as unlocked()) */ + public boolean unlockedHost(){ return net != null && net.client() ? - alwaysUnlocked || state.rules.researched.contains(name) : + alwaysUnlocked || state.rules.researched.contains(this) : unlocked || alwaysUnlocked; } + /** @return whether this content is unlocked, or the player is in a custom (non-campaign) game. */ + public boolean unlockedNow(){ + return unlocked() || !state.isCampaign(); + } + public boolean unlocked(){ return net != null && net.client() ? - alwaysUnlocked || unlocked || state.rules.researched.contains(name) : + alwaysUnlocked || unlocked || state.rules.researched.contains(this) : unlocked || alwaysUnlocked; } @@ -244,11 +252,6 @@ public void clearUnlock(){ } } - /** @return whether this content is unlocked, or the player is in a custom (non-campaign) game. */ - public boolean unlockedNow(){ - return unlocked() || !state.isCampaign(); - } - public boolean locked(){ return !unlocked(); } diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 37632948b0..f2b940154c 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -7,6 +7,7 @@ import arc.util.serialization.Json.*; import mindustry.*; import mindustry.content.*; +import mindustry.ctype.*; import mindustry.graphics.g3d.*; import mindustry.io.*; import mindustry.type.*; @@ -160,7 +161,7 @@ public class Rules{ /** Reveals blocks normally hidden by build visibility. */ public ObjectSet revealedBlocks = new ObjectSet<>(); /** Unlocked content names. Only used in multiplayer when the campaign is enabled. */ - public ObjectSet researched = new ObjectSet<>(); + public ObjectSet researched = new ObjectSet<>(); /** In-map objective executor. */ public MapObjectives objectives = new MapObjectives(); /** Flags set by objectives. Used in world processors. */ diff --git a/core/src/mindustry/net/NetworkIO.java b/core/src/mindustry/net/NetworkIO.java index 48599c6b96..3dac108090 100644 --- a/core/src/mindustry/net/NetworkIO.java +++ b/core/src/mindustry/net/NetworkIO.java @@ -30,7 +30,7 @@ public static void writeWorld(Player player, OutputStream os){ for(ContentType type : ContentType.all){ for(Content c : content.getBy(type)){ if(c instanceof UnlockableContent u && u.unlocked() && u.techNode != null){ - state.rules.researched.add(u.name); + state.rules.researched.add(u); } } } From e262bb82548816287955b7452cf8102860a27a5e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Oct 2024 00:11:05 -0400 Subject: [PATCH 23/49] Allow research dialog to be viewed on clients --- core/assets/bundles/bundle.properties | 1 - core/src/mindustry/core/ContentLoader.java | 7 + core/src/mindustry/core/Logic.java | 2 +- core/src/mindustry/game/Objectives.java | 8 +- core/src/mindustry/io/JsonIO.java | 11 +- .../mindustry/ui/dialogs/ResearchDialog.java | 217 ++++++++++-------- 6 files changed, 134 insertions(+), 112 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ad5ffd6797..ccbcf0a603 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -676,7 +676,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {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 diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index 377549c4ec..4e2f86410a 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -27,6 +27,7 @@ public class ContentLoader{ private ObjectMap[] contentNameMap = new ObjectMap[ContentType.all.length]; private Seq[] contentMap = new Seq[ContentType.all.length]; + private ObjectMap nameMap = new ObjectMap<>(); private MappableContent[][] temporaryMapper; private @Nullable LoadedMod currentMod; private @Nullable Content lastAdded; @@ -188,12 +189,18 @@ public void handleMappableContent(MappableContent content){ } } contentNameMap[content.getContentType().ordinal()].put(content.name, content); + nameMap.put(content.name, content); } public void setTemporaryMapper(MappableContent[][] temporaryMapper){ this.temporaryMapper = temporaryMapper; } + /** @return the last registered content with the specified name. Note that the content loader makes no attempt to resolve name conflicts. This method can be unreliable. */ + public @Nullable MappableContent byName(String name){ + return nameMap.get(name); + } + public Seq[] getContentMap(){ return contentMap; } diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index c6e39cf0ff..af704fcd94 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -394,7 +394,7 @@ public static void gameOver(Team winner){ public static void researched(Content content){ if(!(content instanceof UnlockableContent u)) return; - boolean was = u.unlockedNow(); + boolean was = u.unlockedNowHost(); state.rules.researched.add(u); if(!was){ diff --git a/core/src/mindustry/game/Objectives.java b/core/src/mindustry/game/Objectives.java index f50c8c0ca1..fb947c4bd0 100644 --- a/core/src/mindustry/game/Objectives.java +++ b/core/src/mindustry/game/Objectives.java @@ -19,14 +19,14 @@ protected Research(){} @Override public boolean complete(){ - return content.unlocked(); + return content.unlockedHost(); } @Override public String display(){ return Core.bundle.format("requirement.research", //TODO broken for multi tech nodes. - (content.techNode == null || content.techNode.parent == null || content.techNode.parent.content.unlocked()) ? + (content.techNode == null || content.techNode.parent == null || content.techNode.parent.content.unlockedHost()) ? (content.emoji() + " " + content.localizedName) : "???"); } } @@ -42,13 +42,13 @@ protected Produce(){} @Override public boolean complete(){ - return content.unlocked(); + return content.unlockedHost(); } @Override public String display(){ return Core.bundle.format("requirement.produce", - content.unlocked() ? (content.emoji() + " " + content.localizedName) : "???"); + content.unlockedHost() ? (content.emoji() + " " + content.localizedName) : "???"); } } diff --git a/core/src/mindustry/io/JsonIO.java b/core/src/mindustry/io/JsonIO.java index e301f5b499..34957d1443 100644 --- a/core/src/mindustry/io/JsonIO.java +++ b/core/src/mindustry/io/JsonIO.java @@ -261,15 +261,8 @@ public void write(Json json, UnlockableContent object, Class knownType){ public UnlockableContent read(Json json, JsonValue jsonData, Class type){ if(jsonData.isNull()) return null; String str = jsonData.asString(); - Item item = Vars.content.item(str); - Liquid liquid = Vars.content.liquid(str); - Block block = Vars.content.block(str); - UnitType unit = Vars.content.unit(str); - return - item != null ? item : - liquid != null ? liquid : - block != null ? block : - unit; + var map = Vars.content.byName(str); + return map instanceof UnlockableContent u ? u : null; } }); diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index e601e02b5d..03fecf7563 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -47,10 +47,30 @@ public class ResearchDialog extends BaseDialog{ public ItemSeq items; private boolean showTechSelect; + private boolean needsRebuild; public ResearchDialog(){ super(""); + Events.on(ResetEvent.class, e -> { + hide(); + }); + + Events.on(UnlockEvent.class, e -> { + if(net.client() && !needsRebuild){ + needsRebuild = true; + Core.app.post(() -> { + needsRebuild = false; + + checkNodes(root); + view.hoverNode = null; + treeLayout(); + view.rebuild(); + Core.scene.act(); + }); + } + }); + titleTable.remove(); titleTable.clear(); titleTable.top(); @@ -67,7 +87,7 @@ public ResearchDialog(){ t.table(Tex.button, in -> { in.defaults().width(300f).height(60f); for(TechNode node : TechTree.roots){ - if(node.requiresUnlock && !node.content.unlocked() && node != getPrefRoot()) continue; + if(node.requiresUnlock && !node.content.unlockedHost() && node != getPrefRoot()) continue; //TODO toggle in.button(node.localizedName(), node.icon(), Styles.flatTogglet, iconMed, () -> { @@ -84,10 +104,11 @@ public ResearchDialog(){ addCloseButton(); }}.show(); - }).visible(() -> showTechSelect = TechTree.roots.count(node -> !(node.requiresUnlock && !node.content.unlocked())) > 1).minWidth(300f); + }).visible(() -> showTechSelect = TechTree.roots.count(node -> !(node.requiresUnlock && !node.content.unlockedHost())) > 1).minWidth(300f); margin(0f).marginBottom(8); cont.stack(titleTable, view = new View(), itemDisplay = new ItemsDisplay()).grow(); + itemDisplay.visible(() -> !net.client()); titleTable.toFront(); @@ -177,15 +198,6 @@ public void pan(InputEvent event, float x, float y, float deltaX, float deltaY){ }); } - @Override - public Dialog show(){ - if(net.client()){ - ui.showInfo("@research.multiplayer"); - return this; - } - return show(Core.scene); - } - void checkMargin(){ if(Core.graphics.isPortrait() && showTechSelect){ itemDisplay.marginTop(60f); @@ -361,11 +373,12 @@ void checkNodes(TechTreeNode node){ } boolean selectable(TechNode node){ - return node.content.unlocked() || !node.objectives.contains(i -> !i.complete()); + //there's a desync here as far as sectors go, since the client doesn't know about that, but I'm not too concerned + return node.content.unlockedHost() || !node.objectives.contains(i -> !i.complete()); } boolean locked(TechNode node){ - return node.content.locked(); + return !node.content.unlockedHost(); } class LayoutNode extends TreeNode{ @@ -418,31 +431,34 @@ public void rebuildAll(){ button.resizeImage(32f); button.getImage().setScaling(Scaling.fit); button.visible(() -> node.visible); - button.clicked(() -> { - if(moved) return; - - if(mobile){ - hoverNode = button; - rebuild(); - float right = infoTable.getRight(); - if(right > Core.graphics.getWidth()){ - float moveBy = right - Core.graphics.getWidth(); - addAction(new RelativeTemporalAction(){ - { - setDuration(0.1f); - setInterpolation(Interp.fade); - } + if(!net.client()){ + button.clicked(() -> { + if(moved) return; + + if(mobile){ + hoverNode = button; + rebuild(); + float right = infoTable.getRight(); + if(right > Core.graphics.getWidth()){ + float moveBy = right - Core.graphics.getWidth(); + addAction(new RelativeTemporalAction(){ + { + setDuration(0.1f); + setInterpolation(Interp.fade); + } - @Override - protected void updateRelative(float percentDelta){ - panX -= moveBy * percentDelta; - } - }); + @Override + protected void updateRelative(float percentDelta){ + panX -= moveBy * percentDelta; + } + }); + } + }else if(canSpend(node.node) && locked(node.node)){ + spend(node.node); } - }else if(canSpend(node.node) && locked(node.node)){ - spend(node.node); - } - }); + }); + } + button.hovered(() -> { if(!mobile && hoverNode != button && node.visible){ hoverNode = button; @@ -459,6 +475,7 @@ protected void updateRelative(float percentDelta){ button.userObject = node.node; button.setSize(nodeSize); button.update(() -> { + button.setDisabled(net.client() && !mobile); float offset = (Core.graphics.getHeight() % 2) / 2f; button.setPosition(node.x + panX + width / 2f, node.y + panY + height / 2f + offset, Align.center); button.getStyle().up = !locked(node.node) ? Tex.buttonOver : !selectable(node.node) || !canSpend(node.node) ? Tex.buttonRed : Tex.button; @@ -498,7 +515,7 @@ void clamp(){ } boolean canSpend(TechNode node){ - if(!selectable(node)) return false; + if(!selectable(node) || net.client()) return false; if(node.requirements.length == 0) return true; @@ -514,6 +531,8 @@ boolean canSpend(TechNode node){ } void spend(TechNode node){ + if(net.client()) return; + boolean complete = true; boolean[] shine = new boolean[node.requirements.length]; @@ -611,86 +630,90 @@ void rebuild(@Nullable boolean[] shine){ desc.left().defaults().left(); desc.add(selectable ? node.content.localizedName : "[accent]???"); desc.row(); - if(locked(node) || debugShowRequirements){ + if(locked(node) || (debugShowRequirements && !net.client())){ + + if(net.client()){ + desc.add("@locked").color(Pal.remove); + }else{ + desc.table(t -> { + t.left(); + if(selectable){ + + //check if there is any progress, add research progress text + if(Structs.contains(node.finishedRequirements, s -> s.amount > 0)){ + float sum = 0f, used = 0f; + boolean shiny = false; + + for(int i = 0; i < node.requirements.length; i++){ + sum += node.requirements[i].item.cost * node.requirements[i].amount; + used += node.finishedRequirements[i].item.cost * node.finishedRequirements[i].amount; + if(shine != null) shiny |= shine[i]; + } - desc.table(t -> { - t.left(); - if(selectable){ + Label label = t.add(Core.bundle.format("research.progress", Math.min((int)(used / sum * 100), 99))).left().get(); - //check if there is any progress, add research progress text - if(Structs.contains(node.finishedRequirements, s -> s.amount > 0)){ - float sum = 0f, used = 0f; - boolean shiny = false; + if(shiny){ + label.setColor(Pal.accent); + label.actions(Actions.color(Color.lightGray, 0.75f, Interp.fade)); + }else{ + label.setColor(Color.lightGray); + } - for(int i = 0; i < node.requirements.length; i++){ - sum += node.requirements[i].item.cost * node.requirements[i].amount; - used += node.finishedRequirements[i].item.cost * node.finishedRequirements[i].amount; - if(shine != null) shiny |= shine[i]; + t.row(); } - Label label = t.add(Core.bundle.format("research.progress", Math.min((int)(used / sum * 100), 99))).left().get(); - - if(shiny){ - label.setColor(Pal.accent); - label.actions(Actions.color(Color.lightGray, 0.75f, Interp.fade)); - }else{ - label.setColor(Color.lightGray); - } + for(int i = 0; i < node.requirements.length; i++){ + ItemStack req = node.requirements[i]; + ItemStack completed = node.finishedRequirements[i]; - t.row(); - } + //skip finished stacks + if(req.amount <= completed.amount && !debugShowRequirements) continue; + boolean shiny = shine != null && shine[i]; - for(int i = 0; i < node.requirements.length; i++){ - ItemStack req = node.requirements[i]; - ItemStack completed = node.finishedRequirements[i]; + t.table(list -> { + int reqAmount = debugShowRequirements ? req.amount : req.amount - completed.amount; - //skip finished stacks - if(req.amount <= completed.amount && !debugShowRequirements) continue; - boolean shiny = shine != null && shine[i]; + list.left(); + list.image(req.item.uiIcon).size(8 * 3).padRight(3); + list.add(req.item.localizedName).color(Color.lightGray); + Label label = list.label(() -> " " + + UI.formatAmount(Math.min(items.get(req.item), reqAmount)) + " / " + + UI.formatAmount(reqAmount)).get(); - t.table(list -> { - int reqAmount = debugShowRequirements ? req.amount : req.amount - completed.amount; + Color targetColor = items.has(req.item) ? Color.lightGray : Color.scarlet; - list.left(); - list.image(req.item.uiIcon).size(8 * 3).padRight(3); - list.add(req.item.localizedName).color(Color.lightGray); - Label label = list.label(() -> " " + - UI.formatAmount(Math.min(items.get(req.item), reqAmount)) + " / " - + UI.formatAmount(reqAmount)).get(); + if(shiny){ + label.setColor(Pal.accent); + label.actions(Actions.color(targetColor, 0.75f, Interp.fade)); + }else{ + label.setColor(targetColor); + } - Color targetColor = items.has(req.item) ? Color.lightGray : Color.scarlet; + }).fillX().left(); + t.row(); + } + }else if(node.objectives.size > 0){ + t.table(r -> { + r.add("@complete").colspan(2).left(); + r.row(); + for(Objective o : node.objectives){ + if(o.complete()) continue; - if(shiny){ - label.setColor(Pal.accent); - label.actions(Actions.color(targetColor, 0.75f, Interp.fade)); - }else{ - label.setColor(targetColor); + r.add("> " + o.display()).color(Color.lightGray).left(); + r.image(o.complete() ? Icon.ok : Icon.cancel, o.complete() ? Color.lightGray : Color.scarlet).padLeft(3); + r.row(); } - - }).fillX().left(); + }); t.row(); } - }else if(node.objectives.size > 0){ - t.table(r -> { - r.add("@complete").colspan(2).left(); - r.row(); - for(Objective o : node.objectives){ - if(o.complete()) continue; - - r.add("> " + o.display()).color(Color.lightGray).left(); - r.image(o.complete() ? Icon.ok : Icon.cancel, o.complete() ? Color.lightGray : Color.scarlet).padLeft(3); - r.row(); - } - }); - t.row(); - } - }); + }); + } }else{ desc.add("@completed"); } }).pad(9); - if(mobile && locked(node)){ + if(mobile && locked(node) && !net.client()){ b.row(); b.button("@research", Icon.ok, new TextButtonStyle(){{ disabled = Tex.button; From 1156ed845f1d3e6a7005ee63b1360995f2ac37d5 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Mon, 14 Oct 2024 04:12:07 +0000 Subject: [PATCH 24/49] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 - core/assets/bundles/bundle_bg.properties | 1 - core/assets/bundles/bundle_ca.properties | 1 - core/assets/bundles/bundle_cs.properties | 1 - core/assets/bundles/bundle_da.properties | 1 - core/assets/bundles/bundle_de.properties | 1 - core/assets/bundles/bundle_es.properties | 1 - core/assets/bundles/bundle_et.properties | 1 - core/assets/bundles/bundle_eu.properties | 1 - core/assets/bundles/bundle_fi.properties | 1 - core/assets/bundles/bundle_fil.properties | 1 - core/assets/bundles/bundle_fr.properties | 1 - core/assets/bundles/bundle_hu.properties | 1 - core/assets/bundles/bundle_id_ID.properties | 1 - core/assets/bundles/bundle_it.properties | 1 - core/assets/bundles/bundle_ja.properties | 1 - core/assets/bundles/bundle_ko.properties | 1 - core/assets/bundles/bundle_lt.properties | 1 - core/assets/bundles/bundle_nl.properties | 1 - core/assets/bundles/bundle_nl_BE.properties | 1 - core/assets/bundles/bundle_pl.properties | 1 - core/assets/bundles/bundle_pt_BR.properties | 1 - core/assets/bundles/bundle_pt_PT.properties | 1 - core/assets/bundles/bundle_ro.properties | 1 - core/assets/bundles/bundle_ru.properties | 1 - core/assets/bundles/bundle_sr.properties | 1 - core/assets/bundles/bundle_sv.properties | 1 - core/assets/bundles/bundle_th.properties | 1 - core/assets/bundles/bundle_tk.properties | 1 - core/assets/bundles/bundle_tr.properties | 1 - core/assets/bundles/bundle_uk_UA.properties | 1 - core/assets/bundles/bundle_vi.properties | 1 - core/assets/bundles/bundle_zh_CN.properties | 1 - core/assets/bundles/bundle_zh_TW.properties | 1 - 34 files changed, 34 deletions(-) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index bd1123b01f..93e6c767b3 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -659,7 +659,6 @@ requirement.capture = Захапіць {0} requirement.onplanet = Кантраляваць Сектар На {0} requirement.onsector = Прызямліцца На Сектар: {0} launch.text = Запуск -research.multiplayer = Толькі хасты могуць даследаваць прадметы. map.multiplayer = Толькі хасты могуць праглядаць сектары. uncover = Раскрыць configure = Канфігурацыя выгрузкі diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index f14eedaf48..8e25452e90 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -665,7 +665,6 @@ requirement.capture = Превземете {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Изстреляй -research.multiplayer = Само хостващият играч може да провежда изследвания. map.multiplayer = Само хостващият играч може да преглежда секторите. uncover = Разкрий configure = Избор на екипировка diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index dc5c3fb38f..3edce05427 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -668,7 +668,6 @@ requirement.capture = Captureu {0}. requirement.onplanet = Controleu el sector {0}. requirement.onsector = Aterreu al sector {0}. launch.text = Inicia el llançament -research.multiplayer = Només l’amfitrió pot recercar tecnologies. map.multiplayer = Només l’amfitrió pot veure els sectors. uncover = Descobreix configure = Configura la càrrega inicial diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 165e653c02..ffe95d60ba 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -667,7 +667,6 @@ requirement.capture = Polap {0} requirement.onplanet = Kontrolovat Sektor na {0} requirement.onsector = Přistát na Sektor: {0} launch.text = Vyslat -research.multiplayer = Jen hostitel hry může vynalézat nové technologie. map.multiplayer = Jen hostitel může prohlížet sektory. uncover = Odkrýt mapu configure = Přizpůsobit vybavení diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 0044959be5..b2a58236a5 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -660,7 +660,6 @@ requirement.capture = Overtag {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Affyr -research.multiplayer = Kun værten kan researche genstande. map.multiplayer = Only the host can view sectors. uncover = Afdæk configure = Konfigurer udrustning diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 163fba0e4f..5906a7cce0 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -671,7 +671,6 @@ requirement.capture = Erobere {0} requirement.onplanet = Kontrolliere Sektor auf {0} requirement.onsector = Lande auf Sektor: {0} launch.text = Start -research.multiplayer = Nur der Host kann forschen. map.multiplayer = Nur der Host kann Sektoren ansehen. uncover = Freischalten configure = Anfangsressourcen festlegen diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index e49d0594c8..69636219d2 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -668,7 +668,6 @@ requirement.capture = Capturar {0} requirement.onplanet = Dominar sector de {0} requirement.onsector = Aterrizar en el sector: {0} launch.text = Lanzar -research.multiplayer = Solo el anfitrión de la partida puede investigar nuevas tecnologías. map.multiplayer = Solo el anfitrión de la partida puede ver los sectores del planeta. uncover = Descubrir configure = Configurar carga inicial diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 242c1d3e7b..7b5647fb97 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Launch -research.multiplayer = Only the host can research items. map.multiplayer = Only the host can view sectors. uncover = Ava configure = Muuda varustust diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index f94291ba4c..2de3c4f584 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -662,7 +662,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Launch -research.multiplayer = Only the host can research items. map.multiplayer = Only the host can view sectors. uncover = Estalgabetu configure = Konfiguratu zuzkidura diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index eaf90e4858..cf5ed8fd47 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -660,7 +660,6 @@ requirement.capture = Valtaa {0} requirement.onplanet = Hallitse sektoria planeetalla {0} requirement.onsector = Laskeudu sektorille: {0} launch.text = Laukaise -research.multiplayer = Vain ylläpitäjä voi tutkia tavaroita. map.multiplayer = Vain ylläpitäjä voi katsella sektoreita. uncover = Paljasta configure = Muokkaa lastia diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 8444145ed2..4b01f0562d 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Launch -research.multiplayer = Ang host lang ang makakapagsaliksik ng mga item. map.multiplayer = Ang host lang ang makakatingin sa mga sektor. uncover = Uncover configure = I-Configure ang Loadout diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 9ae0010916..945b4183f3 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -674,7 +674,6 @@ requirement.capture = Capturer {0} requirement.onplanet = Contrôler le Secteur sur {0} requirement.onsector = Atterrir sur le Secteur: {0} launch.text = Décoller -research.multiplayer = Seul l'hôte peut rechercher des objets. map.multiplayer = Seul l'hôte peut voir les secteurs. uncover = Découvrir configure = Modifier le chargement diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index b638d2a5c2..ad4b9922e7 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -676,7 +676,6 @@ requirement.capture = Foglald el a(z) {0} szektort requirement.onplanet = Szektor elfoglalása a(z) {0} bolygón requirement.onsector = Landolj a(z) {0} szektorban launch.text = Kilövés -research.multiplayer = Csak a kiszolgáló fedezhet fel nyersanyagokat. map.multiplayer = Csak a kiszolgáló tekintheti meg a szektorokat. uncover = Felfedés configure = Rakomány szerkesztése diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 35d4ec89c6..09305fe156 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -676,7 +676,6 @@ requirement.capture = Kuasai {0} requirement.onplanet = Kendalikan Sektor Di {0} requirement.onsector = Mendarat Di Sektor: {0} launch.text = Luncurkan -research.multiplayer = Hanya host yang dapat meneliti barang. map.multiplayer = Hanya host yang dapat melihat sektor. uncover = Buka configure = Konfigurasi Muatan diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 4e1a3dbdff..da796178f8 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -663,7 +663,6 @@ requirement.capture = Cattura {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Lancia -research.multiplayer = Solo l'host può scoprire gli oggetti. map.multiplayer = Solo l'host può vedere i settori. uncover = Scopri configure = Configura Equipaggiamento diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 9889674eed..cbfd37787d 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -667,7 +667,6 @@ requirement.capture = 制圧: {0} requirement.onplanet = {0} の制御セクター requirement.onsector = セクターに着陸: {0} launch.text = 発射 -research.multiplayer = 研究できるのはホストのみです。 map.multiplayer = ホストのみがセクターを表示できます。 uncover = 開放 configure = 積み荷の設定 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 003a678379..03eb116425 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -676,7 +676,6 @@ requirement.capture = {0} 점령 requirement.onplanet = {0} 구역을 제어 requirement.onsector = {0} 구역에 착륙 launch.text = 출격 -research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 연구할 수 있습니다. map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 다른 구역을 보고, 이동이 가능합니다. uncover = 지역 개방 configure = 초기자원 설정 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 261b9ddb61..858b90fd21 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Launch -research.multiplayer = Only the host can research items. map.multiplayer = Only the host can view sectors. uncover = Atidengti configure = Keisti resursų kiekį diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index e52bce1e57..254994e0d0 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -670,7 +670,6 @@ requirement.capture = Verover {0} requirement.onplanet = Controlesector Op {0} requirement.onsector = Land Op Sector: {0} launch.text = Lanceer -research.multiplayer = Alleen de host kan dingen onderzoeken. map.multiplayer = Alleen de host kan sectoren bekijken. uncover = Ontmasker configure = Configureer startinventaris diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 93facd0d5f..c33ac1fb2c 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {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 diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 65faeb583c..f758e5ea5c 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -665,7 +665,6 @@ requirement.capture = Zdobądź {0} requirement.onplanet = Kontrolowane Sektory na {0} requirement.onsector = Wyląduj na Sektorze: {0} launch.text = Wystrzel -research.multiplayer = Tylko host może odkrywać przedmioty. map.multiplayer = Tylko host może widzieć sektory uncover = Odkryj configure = Skonfiguruj Ładunek diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 24acb0ce2e..66f5b048c8 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -668,7 +668,6 @@ requirement.capture = Capture {0} requirement.onplanet = Controle o setor em {0} requirement.onsector = Lance no setor: {0} launch.text = Lançar -research.multiplayer = Apenas o host pode pesquisar itens. map.multiplayer = Apenas o host consegue ver os setores. uncover = Descobrir configure = Configurar carregamento diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 15e219d50f..8683532444 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Launch -research.multiplayer = Only the host can research items. map.multiplayer = Only the host can view sectors. uncover = Descobrir configure = Configurar carregamento diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 30eff1c4ff..0fe8d0feaf 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -667,7 +667,6 @@ requirement.capture = Capturează {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = Lansează -research.multiplayer = Doar gazda poate cerceta noi tehnologii. map.multiplayer = Doar gazda poate vedea harta sectoarelor. uncover = Descoperă configure = Configurează Încărcarea diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 0b1f1ff407..00aba16b3b 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -667,7 +667,6 @@ requirement.capture = Захватите {0} requirement.onplanet = Возьмите сектор под контроль на {0} requirement.onsector = Высадитесь на сектор: {0} launch.text = Высадка -research.multiplayer = Только хост может исследовать предметы. map.multiplayer = Только хост может просматривать секторы. uncover = Раскрыть configure = Конфигурация выгрузки diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 2101460c98..374e767835 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -667,7 +667,6 @@ requirement.capture = Zauzmi {0} requirement.onplanet = Kontroliši Sektor Na {0} requirement.onsector = Sleti Na Sektor: {0} launch.text = Lansiraj -research.multiplayer = Only the host can research items. map.multiplayer = Only the host can view sectors. uncover = Razotkrij configure = Konfiguriši Zalihe diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index de375dbecf..4cfebd8c02 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {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 diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 695d2d8da0..76414e00ee 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -668,7 +668,6 @@ requirement.capture = ยึดครอง {0} requirement.onplanet = ควบคุมเซ็กเตอร์บน {0} requirement.onsector = ลงจอดบนเซ็กเตอร์: {0} launch.text = ลุย! -research.multiplayer = โฮสต์เท่านั้นที่วิจัยได้ map.multiplayer = โฮสต์เท่านั้นที่สามารถดูเซ็กเตอร์ได้ uncover = เปิดเผย configure = ตั้งค่าทรัพยากร diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index d95e12e50b..0fcea78285 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -660,7 +660,6 @@ requirement.capture = Capture {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {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 diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 9e77643639..0084a49dba 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -667,7 +667,6 @@ requirement.capture = {0} sektörünü ele geçir requirement.onplanet = Sektör {0} Kontrol Et requirement.onsector = Sektör {0}e İniş Yap launch.text = Kalkış -research.multiplayer = Sadece sunucu sahibi araştırma yapabilir. map.multiplayer = Sadece sunucu sahibi sektörleri görebilir. uncover = Aç configure = Ekipmanı Yapılandır diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index a87a5b4d9f..fe8f2c51d0 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -670,7 +670,6 @@ requirement.capture = Захопіть {0} requirement.onplanet = Установіть контроль над сектором на {0} requirement.onsector = Приземліться на такий сектор: {0} launch.text = Запуск -research.multiplayer = Лише власник сервера має змогу досліджувати предмети. map.multiplayer = Лише власник може переглядати сектори. uncover = Розкрити configure = Налаштувати вивантаження diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 3b8967453e..c4c0b8346c 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -676,7 +676,6 @@ requirement.capture = Chiếm {0} requirement.onplanet = Kiểm soát khu vực {0} requirement.onsector = Đáp xuống khu vực: {0} launch.text = Phóng -research.multiplayer = Chỉ máy chủ mới có thể nghiên cứu các mục. map.multiplayer = Chỉ máy chủ mới có thể xem các khu vực. uncover = Khám phá configure = Cấu hình vật phẩm khởi đầu diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 0f335c5390..b443cff7e2 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -671,7 +671,6 @@ requirement.capture = 占领{0} requirement.onplanet = 控制区块{0} requirement.onsector = 着陆区块:{0} launch.text = 发射 -research.multiplayer = 只有服务器创建者能研究科技。 map.multiplayer = 只有服务器创建者能查看区块。 uncover = 已解锁 configure = 设定装运的物资 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index f7dda11538..551725df29 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -668,7 +668,6 @@ requirement.capture = 捕獲 {0} requirement.onplanet = Control Sector On {0} requirement.onsector = Land On Sector: {0} launch.text = 發射 -research.multiplayer = 只有管理者可以使用這個物品 map.multiplayer = 只有管理者可以查看地圖 uncover = 探索 configure = 資源配置 From 4f4e2f89f3170c554b5909b670b2b62510d60ed8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Oct 2024 00:21:39 -0400 Subject: [PATCH 25/49] Minor visual fixes --- core/src/mindustry/ui/dialogs/ResearchDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index 03fecf7563..e9286ab8f6 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -478,7 +478,7 @@ protected void updateRelative(float percentDelta){ button.setDisabled(net.client() && !mobile); float offset = (Core.graphics.getHeight() % 2) / 2f; button.setPosition(node.x + panX + width / 2f, node.y + panY + height / 2f + offset, Align.center); - button.getStyle().up = !locked(node.node) ? Tex.buttonOver : !selectable(node.node) || !canSpend(node.node) ? Tex.buttonRed : Tex.button; + button.getStyle().up = !locked(node.node) ? Tex.buttonOver : !selectable(node.node) || (!canSpend(node.node) && !net.client()) ? Tex.buttonRed : Tex.button; ((TextureRegionDrawable)button.getStyle().imageUp).setRegion(node.selectable ? node.node.content.uiIcon : Icon.lock.getRegion()); button.getImage().setColor(!locked(node.node) ? Color.white : node.selectable ? Color.gray : Pal.gray); From c07061e94f38d2971f9c5c8c642973b5809f8eee Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Oct 2024 00:36:00 -0400 Subject: [PATCH 26/49] Less error message spam in debug mode --- core/src/mindustry/net/ArcNetProvider.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java index e7a1a33dd6..4d984265fc 100644 --- a/core/src/mindustry/net/ArcNetProvider.java +++ b/core/src/mindustry/net/ArcNetProvider.java @@ -42,7 +42,12 @@ public class ArcNetProvider implements NetProvider{ public ArcNetProvider(){ ArcNet.errorHandler = e -> { if(Log.level == LogLevel.debug){ - Log.debug(Strings.getStackTrace(e)); + var finalCause = Strings.getFinalCause(e); + + //"connection is closed" is a pointless annoying error that should not be logged + if(!"Connection is closed.".equals(finalCause.getMessage())){ + Log.debug(Strings.getStackTrace(e)); + } } }; @@ -361,10 +366,12 @@ protected Object next(byte[] bytes){ @Override public void send(Object object, boolean reliable){ try{ - if(reliable){ - connection.sendTCP(object); - }else{ - connection.sendUDP(object); + if(connection.isConnected()){ + if(reliable){ + connection.sendTCP(object); + }else{ + connection.sendUDP(object); + } } }catch(Exception e){ Log.err(e); From 6a05ac68e1d3ef7a1034a96a0635807d516b61eb Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Oct 2024 18:26:05 -0400 Subject: [PATCH 27/49] Fixed banned blocks in Mycelial Bastion --- core/assets/maps/mycelialBastion.msav | Bin 60772 -> 60738 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/assets/maps/mycelialBastion.msav b/core/assets/maps/mycelialBastion.msav index 13b6d80e6ffc700762de21bbb853447eb2979a45..e4d41aab475303097e5737580545df5de08982e8 100644 GIT binary patch delta 58730 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 delta 58703 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 Date: Mon, 14 Oct 2024 19:38:50 -0400 Subject: [PATCH 28/49] Fallback URL for mod list --- core/src/mindustry/Vars.java | 6 +- core/src/mindustry/ui/dialogs/ModsDialog.java | 64 +++++++++++-------- 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index c838f55c15..b18ee6062f 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -71,10 +71,12 @@ public class Vars implements Loadable{ public static final String discordURL = "https://discord.gg/mindustry"; /** URL the links to the wiki's modding guide.*/ public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/"; - /** URL to the JSON file containing all the BE servers. Only queried in BE. */ + /** URLs to the JSON file containing all the BE servers. Only queried in BE. */ public static final String[] serverJsonBeURLs = {"https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_be.json", "https://cdn.jsdelivr.net/gh/anuken/mindustryserverlist/servers_be.json"}; - /** URL to the JSON file containing all the stable servers. */ + /** URLs to the JSON file containing all the stable servers. */ public static final String[] serverJsonURLs = {"https://raw.githubusercontent.com/Anuken/MindustryServerList/master/servers_v8.json", "https://cdn.jsdelivr.net/gh/anuken/mindustryserverlist/servers_v8.json"}; + /** URLs to the JSON files containing the list of mods. */ + public static final String[] modJsonURLs = {"https://raw.githubusercontent.com/Anuken/MindustryMods/master/mods.json", "https://cdn.jsdelivr.net/gh/anuken/mindustrymods/mods.json"}; /** URL of the github issue report template.*/ public static final String reportIssueURL = "https://github.com/Anuken/Mindustry/issues/new?labels=bug&template=bug_report.md"; /** list of built-in servers.*/ diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 193c616540..f32ef1e9d5 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -112,35 +112,49 @@ void modError(Throwable error){ } } - void getModList(Cons> listener){ - if(modList == null){ - Http.get("https://raw.githubusercontent.com/Anuken/MindustryMods/master/mods.json", response -> { - String strResult = response.getResultAsString(); + void getModList(int index, Cons> listener){ + if(index >= modJsonURLs.length) return; - Core.app.post(() -> { - try{ - modList = JsonIO.json.fromJson(Seq.class, ModListing.class, strResult); + if(modList != null){ + listener.get(modList); + return; + } - var d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - Func parser = text -> { - try{ - return d.parse(text); - }catch(Exception e){ - return new Date(); - } - }; + Http.get(modJsonURLs[index], response -> { + String strResult = response.getResultAsString(); + + Core.app.post(() -> { + try{ + modList = JsonIO.json.fromJson(Seq.class, ModListing.class, strResult); + + var d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + Func parser = text -> { + try{ + return d.parse(text); + }catch(Exception e){ + return new Date(); + } + }; - modList.sortComparing(m -> parser.get(m.lastUpdated)).reverse(); - listener.get(modList); - }catch(Exception e){ - e.printStackTrace(); - ui.showException(e); + modList.sortComparing(m -> parser.get(m.lastUpdated)).reverse(); + listener.get(modList); + }catch(Exception e){ + Log.err(e); + ui.showException(e); + } + }); + }, error -> { + if(index < modJsonURLs.length - 1){ + getModList(index + 1, listener); + }else{ + Core.app.post(() -> { + modError(error); + if(browser != null){ + browser.hide(); } }); - }, error -> Core.app.post(() -> modError(error))); - }else{ - listener.get(modList); - } + } + }); } void setup(){ @@ -456,7 +470,7 @@ private void rebuildBrowser(){ int cols = (int)Math.max(Core.graphics.getWidth() / Scl.scl(480), 1); - getModList(rlistings -> { + getModList(0, rlistings -> { browserTable.clear(); int i = 0; From 82de8ca468d4078fae57daf7d9f8024262bbc82e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Oct 2024 21:29:56 -0400 Subject: [PATCH 29/49] Payload bugfixes --- core/src/mindustry/entities/comp/PayloadComp.java | 2 +- .../mindustry/world/blocks/power/ThermalGenerator.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 38b2dcd429..223716d9bd 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -131,7 +131,7 @@ boolean tryDropPayload(Payload payload){ } //drop off payload on an acceptor if possible - if(on != null && on.build != null && on.build.acceptPayload(on.build, payload)){ + if(on != null && on.build != null && on.build.team == team && on.build.acceptPayload(on.build, payload)){ Fx.unitDrop.at(on.build); on.build.handlePayload(on.build, payload); return true; diff --git a/core/src/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/mindustry/world/blocks/power/ThermalGenerator.java index 9c71e77ca8..1af92ce5da 100644 --- a/core/src/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/mindustry/world/blocks/power/ThermalGenerator.java @@ -88,9 +88,15 @@ public void updateTile(){ } } + @Override + public void afterPickedUp(){ + super.afterPickedUp(); + sum = 0f; + } + @Override public float totalProgress(){ - return enabled ? super.totalProgress() : 0f; + return enabled && sum > 0 ? super.totalProgress() : 0f; } @Override From c7def5fa5454f3c2e6d570906a0a37a174c8bb3f Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 18 Oct 2024 19:35:14 -0400 Subject: [PATCH 30/49] Better error for writeable dex mod import failure --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/ui/dialogs/ModsDialog.java | 4 +++- gradle.properties | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ccbcf0a603..c345e2a1ce 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -749,6 +749,7 @@ 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. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index f32ef1e9d5..92d912419e 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -107,6 +107,8 @@ void modError(Throwable error){ ui.showErrorMessage("@feature.unsupported"); }else if(error instanceof HttpStatusException st){ ui.showErrorMessage(Core.bundle.format("connectfail", Strings.capitalize(st.status.toString().toLowerCase()))); + }else if(error.getMessage() != null && error.getMessage().toLowerCase(Locale.ROOT).contains("writable dex")){ + ui.showException("@error.moddex", error); }else{ ui.showException(error); } @@ -189,7 +191,7 @@ void setup(){ mods.importMod(file); setup(); }catch(Exception e){ - ui.showException(e); + ui.showException(e.getMessage() != null && e.getMessage().toLowerCase(Locale.ROOT).contains("writable dex") ? "@error.moddex" : "", e); Log.err(e); } }, "zip", "jar"); diff --git a/gradle.properties b/gradle.properties index e0f0692c65..d148b10c17 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=c1e3b23ddd +archash=079015dec0 From 176fa35ad19305ca9c8d5d528c9bd0a5a25a673c Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 18 Oct 2024 23:37:41 +0000 Subject: [PATCH 31/49] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 93e6c767b3..7ddef30946 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -726,6 +726,7 @@ error.mapnotfound = Файл карты не знойдзены! error.io = Сеткавая памылка ўводу-высновы. error.any = Невядомая сеткавая памылка. error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Дождж weather.snowing.name = Снег diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 8e25452e90..8841bdb49e 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -733,6 +733,7 @@ error.mapnotfound = Не е намерен файл с карта! error.io = Мрежова I/O грешка. error.any = Неизвестна мрежова грешка. error.bloom = Неуспешно инициализиране на Сияния.\nВашето устройство може да не поддържа този ефект. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Дъжд weather.snowing.name = Сняг diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 3edce05427..c480dee262 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -737,6 +737,7 @@ error.mapnotfound = El fitxer del mapa no s’ha trobat! error.io = S’ha produït un error d’entrada/sortida de la xarxa. error.any = S’ha produït un error de xarxa desconegut. error.bloom = No s’ha pogut inicialitzar l’efecte «bloom».\nPotser el dispositiu no admet aquesta funció. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Pluja weather.snowing.name = Neu diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index ffe95d60ba..72164384ac 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -735,6 +735,7 @@ error.mapnotfound = Soubor s mapou nebyl nalezen! error.io = Vstupně/výstupní (I/O) chyba sítě. error.any = Neznámá chyba sítě. error.bloom = Chyba inicializace filtru Bloom.\nTvé zařízení ho nejspíš nepodporuje. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Déšť weather.snowing.name = Sníh diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index b2a58236a5..92f0a6d8c4 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -727,6 +727,7 @@ error.mapnotfound = Bane-filen er blevet væk! error.io = Network I/O-fejl. error.any = Ukendt netværksfejl. error.bloom = Kunne ikke etablere bloom-effekt.\nMåske understøtter din enhed den ikke. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Regn weather.snowing.name = Sne diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 5906a7cce0..baf7a9dd92 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -744,6 +744,7 @@ error.mapnotfound = Kartendatei nicht gefunden! error.io = Netzwerk-I/O-Fehler. error.any = Unbekannter Netzwerkfehler. error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Regen weather.snowing.name = Schnee diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 69636219d2..ce12000a68 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -741,6 +741,7 @@ error.mapnotfound = ¡Archivo de mapa no encontrado! error.io = Error I/O de conexión. error.any = Error de red desconocido. error.bloom = Error al cargar el efecto de bloom.\nPuede que tu dispositivo no sea compatible con esta característica. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Lluvia weather.snowing.name = Nieve diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 7b5647fb97..8371a483a9 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -727,6 +727,7 @@ error.mapnotfound = Maailmafaili ei leitud! error.io = Võrgu sisend-väljundi viga. error.any = Teadmata viga võrgus. error.bloom = Bloom-efekti lähtestamine ebaõnnestus.\nSinu seade ei pruugi seda efekti toetada. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 2de3c4f584..c20629a7fb 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -729,6 +729,7 @@ error.mapnotfound = Ez da mapa-fitxategia aurkitu! error.io = Sareko irteera/sarrera errorea. error.any = Sareko errore ezezaguna. error.bloom = Ezin izan da distira hasieratu.\nAgian zure gailuak ez du onartzen. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index cf5ed8fd47..4801f5da21 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -727,6 +727,7 @@ error.mapnotfound = Karttatiedostoa ei löydy! error.io = Verkon I/O-virhe. error.any = Tuntematon verkon virhe. error.bloom = Bloomin initialisointi epäonnistui.\nLaitteesi ei ehkä tue sitä. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Sade weather.snowing.name = Lumi diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 4b01f0562d..7593355720 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -727,6 +727,7 @@ error.mapnotfound = Hindi nakita ang file ng mapa! error.io = Network I/O error. error.any = Unknown network error. error.bloom = Nabigong simulan ang bloom.\nMaaaring hindi ito sinusuportahan ng iyong device. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 945b4183f3..faf4eb3a38 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -747,6 +747,7 @@ error.mapnotfound = Fichier de carte introuvable ! error.io = Erreur de Réseau (I/O) error.any = Erreur de réseau inconnue. error.bloom = Échec de l'initialisation du flou lumineux.\nIl se peut que votre appareil ne le prenne pas en charge. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Pluie weather.snowing.name = Neige diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index ad4b9922e7..571a71571d 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -749,6 +749,7 @@ error.mapnotfound = A pályafájl nem található! error.io = Internet I/O hiba. error.any = Ismeretlen hálózati hiba. error.bloom = A bloom hatás előkészítése nem sikerült.\nElőfordulhat, hogy az eszköz nem támogatja. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Eső weather.snowing.name = Hóesés diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 09305fe156..909d285964 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -749,6 +749,7 @@ error.mapnotfound = File peta tidak ditemaukan! error.io = Terjadi kesalahan jaringan I/O. error.any = Terjadi kesalahan Jaringan tidak diketahui. error.bloom = Gagal untuk menjalankan efek bloom.\nPerangkat Anda mungkin tidak mendukung fitur ini. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Hujan weather.snowing.name = Salju diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index da796178f8..f55031aa32 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -731,6 +731,7 @@ error.mapnotfound = Mappa non trovata! error.io = Errore I/O di rete. error.any = Errore di rete sconosciuto. error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non supportarle. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Pioggia weather.snowing.name = Neve diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index cbfd37787d..d065070204 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -735,6 +735,7 @@ error.mapnotfound = マップファイルが見つかりません! error.io = I/O ネットワークエラーです。 error.any = 不明なネットワークエラーです。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = 雨 weather.snowing.name = 雪 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 03eb116425..354fe13ac1 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -749,6 +749,7 @@ error.mapnotfound = 맵 파일을 찾을 수 없습니다! error.io = 네트워크 I/O 오류 error.any = 알 수 없는 네트워크 오류 error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n기기가 이 기능을 지원하지 않는 것일 수도 있습니다. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = 비 weather.snowing.name = 눈 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 858b90fd21..301050d866 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -727,6 +727,7 @@ error.mapnotfound = Žemėlapis nerastas! error.io = Tinklo I/O klaida. error.any = Nžinoma tinklo klaida. error.bloom = Nepavyko inicijuoti spindėjimo.\nJūsų įrenginys gali nepalaikyti šios funkcijos. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 254994e0d0..d5e07da0a3 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -738,6 +738,7 @@ error.mapnotfound = Kaartbestand niet gevonden! error.io = Netwerk I/O fout. error.any = Onbekende netwerk fout. error.bloom = Bloom aanzetten mislukt.\nJe apparaat ondersteunt het waarschijnlijk niet. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Regen weather.snowing.name = Sneeuw diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index c33ac1fb2c..4bc41401e9 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -727,6 +727,7 @@ 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. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index f758e5ea5c..042c2c1418 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -733,6 +733,7 @@ error.mapnotfound = Plik mapy nie został znaleziony! error.io = Błąd sieciowy I/O. error.any = Nieznany błąd sieci. error.bloom = Nie udało się załadować funkcji bloom.\nTwoje urządzenie może nie wspierać tej funkcji. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Deszcz weather.snowing.name = Śnieg diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 66f5b048c8..7bfe4333fc 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -741,6 +741,7 @@ error.mapnotfound = Arquivo de mapa não encontrado! error.io = Erro I/O de internet. error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Chuva weather.snowing.name = Neve diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 8683532444..00416f7dcf 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -727,6 +727,7 @@ error.mapnotfound = Ficheiro de mapa não encontrado! error.io = Erro I/O de internet. error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu aparelho talvez não o suporte. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 0fe8d0feaf..1f1a1c6565 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -735,6 +735,7 @@ error.mapnotfound = Fișierul hărții nu a fost găsit! error.io = Eroare de rețea I/O. error.any = Eroare de rețea necunoscută. error.bloom = Inițializarea strălucirii a eșuat.\nS-ar putea ca dispozitivul tău să nu suporte funcția. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Ploaie weather.snowing.name = Ninsoare diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 00aba16b3b..d741e3afad 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -735,6 +735,7 @@ error.mapnotfound = Файл карты не найден! error.io = Сетевая ошибка ввода-вывода. error.any = Неизвестная сетевая ошибка. error.bloom = Не удалось инициализировать свечение (Bloom).\nВозможно, ваше устройство не поддерживает его. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Дождь weather.snowing.name = Снегопад diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 374e767835..c5017fd157 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -736,6 +736,7 @@ error.mapnotfound = Datoteka mape nije pronađena! error.io = I/O mrežna greška. error.any = Nepoznata greška u mreži. error.bloom = Failed to initialize bloom.\nYour device may not support it. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Kiša weather.snowing.name = Sneg diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 4cfebd8c02..420b054bdb 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -727,6 +727,7 @@ error.mapnotfound = Map file not found! error.io = Network I/O error. error.any = Okänt nätverksfel. error.bloom = Failed to initialize bloom.\nYour device may not support it. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 76414e00ee..d986feb2cf 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -736,6 +736,7 @@ error.mapnotfound = ไม่พบไฟล์แมพ error.io = ข้อผิดพลาด I/O ของเครือข่าย error.any = ข้อผิดพลาด: เครือข่ายที่ไม่รู้จัก error.bloom = ไม่สามารถเริ่มต้นบลูมได้\nอุปกรณ์ของคุณอาจไม่รองรับ +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = ฝน weather.snowing.name = หิมะตก diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 0fcea78285..db35706606 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -727,6 +727,7 @@ error.mapnotfound = Map file not found! error.io = Network I/O error. error.any = Unkown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Rain weather.snowing.name = Snow diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 0084a49dba..3e6a43e289 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -735,6 +735,7 @@ error.mapnotfound = Harita dosyası bulunamadı! error.io = Ağ I/O hatası. error.any = Bilinmeyen ağ hatası. error.bloom = Kamaşma başlatılamadı.\nCihazınız bu özelliği desteklemiyor olabilir. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Yağmur weather.snowing.name = Kar diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index fe8f2c51d0..376e6999dc 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -743,6 +743,7 @@ error.mapnotfound = Файл мапи не знайдено! error.io = Мережева помилка введення-виведення. error.any = Невідома мережева помилка error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Дощ weather.snowing.name = Сніг diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index c4c0b8346c..efe92b08ea 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -749,6 +749,7 @@ error.mapnotfound = Không tìm thấy tệp bản đồ! error.io = Lỗi mạng đầu vào/ra. error.any = Lỗi mạng không xác định. error.bloom = Không khởi tạo được hiệu ứng phát sáng.\nThiết bị của bạn có thể không hỗ trợ. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = Mưa weather.snowing.name = Tuyết diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index b443cff7e2..bba9cf8327 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -744,6 +744,7 @@ error.mapnotfound = 找不到地图文件! error.io = 网络I/O错误。 error.any = 未知网络错误。 error.bloom = 未能初始化光效。 \n您的设备可能不支持。 +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = 降雨 weather.snowing.name = 降雪 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 551725df29..a193835f75 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -741,6 +741,7 @@ error.mapnotfound = 找不到地圖! error.io = 網路錯誤。 error.any = 未知網路錯誤。 error.bloom = 初始化特效失敗。\n您的裝置可能不支援 +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. weather.rain.name = 雨 weather.snowing.name = 雪 From 6250b93656e6b731a14b1c0919d0ec3eca34a99d Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 19 Oct 2024 02:16:22 -0400 Subject: [PATCH 32/49] Grammar fix --- core/assets/bundles/bundle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c345e2a1ce..4b6a4d8936 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -749,7 +749,7 @@ 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. -error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround to this issue. +error.moddex = Mindustry is unable to load this mod.\nYour device is blocking import of Java mods due to recent changes in Android.\nThere is no known workaround for this issue. weather.rain.name = Rain weather.snowing.name = Snow From 3b8fdeef135f7e7328756d27fb491855717df399 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 20 Oct 2024 00:25:26 -0400 Subject: [PATCH 33/49] Removed flabel import due to ambiguous import --- core/assets/scripts/global.js | 2 -- tools/src/mindustry/tools/ScriptMainGenerator.java | 1 - 2 files changed, 3 deletions(-) diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 4933203574..16c1ee106e 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -44,8 +44,6 @@ function extend(/*Base, ..., def*/){ importPackage(Packages.arc) importPackage(Packages.arc.audio) importPackage(Packages.arc.files) -importPackage(Packages.arc.flabel) -importPackage(Packages.arc.flabel.effects) importPackage(Packages.arc.func) importPackage(Packages.arc.graphics) importPackage(Packages.arc.graphics.g2d) diff --git a/tools/src/mindustry/tools/ScriptMainGenerator.java b/tools/src/mindustry/tools/ScriptMainGenerator.java index c630004e0c..e0e5bcc6ff 100644 --- a/tools/src/mindustry/tools/ScriptMainGenerator.java +++ b/tools/src/mindustry/tools/ScriptMainGenerator.java @@ -42,7 +42,6 @@ public static void main(String[] args) throws Exception{ getClasses("arc.input"), getClasses("arc.util"), getClasses("arc.files"), - getClasses("arc.flabel"), getClasses("arc.struct") ); classes.addAll(whitelist); From bba41efb2804a109b75ed16225b3cc4c7be2a0b2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 21 Oct 2024 12:23:26 -0400 Subject: [PATCH 34/49] More JS package conflict fixes --- core/assets/scripts/global.js | 1 + tools/src/mindustry/tools/ScriptMainGenerator.java | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 16c1ee106e..d91fe9950c 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -44,6 +44,7 @@ function extend(/*Base, ..., def*/){ importPackage(Packages.arc) importPackage(Packages.arc.audio) importPackage(Packages.arc.files) +importPackage(Packages.arc.flabel) importPackage(Packages.arc.func) importPackage(Packages.arc.graphics) importPackage(Packages.arc.graphics.g2d) diff --git a/tools/src/mindustry/tools/ScriptMainGenerator.java b/tools/src/mindustry/tools/ScriptMainGenerator.java index e0e5bcc6ff..4b0fdac9e5 100644 --- a/tools/src/mindustry/tools/ScriptMainGenerator.java +++ b/tools/src/mindustry/tools/ScriptMainGenerator.java @@ -24,7 +24,7 @@ public class ScriptMainGenerator{ public static void main(String[] args) throws Exception{ String base = "mindustry"; - Seq blacklist = Seq.with("tools"); + Seq blacklist = Seq.with("tools", "arc.flabel.effects"); Seq nameBlacklist = Seq.with(); Seq> whitelist = Seq.with(Draw.class, Fill.class, Lines.class, Core.class, TextureAtlas.class, TextureRegion.class, Time.class, System.class, PrintStream.class, AtlasRegion.class, String.class, Mathf.class, Angles.class, Color.class, Runnable.class, Object.class, Icon.class, Tex.class, Shader.class, @@ -42,13 +42,14 @@ public static void main(String[] args) throws Exception{ getClasses("arc.input"), getClasses("arc.util"), getClasses("arc.files"), + getClasses("arc.flabel"), getClasses("arc.struct") ); classes.addAll(whitelist); classes.sort(Structs.comparing(Class::getName)); classes.removeAll(type -> type.isSynthetic() || type.isAnonymousClass() || type.getCanonicalName() == null || Modifier.isPrivate(type.getModifiers()) - || blacklist.contains(s -> type.getName().startsWith(base + "." + s + ".")) || nameBlacklist.contains(type.getSimpleName())); + || blacklist.contains(s -> type.getName().startsWith(base + "." + s + ".")) || nameBlacklist.contains(type.getSimpleName()) || blacklist.contains(type.getPackage().getName())); classes.add(NetConnection.class, SaveIO.class, SystemCursor.class); classes.distinct(); From 4a2d77572f244f8a72f845c2deb7bf30596012a5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 21 Oct 2024 16:44:27 -0400 Subject: [PATCH 35/49] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d148b10c17..a8193906dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=079015dec0 +archash=8f7432ed7b From 0b860fbfe7fe92b15e19fc0140cd86ec40430428 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 21 Oct 2024 16:56:31 -0400 Subject: [PATCH 36/49] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a8193906dd..17513c23ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=8f7432ed7b +archash=d69ed6371a From 899281abe14c51bf0d50fa9c3e084de92fa0a309 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 21 Oct 2024 17:48:20 -0400 Subject: [PATCH 37/49] Fixed #10280 --- .../mindustry/world/blocks/logic/LogicBlock.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/world/blocks/logic/LogicBlock.java b/core/src/mindustry/world/blocks/logic/LogicBlock.java index b7baa0c587..b978be9993 100644 --- a/core/src/mindustry/world/blocks/logic/LogicBlock.java +++ b/core/src/mindustry/world/blocks/logic/LogicBlock.java @@ -377,13 +377,15 @@ public void updateCode(String str, boolean keep, Cons assemble){ asm.putConst("@links", executor.links.length); asm.putConst("@ipt", instructionsPerTick); + Object oldUnit = null; + if(keep){ + oldUnit = executor.unit.objval; //store any older variables for(LVar var : executor.vars){ - boolean unit = var.name.equals("@unit"); - if(!var.constant || unit){ + if(!var.constant){ LVar dest = asm.getVar(var.name); - if(dest != null && (!dest.constant || unit)){ + if(dest != null && !dest.constant){ dest.isobj = var.isobj; dest.objval = var.objval; dest.numval = var.numval; @@ -395,6 +397,10 @@ public void updateCode(String str, boolean keep, Cons assemble){ //inject any extra variables if(assemble != null){ assemble.get(asm); + + if(oldUnit == null && asm.getVar("@unit") != null && asm.getVar("@unit").objval instanceof Unit u){ + oldUnit = u; + } } asm.getVar("@this").setconst(this); @@ -402,6 +408,8 @@ public void updateCode(String str, boolean keep, Cons assemble){ asm.putConst("@thisy", World.conv(y)); executor.load(asm); + executor.unit.objval = oldUnit; + executor.unit.isobj = true; }catch(Exception e){ //handle malformed code and replace it with nothing executor.load(LAssembler.assemble(code = "", privileged)); From b1671f699db3039d059ea246b2aa06724dd7efb9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 24 Oct 2024 23:43:04 -0400 Subject: [PATCH 38/49] Minor about dialog fixes --- core/src/mindustry/ui/dialogs/AboutDialog.java | 6 +++--- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/AboutDialog.java b/core/src/mindustry/ui/dialogs/AboutDialog.java index fe755d8879..24a49ced6c 100644 --- a/core/src/mindustry/ui/dialogs/AboutDialog.java +++ b/core/src/mindustry/ui/dialogs/AboutDialog.java @@ -41,7 +41,7 @@ void setup(){ ScrollPane pane = new ScrollPane(in); for(LinkEntry link : Links.getLinks()){ - if((ios || OS.isMac || steam) && bannedItems.contains(link.name)){ + if((ios || steam) && bannedItems.contains(link.name)){ continue; } @@ -50,7 +50,7 @@ void setup(){ table.table(img -> { img.image().height(h - 5).width(40f).color(link.color); img.row(); - img.image().height(5).width(40f).color(link.color.cpy().mul(0.8f, 0.8f, 0.8f, 1f)); + img.image().height(5).width(40f).color(link.color.cpy().mul(0.6f, 0.6f, 0.8f, 1f)); }).expandY(); table.table(i -> { @@ -64,7 +64,7 @@ void setup(){ inset.labelWrap(link.description).width(w - 100f - h).color(Color.lightGray).growX(); }).padLeft(8); - table.button(Icon.link, Styles.clearNoneTogglei, () -> { + table.button(Icon.link, Styles.clearNonei, () -> { if(link.name.equals("wiki")) Events.fire(Trigger.openWiki); if(!Core.app.openURI(link.link)){ diff --git a/gradle.properties b/gradle.properties index 17513c23ed..cdb1b16516 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=d69ed6371a +archash=d962d6078c From f56806fc50fcbbfa6ff85f9cc22d9769326b1ab9 Mon Sep 17 00:00:00 2001 From: MaKarastY <71918286+makarasty@users.noreply.github.com> Date: Sat, 26 Oct 2024 01:18:48 +0300 Subject: [PATCH 39/49] Update servers_v7.json (#10273) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 54f5f61172..6b8189939b 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -318,7 +318,7 @@ }, { "name": "ArmyOFUkraine", - "address": ["194.247.42.131:27715", "194.247.42.131:27512","220.141.232.67"] + "address": ["194.247.42.131:27715", "194.247.42.131:27512", "194.247.42.130:27505"] }, { "name": "Erbium", From f12085e6196464c385a6d7f7d757bd3e3b7570fb Mon Sep 17 00:00:00 2001 From: hydrophobis <142858559+hydrophobis@users.noreply.github.com> Date: Fri, 25 Oct 2024 19:30:16 -0500 Subject: [PATCH 40/49] Add colorable shields for shield generators (#10232) * Add colorable shields for shield generators Just added a shieldColor variable which defaults to team.color if it is not set or is set to Null * Added @Nullable to BaseShield -> shieldColor --- core/src/mindustry/world/blocks/defense/BaseShield.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/defense/BaseShield.java b/core/src/mindustry/world/blocks/defense/BaseShield.java index 32bc077e8f..bb1f0dd6fe 100644 --- a/core/src/mindustry/world/blocks/defense/BaseShield.java +++ b/core/src/mindustry/world/blocks/defense/BaseShield.java @@ -19,6 +19,8 @@ public class BaseShield extends Block{ //TODO game rule? or field? should vary by base. public float radius = 200f; public int sides = 24; + + public @Nullable Color shieldColor; protected static BaseShieldBuild paramBuild; //protected static Effect paramEffect; @@ -125,7 +127,7 @@ public void drawShield(){ Draw.z(Layer.shields); - Draw.color(team.color, Color.white, Mathf.clamp(hit)); + Draw.color(shieldColor == null ? team.color : shieldColor, Color.white, Mathf.clamp(hit)); if(renderer.animateShields){ Fill.poly(x, y, sides, radius); From 2920f415fb6d9ccf4d1a4f3e1c1fd959db6a4bf1 Mon Sep 17 00:00:00 2001 From: EscoCorp Date: Sun, 27 Oct 2024 05:35:33 +0500 Subject: [PATCH 41/49] Update servers_v7.json (#10294) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 6b8189939b..0491416178 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,7 +1,7 @@ [ { "name": "EscoCorp", - "address": ["81.30.105.171:6567", "81.30.105.171:6568", "202.49.176.213:6567"] + "address": ["202.49.176.213:6567", "202.49.176.213:6568", "202.49.176.213:6569"] }, { "name": "Redundancy Dept", From 7cf578da63a57f0e3926c4acc1c4524d5ec66f56 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 27 Oct 2024 21:16:48 -0400 Subject: [PATCH 42/49] PLT submission - Skeledragon's version --- core/assets/maps/planetaryTerminal.msav | Bin 31032 -> 119509 bytes .../mindustry/content/SerpuloTechTree.java | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/assets/maps/planetaryTerminal.msav b/core/assets/maps/planetaryTerminal.msav index 2cf2df9dd6357642d5648b271de756c7e1316729..c7efc2bfbff2e718ce643610bc14f7364f194af1 100644 GIT binary patch literal 119509 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 =6y-Nc_b-oy2b@LuRH+T9lE!o2 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 EpFI(Vxc~qF literal 31032 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 { }); From 324dd6602e0b3593e5fe8bfc06b72fbb3f2fcae4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 27 Oct 2024 23:59:41 -0400 Subject: [PATCH 43/49] Serpulo tech tree requirement tweaks --- core/src/mindustry/content/SerpuloTechTree.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index bd7daf437f..fad4e43143 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -236,7 +236,7 @@ public static void load(){ node(steamGenerator, Seq.with(new SectorComplete(craters)), () -> { node(thermalGenerator, () -> { - node(differentialGenerator, Seq.with(new SectorComplete(testingGrounds)), () -> { + node(differentialGenerator, () -> { node(thoriumReactor, Seq.with(new Research(Liquids.cryofluid)), () -> { node(impactReactor, () -> { From fd88550b880ec71c793524e81bd81a72246e75b5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 28 Oct 2024 13:33:39 -0400 Subject: [PATCH 44/49] Fixed mobile crash --- core/src/mindustry/input/MobileInput.java | 4 +++- core/src/mindustry/ui/ItemsDisplay.java | 2 ++ core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index fb9e24eac5..f4cb6aaf4f 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -88,9 +88,11 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Check and assign targets for a specific position. */ void checkTargets(float x, float y){ + if(player.dead()) return; + Unit unit = Units.closestEnemy(player.team(), x, y, 20f, u -> !u.dead); - if(unit != null && !player.dead() && player.unit().type.canAttack){ + if(unit != null && player.unit().type.canAttack){ player.unit().mineTile = null; target = unit; }else{ diff --git a/core/src/mindustry/ui/ItemsDisplay.java b/core/src/mindustry/ui/ItemsDisplay.java index f7e62ded29..dc83f5e54d 100644 --- a/core/src/mindustry/ui/ItemsDisplay.java +++ b/core/src/mindustry/ui/ItemsDisplay.java @@ -30,6 +30,8 @@ public void rebuild(ItemSeq items, @Nullable boolean[] shine){ top().left(); margin(0); + if(items == null) return; + table(Tex.button, c -> { c.margin(10).marginLeft(12).marginTop(15f); c.marginRight(12f); diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index 1b309e05b6..082b8c134e 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -89,7 +89,7 @@ public void show(CoreBlock core, Sector sector, Sector destination, Runnable con total.clear(); selected.requirements().each(total::add); universe.getLaunchResources().each(total::add); - valid = sitems.has(total); + valid = sitems.has(total) || PlanetDialog.debugSelect; }; Cons rebuild = table -> { From bbff564f9675ecc5912ce70b3fe09f1170fcf765 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 28 Oct 2024 16:54:01 -0400 Subject: [PATCH 45/49] Configurable plans, taken from Foo's --- core/src/mindustry/core/Renderer.java | 1 + .../mindustry/entities/units/BuildPlan.java | 13 ++- core/src/mindustry/input/DesktopInput.java | 9 ++ core/src/mindustry/input/InputHandler.java | 4 + .../ui/fragments/PlanConfigFragment.java | 83 +++++++++++++++++++ core/src/mindustry/world/Block.java | 10 +++ .../world/blocks/payloads/Constructor.java | 10 ++- .../world/blocks/payloads/PayloadRouter.java | 9 +- .../world/blocks/payloads/PayloadSource.java | 7 ++ .../world/blocks/units/UnitFactory.java | 10 +++ 10 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 core/src/mindustry/ui/fragments/PlanConfigFragment.java diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index ae3ae07e38..22d5e017b0 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -548,6 +548,7 @@ public void showLaunch(CoreBlock coreType){ public void showLaunch(CoreBuild landCore, CoreBlock coreType){ control.input.config.hideConfig(); + control.input.planConfig.hide(); control.input.inv.hide(); this.landCore = landCore; diff --git a/core/src/mindustry/entities/units/BuildPlan.java b/core/src/mindustry/entities/units/BuildPlan.java index 5390f3451f..f9930f707f 100644 --- a/core/src/mindustry/entities/units/BuildPlan.java +++ b/core/src/mindustry/entities/units/BuildPlan.java @@ -4,6 +4,7 @@ import arc.math.geom.*; import arc.math.geom.QuadTree.*; import arc.util.*; +import mindustry.content.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.world.*; @@ -64,7 +65,6 @@ public BuildPlan(int x, int y){ public BuildPlan(){ } - public boolean placeable(Team team){ return Build.validPlace(block, team, x, y, rotation); } @@ -152,6 +152,17 @@ public float drawy(){ return y*tilesize + (block == null ? 0 : block.offset); } + public boolean isDone(){ + Tile tile = world.tile(x, y); + if(tile == null) return true; + Block tblock = tile.block(); + if(breaking){ + return tblock == Blocks.air || tblock == tile.floor(); + }else{ + return tblock == block && (tile.build == null || tile.build.rotation == rotation); + } + } + public @Nullable Tile tile(){ return world.tile(x, y); } diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index ad7f14ee65..2fabd1b23e 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -783,6 +783,15 @@ void pollInput(){ if(getPlan(splan.x, splan.y, splan.block.size, splan) != null){ player.unit().plans().remove(splan, true); } + + if(input.ctrl()){ + inv.hide(); + config.hideConfig(); + planConfig.showConfig(splan); + }else{ + planConfig.hide(); + } + splan = null; } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 0bc95debcb..d4331e3ff5 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -116,6 +116,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public final BlockInventoryFragment inv; public final BlockConfigFragment config; + public final PlanConfigFragment planConfig; private WidgetGroup group = new WidgetGroup(); @@ -136,6 +137,7 @@ public InputHandler(){ group.touchable = Touchable.childrenOnly; inv = new BlockInventoryFragment(); config = new BlockConfigFragment(); + planConfig = new PlanConfigFragment(); Events.on(UnitDestroyEvent.class, e -> { if(e.unit != null && e.unit.isPlayer() && e.unit.getPlayer().isLocal() && e.unit.type.weapons.contains(w -> w.bullet.killShooter)){ @@ -1622,6 +1624,7 @@ boolean checkConfigTap(){ /** Handles tile tap events that are not platform specific. */ boolean tileTapped(@Nullable Building build){ + planConfig.hide(); if(build == null){ inv.hide(); config.hideConfig(); @@ -1897,6 +1900,7 @@ public void add(){ inv.build(group); config.build(group); + planConfig.build(group); } } diff --git a/core/src/mindustry/ui/fragments/PlanConfigFragment.java b/core/src/mindustry/ui/fragments/PlanConfigFragment.java new file mode 100644 index 0000000000..1019fa05b4 --- /dev/null +++ b/core/src/mindustry/ui/fragments/PlanConfigFragment.java @@ -0,0 +1,83 @@ +package mindustry.ui.fragments; + +import arc.*; +import arc.math.*; +import arc.math.geom.*; +import arc.scene.*; +import arc.scene.actions.*; +import arc.scene.ui.layout.*; +import arc.struct.*; +import arc.util.*; +import mindustry.ctype.*; +import mindustry.entities.units.*; +import mindustry.game.*; +import mindustry.world.*; +import mindustry.world.blocks.*; + +import static mindustry.Vars.*; + +/** + * Displays the configuration UI for build plans before they have been placed. + * Shamelessly stolen from Foo's Client. + */ +public class PlanConfigFragment{ + Table table = new Table(); + BuildPlan selected; + + public void build(Group parent){ + table.visible = false; + parent.addChild(table); + + Events.on(EventType.ResetEvent.class, e -> forceHide()); + } + + public void showConfig(BuildPlan plan){ + if(this.selected == plan || plan.block == null){ + hide(); + return; + } + Block block = plan.block; + if(!block.configurable) return; + selected = plan; + table.clear(); + + var options = new Seq(); + block.getPlanConfigs(options); + + if(options.isEmpty()) return; + + ItemSelection.buildTable( + table, options, + () -> selected != null ? (selected.config instanceof UnlockableContent c ? c : null) : null, + content -> { + selected.config = content; + hide(); + }, + block.selectionRows, block.selectionColumns + ); + table.pack(); + table.setTransform(true); + table.visible = true; + table.actions(Actions.scaleTo(0f, 1f), Actions.visible(true), + Actions.scaleTo(1f, 1f, 0.07f, Interp.pow3Out)); + table.update(() -> { + table.setOrigin(Align.center); + if(plan.isDone() || !(control.input.selectPlans.contains(plan) || player.unit().plans.contains(plan))){ + this.hide(); + return; + } + Vec2 pos = Core.input.mouseScreen(plan.drawx(), plan.drawy() - block.size * tilesize / 2.0F - 1); + table.setPosition(pos.x, pos.y, Align.top); + }); + } + + public void forceHide(){ + table.visible = false; + selected = null; + } + + public void hide(){ + selected = null; + table.actions(Actions.scaleTo(0f, 1f, 0.06f, Interp.pow3Out), Actions.visible(false)); + } +} \ No newline at end of file diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index eaafecee8c..9daa65d5aa 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -1431,6 +1431,16 @@ public void flipRotation(BuildPlan req, boolean x){ } } + /** Fills the specified array with the list of configuration options this block has. Only used for plans. */ + public void getPlanConfigs(Seq options){ + if(configurations.containsKey(Item.class)){ + options.add(content.items()); + } + if(configurations.containsKey(Liquid.class)){ + options.add(content.liquids()); + } + } + @Override public double sense(LAccess sensor){ return switch(sensor){ diff --git a/core/src/mindustry/world/blocks/payloads/Constructor.java b/core/src/mindustry/world/blocks/payloads/Constructor.java index 695600afdd..2983023068 100644 --- a/core/src/mindustry/world/blocks/payloads/Constructor.java +++ b/core/src/mindustry/world/blocks/payloads/Constructor.java @@ -7,6 +7,7 @@ import arc.util.*; import arc.util.io.*; import mindustry.*; +import mindustry.ctype.*; import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.blocks.storage.*; @@ -44,10 +45,15 @@ public void setStats(){ stats.add(Stat.output, "@x@ ~ @x@", minBlockSize, minBlockSize, maxBlockSize, maxBlockSize); } + @Override + public void getPlanConfigs(Seq options){ + options.add(content.blocks().select(this::canProduce)); + } + public boolean canProduce(Block b){ return b.isVisible() && b.size >= minBlockSize && b.size <= maxBlockSize && !(b instanceof CoreBlock) && !state.rules.isBanned(b) && b.environmentBuildable() && (filter.isEmpty() || filter.contains(b)); } - + public class ConstructorBuild extends BlockProducerBuild{ public @Nullable Block recipe; @@ -65,7 +71,7 @@ public void buildConfiguration(Table table){ public Object config(){ return recipe; } - + @Override public void drawSelect(){ if(recipe != null){ diff --git a/core/src/mindustry/world/blocks/payloads/PayloadRouter.java b/core/src/mindustry/world/blocks/payloads/PayloadRouter.java index 20fbde8091..e2219de3cf 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadRouter.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadRouter.java @@ -4,6 +4,7 @@ import arc.graphics.g2d.*; import arc.math.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import arc.util.io.*; import mindustry.*; @@ -22,7 +23,7 @@ public class PayloadRouter extends PayloadConveyor{ public boolean invert = false; - + public @Load("@-over") TextureRegion overRegion; public PayloadRouter(String name){ @@ -45,6 +46,12 @@ public void drawPlanRegion(BuildPlan plan, Eachable list){ Draw.rect(overRegion, plan.drawx(), plan.drawy()); } + @Override + public void getPlanConfigs(Seq options){ + options.add(content.blocks().select(this::canSort)); + options.add(content.units().select(this::canSort)); + } + public boolean canSort(Block b){ return b.isVisible() && b.size <= size && !(b instanceof CoreBlock) && !state.rules.isBanned(b) && b.environmentBuildable(); } diff --git a/core/src/mindustry/world/blocks/payloads/PayloadSource.java b/core/src/mindustry/world/blocks/payloads/PayloadSource.java index b20c9b0a13..618f258feb 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadSource.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadSource.java @@ -5,6 +5,7 @@ import arc.math.*; import arc.math.geom.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import arc.util.io.*; import mindustry.*; @@ -66,6 +67,12 @@ public PayloadSource(String name){ }); } + @Override + public void getPlanConfigs(Seq options){ + options.add(content.blocks().select(this::canProduce)); + options.add(content.units().select(this::canProduce)); + } + @Override public TextureRegion[] icons(){ return new TextureRegion[]{region, outRegion, topRegion}; diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index b9a35f0ae6..10ee5a3a13 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -13,6 +13,7 @@ import arc.util.io.*; import mindustry.*; import mindustry.ai.*; +import mindustry.ctype.*; import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; @@ -172,6 +173,15 @@ public void drawPlanRegion(BuildPlan plan, Eachable list){ Draw.rect(topRegion, plan.drawx(), plan.drawy()); } + @Override + public void getPlanConfigs(Seq options){ + for(var plan : plans){ + if(!plan.unit.isBanned()){ + options.add(plan.unit); + } + } + } + public static class UnitPlan{ public UnitType unit; public ItemStack[] requirements; From a7cad983902eec34d9f4bd32a02f74aa259e522d Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 28 Oct 2024 17:03:11 -0400 Subject: [PATCH 46/49] Fixed bridge placement annoyance --- core/src/mindustry/input/Placement.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index abec7d9f65..7e484d37ce 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -142,7 +142,7 @@ public static void calculateBridges(Seq plans, ItemBridge bridge, Boo Boolf placeable = plan -> (plan.placeable(player.team()) || (plan.tile() != null && plan.tile().block() == plan.block)) && //don't count the same block as inaccessible - !(plan.build() != null && plan.build().rotation != plan.rotation && avoid.get(plan.tile().block())); + !(plan != plans.first() && plan.build() != null && plan.build().rotation != plan.rotation && avoid.get(plan.tile().block())); var result = plans1.clear(); var rotated = plans.first().tile() != null && plans.first().tile().absoluteRelativeTo(plans.peek().x, plans.peek().y) == Mathf.mod(plans.first().rotation + 2, 4); From a9331d4752a2ce0c897e4dfa06761a7e41f3a0fb Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 28 Oct 2024 17:08:34 -0400 Subject: [PATCH 47/49] Fixed bridge placement annoyance (Erekir) --- core/src/mindustry/input/Placement.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 7e484d37ce..5274692aaa 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -217,7 +217,7 @@ public static void calculateBridges(Seq plans, DirectionBridge bridge Boolf placeable = plan -> (plan.placeable(player.team()) || (plan.tile() != null && plan.tile().block() == plan.block)) && //don't count the same block as inaccessible - !(plan.build() != null && plan.build().rotation != plan.rotation && avoid.get(plan.tile().block())); + !(plan != plans.first() && plan.build() != null && plan.build().rotation != plan.rotation && avoid.get(plan.tile().block())); var result = plans1.clear(); From 81282edce9920cfaef0f5e68fe1313e07dd2f61c Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 28 Oct 2024 17:17:29 -0400 Subject: [PATCH 48/49] Custom binary packet support --- core/src/mindustry/core/NetClient.java | 30 ++++++++++++++++++++++++-- core/src/mindustry/core/NetServer.java | 24 +++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 8d3ac0bd19..cf9882dcb3 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -57,6 +57,8 @@ public class NetClient implements ApplicationListener{ private DataInputStream dataStream = new DataInputStream(byteStream); /** Packet handlers for custom types of messages. */ private ObjectMap>> customPacketHandlers = new ObjectMap<>(); + /** Packet handlers for custom types of messages, in binary. */ + private ObjectMap>> customBinaryPacketHandlers = new ObjectMap<>(); public NetClient(){ @@ -147,10 +149,34 @@ public Seq> getPacketHandlers(String type){ return customPacketHandlers.get(type, Seq::new); } + public void addBinaryPacketHandler(String type, Cons handler){ + customBinaryPacketHandlers.get(type, Seq::new).add(handler); + } + + public Seq> getBinaryPacketHandlers(String type){ + return customBinaryPacketHandlers.get(type, Seq::new); + } + + @Remote(targets = Loc.server, variants = Variant.both) + public static void clientBinaryPacketReliable(String type, byte[] contents){ + var arr = netClient.customBinaryPacketHandlers.get(type); + if(arr != null){ + for(var c : arr){ + c.get(contents); + } + } + } + + @Remote(targets = Loc.server, variants = Variant.both, unreliable = true) + public static void clientBinaryPacketUnreliable(String type, byte[] contents){ + clientBinaryPacketReliable(type, contents); + } + @Remote(targets = Loc.server, variants = Variant.both) public static void clientPacketReliable(String type, String contents){ - if(netClient.customPacketHandlers.containsKey(type)){ - for(Cons c : netClient.customPacketHandlers.get(type)){ + var arr = netClient.customPacketHandlers.get(type); + if(arr != null){ + for(Cons c : arr){ c.get(contents); } } diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 94ea217ace..6b1fe2da72 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -117,6 +117,8 @@ public class NetServer implements ApplicationListener{ private DataOutputStream dataStream = new DataOutputStream(syncStream); /** Packet handlers for custom types of messages. */ private ObjectMap>> customPacketHandlers = new ObjectMap<>(); + /** Packet handlers for custom types of messages - binary version. */ + private ObjectMap>> customBinaryPacketHandlers = new ObjectMap<>(); /** Packet handlers for logic client data */ private ObjectMap>> logicClientDataHandlers = new ObjectMap<>(); @@ -517,6 +519,14 @@ public Seq> getPacketHandlers(String type){ return customPacketHandlers.get(type, Seq::new); } + public void addBinaryPacketHandler(String type, Cons2 handler){ + customBinaryPacketHandlers.get(type, Seq::new).add(handler); + } + + public Seq> getBinaryPacketHandlers(String type){ + return customBinaryPacketHandlers.get(type, Seq::new); + } + public void addLogicDataHandler(String type, Cons2 handler){ logicClientDataHandlers.get(type, Seq::new).add(handler); } @@ -589,6 +599,20 @@ public static void serverPacketUnreliable(Player player, String type, String con serverPacketReliable(player, type, contents); } + @Remote(targets = Loc.client) + public static void serverBinaryPacketReliable(Player player, String type, byte[] contents){ + if(netServer.customPacketHandlers.containsKey(type)){ + for(var c : netServer.customBinaryPacketHandlers.get(type)){ + c.get(player, contents); + } + } + } + + @Remote(targets = Loc.client, unreliable = true) + public static void serverBinaryPacketUnreliable(Player player, String type, byte[] contents){ + serverBinaryPacketReliable(player, type, contents); + } + @Remote(targets = Loc.client) public static void clientLogicDataReliable(Player player, String channel, Object value){ Seq> handlers = netServer.logicClientDataHandlers.get(channel); From 1558783b7d3b51cb075d196b1d76ee96b7a2c656 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 29 Oct 2024 10:08:04 -0400 Subject: [PATCH 49/49] Persistent player spectating on desktop --- core/src/mindustry/input/DesktopInput.java | 9 +++++++-- core/src/mindustry/input/InputHandler.java | 10 ++++++++++ core/src/mindustry/input/MobileInput.java | 7 ++++++- .../src/mindustry/ui/fragments/PlayerListFragment.java | 6 +----- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 2fabd1b23e..0563b27754 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -236,15 +236,18 @@ public void update(){ if(!detached){ panning = false; } + spectating = null; } if(input.keyDown(Binding.pan)){ panCam = true; panning = true; + spectating = null; } if((Math.abs(Core.input.axis(Binding.move_x)) > 0 || Math.abs(Core.input.axis(Binding.move_y)) > 0 || input.keyDown(Binding.mouse_move))){ panning = false; + spectating = null; } } @@ -258,11 +261,13 @@ public void update(){ } Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(camSpeed)); - }else if(!player.dead() && !panning){ + }else if((!player.dead() || spectating != null) && !panning){ //TODO do not pan Team corePanTeam = state.won ? state.rules.waveTeam : player.team(); Position coreTarget = state.gameOver && !state.rules.pvp && corePanTeam.data().lastCore != null ? corePanTeam.data().lastCore : null; - Core.camera.position.lerpDelta(coreTarget != null ? coreTarget : player, Core.settings.getBool("smoothcamera") ? 0.08f : 1f); + Position panTarget = coreTarget != null ? coreTarget : spectating != null ? spectating : player; + + Core.camera.position.lerpDelta(panTarget, Core.settings.getBool("smoothcamera") ? 0.08f : 1f); } if(panCam){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index d4331e3ff5..9c1a90919e 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -100,6 +100,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public Seq selectPlans = new Seq<>(BuildPlan.class); public Queue lastPlans = new Queue<>(); public @Nullable Unit lastUnit; + public @Nullable Unit spectating; //for RTS controls public Seq selectedUnits = new Seq<>(); @@ -801,7 +802,16 @@ public boolean isUsingSchematic(){ return !selectPlans.isEmpty(); } + public void spectate(Unit unit){ + spectating = unit; + camera.position.set(unit); + } + public void update(){ + if(spectating != null && (!spectating.isValid() || spectating.team != player.team())){ + spectating = null; + } + if(logicCutscene && !renderer.isCutscene()){ Core.camera.position.lerpDelta(logicCamPan, logicCamSpeed); }else{ diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index f4cb6aaf4f..24a74521fd 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -779,7 +779,11 @@ public void update(){ if(!Core.settings.getBool("keyboard") && !locked && !scene.hasKeyboard()){ //move camera around float camSpeed = 6f; - Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed)); + Vec2 delta = Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed); + Core.camera.position.add(delta); + if(!delta.isZero()){ + spectating = null; + } } if(Core.settings.getBool("keyboard")){ @@ -940,6 +944,7 @@ public boolean pan(float x, float y, float deltaX, float deltaY){ //pan player Core.camera.position.x -= deltaX; Core.camera.position.y -= deltaY; + spectating = null; } camera.position.clamp(-camera.width/4f, -camera.height/4f, world.unitWidth() + camera.width/4f, world.unitHeight() + camera.height/4f); diff --git a/core/src/mindustry/ui/fragments/PlayerListFragment.java b/core/src/mindustry/ui/fragments/PlayerListFragment.java index 9286aab195..58d82ae32d 100644 --- a/core/src/mindustry/ui/fragments/PlayerListFragment.java +++ b/core/src/mindustry/ui/fragments/PlayerListFragment.java @@ -13,7 +13,6 @@ import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; -import mindustry.input.*; import mindustry.net.*; import mindustry.net.Packets.*; import mindustry.ui.*; @@ -127,11 +126,8 @@ public void draw(){ iconTable.tapped(() -> { if(!user.dead() && clickable){ - Core.camera.position.set(user.unit()); + control.input.spectate(user.unit()); ui.showInfoFade(Core.bundle.format("viewplayer", user.name), 1f); - if(control.input instanceof DesktopInput input){ - input.panning = true; - } } });