Merge remote-tracking branch 'origin/master'

This commit is contained in:
Anuken
2023-05-08 12:15:06 -04:00
53 changed files with 283 additions and 127 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1237,6 +1239,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves Wait for Enemies rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo [red](may be removed) rules.unitammo = Units Require Ammo [red](may be removed)
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -453,6 +453,8 @@ waves.sort.reverse = Рэверсіўнае Сартаванне
waves.sort.begin = Пачатак waves.sort.begin = Пачатак
waves.sort.health = Здароўе waves.sort.health = Здароўе
waves.sort.type = Тып waves.sort.type = Тып
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Схаваць Усё waves.units.hide = Схаваць Усё
waves.units.show = Паказаць Усё waves.units.show = Паказаць Усё
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Множнік выдаткаў на будаўні
rules.buildspeedmultiplier = Множнік хуткасці будаўніцтва rules.buildspeedmultiplier = Множнік хуткасці будаўніцтва
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Хвалі чакаюць ворагаў rules.waitForWaveToEnd = Хвалі чакаюць ворагаў
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радыус зоны высадкі ворагаў: [lightgray] (блокаў) rules.dropzoneradius = Радыус зоны высадкі ворагаў: [lightgray] (блокаў)
rules.unitammo = Адзінкі Патрабуюць Боезапас rules.unitammo = Адзінкі Патрабуюць Боезапас
rules.enemyteam = Варожая Каманда rules.enemyteam = Варожая Каманда

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1223,6 +1225,7 @@ rules.buildcostmultiplier = Множител на Необходимите Ре
rules.buildspeedmultiplier = Множител на Скоростта за Строене rules.buildspeedmultiplier = Множител на Скоростта за Строене
rules.deconstructrefundmultiplier = Множител на Възстановени Ресурси при Деконструкция rules.deconstructrefundmultiplier = Множител на Възстановени Ресурси при Деконструкция
rules.waitForWaveToEnd = Вълните Изчакват за Врагове rules.waitForWaveToEnd = Вълните Изчакват за Врагове
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радиус на Начална Точка на Враговете:[lightgray] (полета) rules.dropzoneradius = Радиус на Начална Точка на Враговете:[lightgray] (полета)
rules.unitammo = Единиците се Нуждаят от Боеприпаси rules.unitammo = Единиците се Нуждаят от Боеприпаси
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Ordre invers
waves.sort.begin = Comença waves.sort.begin = Comença
waves.sort.health = Salut waves.sort.health = Salut
waves.sort.type = Tipus waves.sort.type = Tipus
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Amaga-les totes waves.units.hide = Amaga-les totes
waves.units.show = Mostra-les totes waves.units.show = Mostra-les totes
@@ -1227,6 +1229,7 @@ rules.buildcostmultiplier = Multiplicador del cost de construcció
rules.buildspeedmultiplier = Multiplicador de la velocitat de construcció rules.buildspeedmultiplier = Multiplicador de la velocitat de construcció
rules.deconstructrefundmultiplier = Multiplicador dels elements recuperats per desmuntatge rules.deconstructrefundmultiplier = Multiplicador dels elements recuperats per desmuntatge
rules.waitForWaveToEnd = Les onades esperen fins veure enemics rules.waitForWaveToEnd = Les onades esperen fins veure enemics
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radi de la zona daterratge:[lightgray] (caselles) rules.dropzoneradius = Radi de la zona daterratge:[lightgray] (caselles)
rules.unitammo = Les unitats necessiten munició rules.unitammo = Les unitats necessiten munició
rules.enemyteam = Equip enemic rules.enemyteam = Equip enemic

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Obrátit řazení
waves.sort.begin = Začít waves.sort.begin = Začít
waves.sort.health = Životy waves.sort.health = Životy
waves.sort.type = Typ waves.sort.type = Typ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Schovat vše waves.units.hide = Schovat vše
waves.units.show = Zobrazit vše waves.units.show = Zobrazit vše
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Násobek ceny stavění
rules.buildspeedmultiplier = Násobek rychlosti stavění rules.buildspeedmultiplier = Násobek rychlosti stavění
rules.deconstructrefundmultiplier = Násobek vratky při rozebrání rules.deconstructrefundmultiplier = Násobek vratky při rozebrání
rules.waitForWaveToEnd = Vlny čekají na nepřátele rules.waitForWaveToEnd = Vlny čekají na nepřátele
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Poloměr oblasti pro vylíhnutí: [lightgray](dlaždic)[] rules.dropzoneradius = Poloměr oblasti pro vylíhnutí: [lightgray](dlaždic)[]
rules.unitammo = Jednotky vyžadují munici rules.unitammo = Jednotky vyžadují munici
rules.enemyteam = Nepřátelský Tým rules.enemyteam = Nepřátelský Tým

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Byggepris-forstærker
rules.buildspeedmultiplier = Byggehastigheds-forstærker rules.buildspeedmultiplier = Byggehastigheds-forstærker
rules.deconstructrefundmultiplier = Dekonstruerings-tilbagebetalings-forstærker rules.deconstructrefundmultiplier = Dekonstruerings-tilbagebetalings-forstærker
rules.waitForWaveToEnd = Bølge-ventetid for fjender rules.waitForWaveToEnd = Bølge-ventetid for fjender
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop-zone-radius:[lightgray] (felter) rules.dropzoneradius = Drop-zone-radius:[lightgray] (felter)
rules.unitammo = Enheder kræver ammunition rules.unitammo = Enheder kræver ammunition
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -461,6 +461,8 @@ waves.sort.reverse = Reihenfolge umkehren
waves.sort.begin = Anfang waves.sort.begin = Anfang
waves.sort.health = Lebenspunkte waves.sort.health = Lebenspunkte
waves.sort.type = Sorte waves.sort.type = Sorte
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Alle verstecken waves.units.hide = Alle verstecken
waves.units.show = Alle anzeigen waves.units.show = Alle anzeigen
@@ -1236,6 +1238,7 @@ rules.buildcostmultiplier = Bau-Kosten Multiplikator
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
rules.deconstructrefundmultiplier = Abbau Ressourcen-Rückerstattung rules.deconstructrefundmultiplier = Abbau Ressourcen-Rückerstattung
rules.waitForWaveToEnd = Warten bis Welle endet rules.waitForWaveToEnd = Warten bis Welle endet
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln) rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
rules.unitammo = Einheiten benötigen Munition [red](wird vielleicht entfernt) rules.unitammo = Einheiten benötigen Munition [red](wird vielleicht entfernt)
rules.enemyteam = Gegnerteam rules.enemyteam = Gegnerteam

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Invertir orden
waves.sort.begin = Inicio waves.sort.begin = Inicio
waves.sort.health = Vida waves.sort.health = Vida
waves.sort.type = Tipo waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ocultar todo waves.units.hide = Ocultar todo
waves.units.show = Mostrar todo waves.units.show = Mostrar todo
@@ -1233,6 +1235,7 @@ rules.buildcostmultiplier = Multiplicador de coste de construcción
rules.buildspeedmultiplier = Multiplicador de velocidad de construcción rules.buildspeedmultiplier = Multiplicador de velocidad de construcción
rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción
rules.waitForWaveToEnd = Las oleadas esperan a los enemigos rules.waitForWaveToEnd = Las oleadas esperan a los enemigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radio de zona de aterrizaje:[lightgray] (bloques) rules.dropzoneradius = Radio de zona de aterrizaje:[lightgray] (bloques)
rules.unitammo = Las unidades necesitan munición rules.unitammo = Las unidades necesitan munición
rules.enemyteam = Equipo enemigo rules.enemyteam = Equipo enemigo

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Ehitamise maksumuse kordaja
rules.buildspeedmultiplier = Ehitamise kiiruse kordaja rules.buildspeedmultiplier = Ehitamise kiiruse kordaja
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Järgmine laine ootab eelmise laine lõpuni rules.waitForWaveToEnd = Järgmine laine ootab eelmise laine lõpuni
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Maandumisala raadius:[lightgray] (ühik) rules.dropzoneradius = Maandumisala raadius:[lightgray] (ühik)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -456,6 +456,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1215,6 +1217,7 @@ rules.buildcostmultiplier = Eraikitze kostu-biderkatzailea
rules.buildspeedmultiplier = Eraikitze abiadura-biderkatzailea rules.buildspeedmultiplier = Eraikitze abiadura-biderkatzailea
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Atzeratu bolada etsairik geratzen bada rules.waitForWaveToEnd = Atzeratu bolada etsairik geratzen bada
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Erruntze puntuaren erradioa:[lightgray] (lauzak) rules.dropzoneradius = Erruntze puntuaren erradioa:[lightgray] (lauzak)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Järjestä käänteisesti
waves.sort.begin = Alkutaso waves.sort.begin = Alkutaso
waves.sort.health = Elämäpisteet waves.sort.health = Elämäpisteet
waves.sort.type = Tyyppi waves.sort.type = Tyyppi
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Piilota kaikki waves.units.hide = Piilota kaikki
waves.units.show = Näytä kaikki waves.units.show = Näytä kaikki
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Rakentamisen hintakerroin
rules.buildspeedmultiplier = Rakentamisen nopeuskerroin rules.buildspeedmultiplier = Rakentamisen nopeuskerroin
rules.deconstructrefundmultiplier = Purkamisen palautuskerroin rules.deconstructrefundmultiplier = Purkamisen palautuskerroin
rules.waitForWaveToEnd = Tasot odottavat edellisen tason loppumista rules.waitForWaveToEnd = Tasot odottavat edellisen tason loppumista
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Syntypisteen säde:[lightgray] (laattoina) rules.dropzoneradius = Syntypisteen säde:[lightgray] (laattoina)
rules.unitammo = Yksiköt tarvitsevat ammuksia rules.unitammo = Yksiköt tarvitsevat ammuksia
rules.enemyteam = Vihollisjoukkue rules.enemyteam = Vihollisjoukkue

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Pabaliktad na Sort
waves.sort.begin = Simula waves.sort.begin = Simula
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Uri waves.sort.type = Uri
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Itago lahat waves.units.hide = Itago lahat
waves.units.show = Ipakita lahat waves.units.show = Ipakita lahat
@@ -1212,6 +1214,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves Wait for Enemies rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Tri inversé
waves.sort.begin = Vague waves.sort.begin = Vague
waves.sort.health = Santé waves.sort.health = Santé
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Masquer tout waves.units.hide = Masquer tout
waves.units.show = Afficher tout waves.units.show = Afficher tout
@@ -1237,6 +1239,7 @@ rules.buildcostmultiplier = Multiplicateur du prix de construction
rules.buildspeedmultiplier = Multiplicateur du temps de construction rules.buildspeedmultiplier = Multiplicateur du temps de construction
rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction
rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles) rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles)
rules.unitammo = Les Unités nécessitent des munitions rules.unitammo = Les Unités nécessitent des munitions
rules.enemyteam = Équipe ennemie rules.enemyteam = Équipe ennemie

View File

@@ -457,6 +457,8 @@ waves.sort.reverse = Rendezés visszafelé
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Élet waves.sort.health = Élet
waves.sort.type = Típus waves.sort.type = Típus
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1222,6 +1224,7 @@ rules.buildcostmultiplier = Építési költség szorzó
rules.buildspeedmultiplier = Építési sebesség szorzó rules.buildspeedmultiplier = Építési sebesség szorzó
rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó rules.deconstructrefundmultiplier = Bontási visszatérítés szorzó
rules.waitForWaveToEnd = Waves Wait for Enemies rules.waitForWaveToEnd = Waves Wait for Enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező) rules.dropzoneradius = Ledobási zóna sugara:[lightgray] (mező)
rules.unitammo = Egységeknek kell lövedék rules.unitammo = Egységeknek kell lövedék
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Urut Balik
waves.sort.begin = Mulai waves.sort.begin = Mulai
waves.sort.health = Darah waves.sort.health = Darah
waves.sort.type = Tipe waves.sort.type = Tipe
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Sembunyikan Semua waves.units.hide = Sembunyikan Semua
waves.units.show = Lihat Semua waves.units.show = Lihat Semua
@@ -1233,6 +1235,7 @@ rules.buildcostmultiplier = Penggandaan Harga Bangunan
rules.buildspeedmultiplier = Penggandaan Waktu Pembuatan Bangunan rules.buildspeedmultiplier = Penggandaan Waktu Pembuatan Bangunan
rules.deconstructrefundmultiplier = Penggandaan Kembalinya Bahan Bangunan yang Dihancurkan rules.deconstructrefundmultiplier = Penggandaan Kembalinya Bahan Bangunan yang Dihancurkan
rules.waitForWaveToEnd = Gelombang Menunggu Musuh rules.waitForWaveToEnd = Gelombang Menunggu Musuh
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radius Titik Muncul:[lightgray] (ubin) rules.dropzoneradius = Radius Titik Muncul:[lightgray] (ubin)
rules.unitammo = Unit Membutuhkan Amunisi rules.unitammo = Unit Membutuhkan Amunisi
rules.enemyteam = Tim Musuh rules.enemyteam = Tim Musuh

View File

@@ -49,7 +49,7 @@ mods.browser.noreleases = [scarlet]Nessuna versione trovata\n[accent]Cerca se la
mods.browser.latest = <Ultima versione> mods.browser.latest = <Ultima versione>
mods.browser.releases = Versioni mods.browser.releases = Versioni
mods.github.open = Repo mods.github.open = Repo
mods.github.open-release = Pagina delle versioni di mindustry mods.github.open-release = Pagina delle versioni di Mindustry
mods.browser.sortdate = Ordinato per data mods.browser.sortdate = Ordinato per data
mods.browser.sortstars = Ordinato per stelle mods.browser.sortstars = Ordinato per stelle
@@ -456,6 +456,8 @@ waves.sort.reverse = Inverti ordine
waves.sort.begin = Inizia waves.sort.begin = Inizia
waves.sort.health = Salute waves.sort.health = Salute
waves.sort.type = Tipo waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Nascondi tutto waves.units.hide = Nascondi tutto
waves.units.show = Mostra tutto waves.units.show = Mostra tutto
@@ -837,7 +839,7 @@ paused = [accent]< In Pausa >
clear = Pulisci clear = Pulisci
banned = [scarlet]Bandito banned = [scarlet]Bandito
unsupported.environment = [scarlet]Ambiente non supportato unsupported.environment = [scarlet]Ambiente non supportato
yes = Si yes = Sì
no = No no = No
info.title = Info info.title = Info
error.title = [scarlet]Si è verificato un errore error.title = [scarlet]Si è verificato un errore
@@ -875,7 +877,7 @@ stat.poweruse = Consumo Energetico
stat.powerdamage = Energia/Danno stat.powerdamage = Energia/Danno
stat.itemcapacity = Capacità Oggetti stat.itemcapacity = Capacità Oggetti
stat.memorycapacity = Capacità di Memoria stat.memorycapacity = Capacità di Memoria
stat.basepowergeneration = Generazione Minina di Energia stat.basepowergeneration = Generazione Minima di Energia
stat.productiontime = Tempo di Produzione stat.productiontime = Tempo di Produzione
stat.repairtime = Tempo di Riparazione Completa stat.repairtime = Tempo di Riparazione Completa
stat.repairspeed = Velocità di riparazione stat.repairspeed = Velocità di riparazione
@@ -892,7 +894,7 @@ stat.maxunits = Unità Attive Massime
stat.health = Salute stat.health = Salute
stat.armor = Armatura stat.armor = Armatura
stat.buildtime = Tempo di Costruzione stat.buildtime = Tempo di Costruzione
stat.maxconsecutive = Limite Consecutive stat.maxconsecutive = Limite Consecutivi
stat.buildcost = Costo di Costruzione stat.buildcost = Costo di Costruzione
stat.inaccuracy = Inaccuratezza stat.inaccuracy = Inaccuratezza
stat.shots = Colpi stat.shots = Colpi
@@ -985,9 +987,9 @@ bullet.knockback = [stat]{0}[lightgray] contraccolpo
bullet.pierce = [stat]{0}[lightgray]x perforazione bullet.pierce = [stat]{0}[lightgray]x perforazione
bullet.infinitepierce = [stat]perforazione bullet.infinitepierce = [stat]perforazione
bullet.healpercent = [stat]{0}[lightgray]% guarigione bullet.healpercent = [stat]{0}[lightgray]% guarigione
bullet.healamount = [stat]{0}[lightgray] qquantità di cura bullet.healamount = [stat]{0}[lightgray] quantità di cura
bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni bullet.multiplier = [stat]{0}[lightgray]x moltiplicatore munizioni
bullet.reload = [stat]{0}[lightgray]x ricarica bullet.reload = [stat]{0}%[lightgray] ricarica
bullet.range = [stat]{0}[lightgray] raggio in blocchi bullet.range = [stat]{0}[lightgray] raggio in blocchi
unit.blocks = blocchi unit.blocks = blocchi
@@ -1026,7 +1028,7 @@ setting.shadows.name = Ombre
setting.blockreplace.name = Suggerimento Blocchi Automatico setting.blockreplace.name = Suggerimento Blocchi Automatico
setting.linear.name = Filtro Lineare setting.linear.name = Filtro Lineare
setting.hints.name = Suggerimenti setting.hints.name = Suggerimenti
setting.logichints.name = Suggerimenti setting.logichints.name = Suggerimenti sulla logica
setting.backgroundpause.name = Metti in pausa quando in background setting.backgroundpause.name = Metti in pausa quando in background
setting.buildautopause.name = Pausa Automatica nella Costruzione setting.buildautopause.name = Pausa Automatica nella Costruzione
setting.doubletapmine.name = Doppio click per minare setting.doubletapmine.name = Doppio click per minare
@@ -1052,7 +1054,7 @@ setting.difficulty.hard = Difficile
setting.difficulty.insane = Impossibile setting.difficulty.insane = Impossibile
setting.difficulty.name = Difficoltà: setting.difficulty.name = Difficoltà:
setting.screenshake.name = Movimento dello Schermo setting.screenshake.name = Movimento dello Schermo
setting.bloomintensity.name = Intensità d'illuminazione (bloom) setting.bloomintensity.name = Intensità d'illuminazione (Bloom Intensity)
setting.bloomblur.name = Illuminazione sfocata (Bloom Blur) setting.bloomblur.name = Illuminazione sfocata (Bloom Blur)
setting.effects.name = Visualizza Effetti setting.effects.name = Visualizza Effetti
setting.destroyedblocks.name = Visualizza Blocchi Distrutti setting.destroyedblocks.name = Visualizza Blocchi Distrutti
@@ -1072,7 +1074,7 @@ setting.smoothcamera.name = Visuale fluida
setting.vsync.name = VSync setting.vsync.name = VSync
setting.pixelate.name = Pixellato setting.pixelate.name = Pixellato
setting.minimap.name = Mostra Minimappa setting.minimap.name = Mostra Minimappa
setting.coreitems.name = Mostra Oggetti Nucleo (WIP) setting.coreitems.name = Mostra Oggetti Nucleo
setting.position.name = Mostra Posizione Giocatori setting.position.name = Mostra Posizione Giocatori
setting.mouseposition.name = Mostra mouse setting.mouseposition.name = Mostra mouse
setting.musicvol.name = Volume Musica setting.musicvol.name = Volume Musica
@@ -1162,9 +1164,9 @@ keybind.chat.name = Chat
keybind.player_list.name = Lista dei Giocatori keybind.player_list.name = Lista dei Giocatori
keybind.console.name = Console keybind.console.name = Console
keybind.rotate.name = Ruota keybind.rotate.name = Ruota
keybind.rotateplaced.name = Ruota Blocco Esistente (premuto) keybind.rotateplaced.name = Ruota Blocco Esistente (mantenere premuto)
keybind.toggle_menus.name = Mostra/Nascondi Menu keybind.toggle_menus.name = Mostra/Nascondi Menu
keybind.chat_history_prev.name = Scorri Chat vero l'alto keybind.chat_history_prev.name = Scorri Chat verso l'alto
keybind.chat_history_next.name = Scorri Chat verso il basso keybind.chat_history_next.name = Scorri Chat verso il basso
keybind.chat_scroll.name = Scorri Chat keybind.chat_scroll.name = Scorri Chat
keybind.chat_mode.name = Cambia modalità chat keybind.chat_mode.name = Cambia modalità chat
@@ -1193,8 +1195,8 @@ rules.wavesending = Wave Sending
rules.waves = Ondate rules.waves = Ondate
rules.attack = Modalità Attacco rules.attack = Modalità Attacco
rules.rtsai = RTS AI rules.rtsai = RTS AI
rules.rtsminsquadsize = Dimensione squadra minima rules.rtsminsquadsize = Dimensione minima squadra
rules.rtsmaxsquadsize = Dimensione squadra massima rules.rtsmaxsquadsize = Dimensione massima squadra
rules.rtsminattackweight = Min Attack Weight rules.rtsminattackweight = Min Attack Weight
rules.cleanupdeadteams = Cancella costruzioni delle squadre sconfitte (PvP) rules.cleanupdeadteams = Cancella costruzioni delle squadre sconfitte (PvP)
rules.corecapture = Cattura nucleo alla distruzione rules.corecapture = Cattura nucleo alla distruzione
@@ -1219,6 +1221,7 @@ rules.buildcostmultiplier = Moltiplicatore Costo Costruzione
rules.buildspeedmultiplier = Moltiplicatore Velocità Costruzione rules.buildspeedmultiplier = Moltiplicatore Velocità Costruzione
rules.deconstructrefundmultiplier = Moltiplicatore Rimborso di Smantellamento rules.deconstructrefundmultiplier = Moltiplicatore Rimborso di Smantellamento
rules.waitForWaveToEnd = Le ondate aspettano fino a quando l'ondata precedente finisce rules.waitForWaveToEnd = Le ondate aspettano fino a quando l'ondata precedente finisce
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raggio di Generazione:[lightgray] (blocchi) rules.dropzoneradius = Raggio di Generazione:[lightgray] (blocchi)
rules.unitammo = Unità Richiedono Munizioni rules.unitammo = Unità Richiedono Munizioni
rules.enemyteam = Squadra avversaria rules.enemyteam = Squadra avversaria
@@ -1416,7 +1419,7 @@ block.dirt.name = Terra
block.dirt-wall.name = Muro di Terra block.dirt-wall.name = Muro di Terra
block.mud.name = Fango block.mud.name = Fango
block.white-tree-dead.name = Albero Bianco Morto block.white-tree-dead.name = Albero Bianco Morto
block.white-tree.name = Albero Morto block.white-tree.name = Albero Bianco
block.spore-cluster.name = Agglomerato di Spore block.spore-cluster.name = Agglomerato di Spore
block.metal-floor.name = Pavimento Metallico 1 block.metal-floor.name = Pavimento Metallico 1
block.metal-floor-2.name = Pavimento Metallico 2 block.metal-floor-2.name = Pavimento Metallico 2
@@ -1550,7 +1553,7 @@ block.segment.name = Segmentatore
block.ground-factory.name = Fabbrica Terrestre block.ground-factory.name = Fabbrica Terrestre
block.air-factory.name = Fabbrica Aerea block.air-factory.name = Fabbrica Aerea
block.naval-factory.name = Fabbrica Navale block.naval-factory.name = Fabbrica Navale
block.additive-reconstructor.name = Ricostruttore Adattivo block.additive-reconstructor.name = Ricostruttore Additivo
block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo block.multiplicative-reconstructor.name = Ricostruttore Moltiplicativo
block.exponential-reconstructor.name = Ricostruttore Esponenziale block.exponential-reconstructor.name = Ricostruttore Esponenziale
block.tetrative-reconstructor.name = Ricostruttore Tetrattivo block.tetrative-reconstructor.name = Ricostruttore Tetrattivo

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = 降順
waves.sort.begin = 開始 waves.sort.begin = 開始
waves.sort.health = 体力 waves.sort.health = 体力
waves.sort.type = タイプ waves.sort.type = タイプ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = すべて非表示 waves.units.hide = すべて非表示
waves.units.show = すべて表示 waves.units.show = すべて表示
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = 建設コストの倍率
rules.buildspeedmultiplier = 建設速度の倍率 rules.buildspeedmultiplier = 建設速度の倍率
rules.deconstructrefundmultiplier = ブロック破壊時の還元倍率 rules.deconstructrefundmultiplier = ブロック破壊時の還元倍率
rules.waitForWaveToEnd = 敵が倒されるまでウェーブの進行を中断 rules.waitForWaveToEnd = 敵が倒されるまでウェーブの進行を中断
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 出現範囲の半径:[lightgray] (タイル) rules.dropzoneradius = 出現範囲の半径:[lightgray] (タイル)
rules.unitammo = ユニットは弾丸が必要 rules.unitammo = ユニットは弾丸が必要
rules.enemyteam = 敵チーム rules.enemyteam = 敵チーム

View File

@@ -457,6 +457,8 @@ waves.sort.reverse = 정렬 뒤집기
waves.sort.begin = 시작 단계 waves.sort.begin = 시작 단계
waves.sort.health = 체력 waves.sort.health = 체력
waves.sort.type = 기체 유형 waves.sort.type = 기체 유형
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 모두 숨기기 waves.units.hide = 모두 숨기기
waves.units.show = 모두 보이기 waves.units.show = 모두 보이기
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = 건설 비용 배수
rules.buildspeedmultiplier = 건설 속도 배수 rules.buildspeedmultiplier = 건설 속도 배수
rules.deconstructrefundmultiplier = 철거 환불 배수 rules.deconstructrefundmultiplier = 철거 환불 배수
rules.waitForWaveToEnd = 한 단계가 끝날때까지 대기 rules.waitForWaveToEnd = 한 단계가 끝날때까지 대기
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 스폰 구역 범위: [lightgray] (타일) rules.dropzoneradius = 스폰 구역 범위: [lightgray] (타일)
rules.unitammo = 기체 탄약 필요 rules.unitammo = 기체 탄약 필요
rules.enemyteam = 적 팀 rules.enemyteam = 적 팀

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Statymo Kainų Daugiklis
rules.buildspeedmultiplier = Statymo Greičio Daugiklis rules.buildspeedmultiplier = Statymo Greičio Daugiklis
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Laukti, kol pasibaigs banga rules.waitForWaveToEnd = Laukti, kol pasibaigs banga
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Išmetimo Zonos Spindulys:[lightgray] (blokais) rules.dropzoneradius = Išmetimo Zonos Spindulys:[lightgray] (blokais)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -462,6 +462,8 @@ waves.sort.reverse = Omgekeerd Sorteren
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Levenspunten waves.sort.health = Levenspunten
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Verberg Alle waves.units.hide = Verberg Alle
waves.units.show = Toon Alle waves.units.show = Toon Alle
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Bouwkosten Vermenigvuldiger
rules.buildspeedmultiplier = Bouwsnelheid Vermenigvuldiger rules.buildspeedmultiplier = Bouwsnelheid Vermenigvuldiger
rules.deconstructrefundmultiplier = Deconstructie Terugbetalings Vermenigvuldiger rules.deconstructrefundmultiplier = Deconstructie Terugbetalings Vermenigvuldiger
rules.waitForWaveToEnd = Golven wachten tot alle vijanden zijn verslagen rules.waitForWaveToEnd = Golven wachten tot alle vijanden zijn verslagen
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Vijandelijke Spawn Diameter:[lightgray] (tegels) rules.dropzoneradius = Vijandelijke Spawn Diameter:[lightgray] (tegels)
rules.unitammo = Eenheden Gebruiken Ammunitie rules.unitammo = Eenheden Gebruiken Ammunitie
rules.enemyteam = Vijandelijk Team rules.enemyteam = Vijandelijk Team

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Odwrotne Sortowanie
waves.sort.begin = Rozpocznij waves.sort.begin = Rozpocznij
waves.sort.health = Zdrowie waves.sort.health = Zdrowie
waves.sort.type = Typ waves.sort.type = Typ
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Schowaj Wszystkie waves.units.hide = Schowaj Wszystkie
waves.units.show = Pokaż Wszystkie waves.units.show = Pokaż Wszystkie
@@ -1223,6 +1225,7 @@ rules.buildcostmultiplier = Mnożnik Kosztów Budowania
rules.buildspeedmultiplier = Mnożnik Prędkości Budowania rules.buildspeedmultiplier = Mnożnik Prędkości Budowania
rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji
rules.waitForWaveToEnd = Fale Czekają Na Przeciwników rules.waitForWaveToEnd = Fale Czekają Na Przeciwników
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki) rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki)
rules.unitammo = Jednostki Potrzebują Amunicji rules.unitammo = Jednostki Potrzebują Amunicji
rules.enemyteam = Drużyna Wroga rules.enemyteam = Drużyna Wroga

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Inverter ordem
waves.sort.begin = Começar waves.sort.begin = Começar
waves.sort.health = Vida waves.sort.health = Vida
waves.sort.type = Tipo waves.sort.type = Tipo
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Esconder tudo waves.units.hide = Esconder tudo
waves.units.show = Mostrar tudo waves.units.show = Mostrar tudo
@@ -1234,6 +1236,7 @@ rules.buildcostmultiplier = Multiplicador de custo de construção
rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção
rules.deconstructrefundmultiplier = Multiplicador de reembolso de desconstrução rules.deconstructrefundmultiplier = Multiplicador de reembolso de desconstrução
rules.waitForWaveToEnd = Hordas esperam inimigos rules.waitForWaveToEnd = Hordas esperam inimigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos) rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos)
rules.unitammo = Unidades requerem munição rules.unitammo = Unidades requerem munição
rules.enemyteam = Time Inimigo rules.enemyteam = Time Inimigo

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Multiplicador de custo de construção
rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = hordas esperam inimigos rules.waitForWaveToEnd = hordas esperam inimigos
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos) rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Inversează Sortarea
waves.sort.begin = Început waves.sort.begin = Început
waves.sort.health = Viață waves.sort.health = Viață
waves.sort.type = Tip waves.sort.type = Tip
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ascunde waves.units.hide = Ascunde
waves.units.show = Vezi Tot waves.units.show = Vezi Tot
@@ -1225,6 +1227,7 @@ rules.buildcostmultiplier = Multiplicatorul Costului Construcției
rules.buildspeedmultiplier = Multiplicatorul Vitezei de Construcție rules.buildspeedmultiplier = Multiplicatorul Vitezei de Construcție
rules.deconstructrefundmultiplier = Multiplicatorul Recompensei la Deconstrucție rules.deconstructrefundmultiplier = Multiplicatorul Recompensei la Deconstrucție
rules.waitForWaveToEnd = Valurile Așteaptă Inamicii rules.waitForWaveToEnd = Valurile Așteaptă Inamicii
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Raza Zonei de Lansare:[lightgray] (pătrate) rules.dropzoneradius = Raza Zonei de Lansare:[lightgray] (pătrate)
rules.unitammo = Unitățile Necesită Muniție rules.unitammo = Unitățile Necesită Muniție
rules.enemyteam = Echipa Inamică rules.enemyteam = Echipa Inamică

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Обратная сортировка
waves.sort.begin = Начало waves.sort.begin = Начало
waves.sort.health = Здоровье waves.sort.health = Здоровье
waves.sort.type = Тип waves.sort.type = Тип
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Скрыть все waves.units.hide = Скрыть все
waves.units.show = Показать все waves.units.show = Показать все
@@ -1226,6 +1228,7 @@ rules.buildcostmultiplier = Множитель затрат на строите
rules.buildspeedmultiplier = Множитель скорости строительства rules.buildspeedmultiplier = Множитель скорости строительства
rules.deconstructrefundmultiplier = Множитель возврата ресурсов при разборке rules.deconstructrefundmultiplier = Множитель возврата ресурсов при разборке
rules.waitForWaveToEnd = Волны ожидают врагов rules.waitForWaveToEnd = Волны ожидают врагов
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радиус зоны высадки врагов:[lightgray] (блоков) rules.dropzoneradius = Радиус зоны высадки врагов:[lightgray] (блоков)
rules.unitammo = Боев. ед. требуют боеприпасы rules.unitammo = Боев. ед. требуют боеприпасы
rules.enemyteam = Команда Врагов rules.enemyteam = Команда Врагов

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Suprotno Sortiraj
waves.sort.begin = Početak waves.sort.begin = Početak
waves.sort.health = Snaga waves.sort.health = Snaga
waves.sort.type = Tip waves.sort.type = Tip
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Sakrij Sve waves.units.hide = Sakrij Sve
waves.units.show = Pokaži Sve waves.units.show = Pokaži Sve
@@ -1227,6 +1229,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Talasi Čekaju Za Neprijatelje rules.waitForWaveToEnd = Talasi Čekaju Za Neprijatelje
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Radijus Zone Prijema:[lightgray] (polja) rules.dropzoneradius = Radijus Zone Prijema:[lightgray] (polja)
rules.unitammo = Jedinice Zahtevaju Municiju [red](može biti uklonjena) rules.unitammo = Jedinice Zahtevaju Municiju [red](može biti uklonjena)
rules.enemyteam = Neprilateljski Tim rules.enemyteam = Neprilateljski Tim

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = เรียงย้อนกลับ
waves.sort.begin = เริ่มต้น waves.sort.begin = เริ่มต้น
waves.sort.health = พลังชีวิต waves.sort.health = พลังชีวิต
waves.sort.type = ชนิด waves.sort.type = ชนิด
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = ซ่อนทั้งหมด waves.units.hide = ซ่อนทั้งหมด
waves.units.show = แสดงทั้งหมด waves.units.show = แสดงทั้งหมด
@@ -1227,6 +1229,7 @@ rules.buildcostmultiplier = พหุคูณราคาทรัพยาก
rules.buildspeedmultiplier = พหุคูณความเร็วการสร้าง rules.buildspeedmultiplier = พหุคูณความเร็วการสร้าง
rules.deconstructrefundmultiplier = พหุคูณการคืนทรัพยากรเมื่อทำลาย rules.deconstructrefundmultiplier = พหุคูณการคืนทรัพยากรเมื่อทำลาย
rules.waitForWaveToEnd = คลื่นจะรอศัตรู rules.waitForWaveToEnd = คลื่นจะรอศัตรู
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = รัศมีจุดเกิดของศัตรู:[lightgray] (ช่อง) rules.dropzoneradius = รัศมีจุดเกิดของศัตรู:[lightgray] (ช่อง)
rules.unitammo = ยูนิตต้องใช้กระสุน rules.unitammo = ยูนิตต้องใช้กระสุน
rules.enemyteam = ทีมศัตรู rules.enemyteam = ทีมศัตรู

View File

@@ -454,6 +454,8 @@ waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hide All waves.units.hide = Hide All
waves.units.show = Show All waves.units.show = Show All
@@ -1213,6 +1215,7 @@ rules.buildcostmultiplier = Build Cost Multiplier
rules.buildspeedmultiplier = Build Speed Multiplier rules.buildspeedmultiplier = Build Speed Multiplier
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves wait for enemies rules.waitForWaveToEnd = Waves wait for enemies
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.unitammo = Units Require Ammo rules.unitammo = Units Require Ammo
rules.enemyteam = Enemy Team rules.enemyteam = Enemy Team

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = Ters Sırala
waves.sort.begin = Başla waves.sort.begin = Başla
waves.sort.health = Can waves.sort.health = Can
waves.sort.type = Tür waves.sort.type = Tür
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Hepsini Gizle waves.units.hide = Hepsini Gizle
waves.units.show = Hepsini Göster waves.units.show = Hepsini Göster
@@ -1224,6 +1226,7 @@ rules.buildcostmultiplier = İnşa Ücreti Çarpanı
rules.buildspeedmultiplier = İnşa Hızı Çarpanı rules.buildspeedmultiplier = İnşa Hızı Çarpanı
rules.deconstructrefundmultiplier = Yıkım İade Çarpanı rules.deconstructrefundmultiplier = Yıkım İade Çarpanı
rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = İniş Noktası Yarıçapı: [lightgray](kare) rules.dropzoneradius = İniş Noktası Yarıçapı: [lightgray](kare)
rules.unitammo = Birlikler Mermi Gerektirir rules.unitammo = Birlikler Mermi Gerektirir
rules.enemyteam = Düşman Takım rules.enemyteam = Düşman Takım

View File

@@ -460,6 +460,8 @@ waves.sort.reverse = Зворотне сортування
waves.sort.begin = Хвилями waves.sort.begin = Хвилями
waves.sort.health = Здоров’ям waves.sort.health = Здоров’ям
waves.sort.type = Типом waves.sort.type = Типом
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Сховати все waves.units.hide = Сховати все
waves.units.show = Показати все waves.units.show = Показати все
@@ -1235,6 +1237,7 @@ rules.buildcostmultiplier = Множник затрат на будування
rules.buildspeedmultiplier = Множник швидкості будування rules.buildspeedmultiplier = Множник швидкості будування
rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу rules.deconstructrefundmultiplier = Множник відшкодування в разі демонтажу
rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Радіус зони висадки:[lightgray] (плитки) rules.dropzoneradius = Радіус зони висадки:[lightgray] (плитки)
rules.unitammo = Бойові одиниці потребують боєприпасів rules.unitammo = Бойові одиниці потребують боєприпасів
rules.enemyteam = Ворожа команда rules.enemyteam = Ворожа команда

View File

@@ -459,6 +459,8 @@ waves.sort.reverse = Đảo ngược sắp xếp
waves.sort.begin = Bắt đầu waves.sort.begin = Bắt đầu
waves.sort.health = Máu waves.sort.health = Máu
waves.sort.type = Thể loại waves.sort.type = Thể loại
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = Ẩn tất cả waves.units.hide = Ẩn tất cả
waves.units.show = Hiện tất cả waves.units.show = Hiện tất cả
@@ -1228,6 +1230,7 @@ rules.buildcostmultiplier = Hệ số chi phí xây dựng
rules.buildspeedmultiplier = Hệ số tốc độ xây dựng rules.buildspeedmultiplier = Hệ số tốc độ xây dựng
rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi phá công trình rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi phá công trình
rules.waitForWaveToEnd = Đợt chờ hết kẻ địch rules.waitForWaveToEnd = Đợt chờ hết kẻ địch
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô) rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô)
rules.unitammo = Quân lính cần đạn rules.unitammo = Quân lính cần đạn
rules.enemyteam = Đội quân địch rules.enemyteam = Đội quân địch

View File

@@ -461,6 +461,8 @@ waves.sort.reverse = 反向排序
waves.sort.begin = 出场顺序 waves.sort.begin = 出场顺序
waves.sort.health = 生命值 waves.sort.health = 生命值
waves.sort.type = 类型 waves.sort.type = 类型
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 全部隐藏 waves.units.hide = 全部隐藏
waves.units.show = 全部显示 waves.units.show = 全部显示
@@ -1236,6 +1238,7 @@ rules.buildcostmultiplier = 建造花费倍率
rules.buildspeedmultiplier = 建造速度倍率 rules.buildspeedmultiplier = 建造速度倍率
rules.deconstructrefundmultiplier = 拆除返还倍率 rules.deconstructrefundmultiplier = 拆除返还倍率
rules.waitForWaveToEnd = 等待波次结束 rules.waitForWaveToEnd = 等待波次结束
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格) rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格)
rules.unitammo = 单位有弹药限制 rules.unitammo = 单位有弹药限制
rules.enemyteam = 敌方队伍 rules.enemyteam = 敌方队伍

View File

@@ -458,6 +458,8 @@ waves.sort.reverse = 反向排序
waves.sort.begin = 開始 waves.sort.begin = 開始
waves.sort.health = 血量 waves.sort.health = 血量
waves.sort.type = 兵種 waves.sort.type = 兵種
waves.search = Search waves...
waves.filter.unit = Unit Filter
waves.units.hide = 全部隱藏 waves.units.hide = 全部隱藏
waves.units.show = 全部顯示 waves.units.show = 全部顯示
@@ -1232,6 +1234,7 @@ rules.buildcostmultiplier = 建設成本倍數
rules.buildspeedmultiplier = 建設速度倍數 rules.buildspeedmultiplier = 建設速度倍數
rules.deconstructrefundmultiplier = 拆除資源返還比例 rules.deconstructrefundmultiplier = 拆除資源返還比例
rules.waitForWaveToEnd = 等待所有敵人毀滅才開始下一波次 rules.waitForWaveToEnd = 等待所有敵人毀滅才開始下一波次
rules.wavelimit = Map Ends After Wave
rules.dropzoneradius = 空降區半徑:[lightgray](格) rules.dropzoneradius = 空降區半徑:[lightgray](格)
rules.unitammo = 單位需要彈藥 rules.unitammo = 單位需要彈藥
rules.enemyteam = 敵方隊伍 rules.enemyteam = 敵方隊伍

View File

@@ -310,6 +310,9 @@ public class Logic implements ApplicationListener{
Events.fire(new GameOverEvent(left == null ? Team.derelict : left.team)); Events.fire(new GameOverEvent(left == null ? Team.derelict : left.team));
state.gameOver = true; state.gameOver = true;
} }
}else if(!state.gameOver && state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning())){
state.gameOver = true;
Events.fire(new GameOverEvent(state.rules.defaultTeam));
} }
} }
} }

View File

@@ -752,9 +752,9 @@ public class MapEditorDialog extends Dialog implements Disposable{
cont.table(search -> { cont.table(search -> {
search.image(Icon.zoom).padRight(8); search.image(Icon.zoom).padRight(8);
search.field("", this::rebuildBlockSelection) search.field("", this::rebuildBlockSelection).growX()
.name("editor/search").maxTextLength(maxNameLength).get().setMessageText("@players.search"); .name("editor/search").maxTextLength(maxNameLength).get().setMessageText("@players.search");
}).pad(-2); }).growX().pad(-2).padLeft(6f);
cont.row(); cont.row();
cont.table(Tex.underline, extra -> extra.labelWrap(() -> editor.drawBlock.localizedName).width(200f).center()).growX(); cont.table(Tex.underline, extra -> extra.labelWrap(() -> editor.drawBlock.localizedName).width(200f).center()).growX();
cont.row(); cont.row();
@@ -803,7 +803,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
} }
if(i == 0){ if(i == 0){
blockSelection.add("@none").color(Color.lightGray).padLeft(80f).padTop(10f); blockSelection.add("@none.found").color(Color.lightGray).padLeft(54f).padTop(10f);
} }
} }
} }

View File

@@ -30,6 +30,7 @@ public class MapLoadDialog extends BaseDialog{
buttons.defaults().size(200f, 50f); buttons.defaults().size(200f, 50f);
buttons.button("@cancel", this::hide); buttons.button("@cancel", this::hide);
buttons.add(button); buttons.add(button);
addCloseListener();
} }
public void rebuild(){ public void rebuild(){
@@ -48,13 +49,13 @@ public class MapLoadDialog extends BaseDialog{
table.defaults().size(200f, 90f).pad(4f); table.defaults().size(200f, 90f).pad(4f);
table.margin(10f); table.margin(10f);
ScrollPane pane = new ScrollPane(table, Styles.horizontalPane); ScrollPane pane = new ScrollPane(table);
pane.setFadeScrollBars(false); pane.setFadeScrollBars(false);
for(Map map : maps.all()){ for(Map map : maps.all()){
TextButton button = new TextButton(map.name(), Styles.togglet); TextButton button = new TextButton(map.name(), Styles.flatTogglet);
button.add(new BorderImage(map.safeTexture(), 2f).setScaling(Scaling.fit)).size(16 * 4f); button.add(new BorderImage(map.safeTexture(), 2f).setScaling(Scaling.fit)).padLeft(5f).size(16 * 4f);
button.getCells().reverse(); button.getCells().reverse();
button.clicked(() -> selected = map); button.clicked(() -> selected = map);
button.getLabelCell().grow().left().padLeft(5f); button.getLabelCell().grow().left().padLeft(5f);
@@ -63,14 +64,12 @@ public class MapLoadDialog extends BaseDialog{
if(++i % maxcol == 0) table.row(); if(++i % maxcol == 0) table.row();
} }
if(maps.all().size == 0){ if(maps.all().isEmpty()){
table.add("@maps.none").center(); table.add("@maps.none").center();
}else{
cont.add("@editor.loadmap");
} }
cont.row(); cont.row();
cont.add(pane); cont.add(pane).growX();
} }
} }

View File

@@ -1,7 +1,9 @@
package mindustry.editor; package mindustry.editor;
import arc.*; import arc.*;
import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.input.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.scene.event.*; import arc.scene.event.*;
@@ -21,19 +23,18 @@ import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;
import mindustry.ui.dialogs.*; import mindustry.ui.dialogs.*;
import java.util.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
import static mindustry.game.SpawnGroup.*; import static mindustry.game.SpawnGroup.*;
public class WaveInfoDialog extends BaseDialog{ public class WaveInfoDialog extends BaseDialog{
private int displayed = 20; private int start = 0, displayed = 20;
Seq<SpawnGroup> groups = new Seq<>(); Seq<SpawnGroup> groups = new Seq<>();
private SpawnGroup expandedGroup; private @Nullable SpawnGroup expandedGroup;
private Table table; private Table table;
private int start = 0; private int search = -1;
private UnitType lastType = UnitTypes.dagger; private UnitType lastType = UnitTypes.dagger;
private @Nullable UnitType filterType;
private Sort sort = Sort.begin; private Sort sort = Sort.begin;
private boolean reverseSort = false; private boolean reverseSort = false;
private float updateTimer, updatePeriod = 1f; private float updateTimer, updatePeriod = 1f;
@@ -49,45 +50,22 @@ public class WaveInfoDialog extends BaseDialog{
}); });
hidden(() -> state.rules.spawns = groups); hidden(() -> state.rules.spawns = groups);
addCloseListener();
onResize(this::setup); onResize(this::setup);
buttons.button(Icon.filter, () -> {
BaseDialog dialog = new BaseDialog("@waves.sort");
dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> {
for(Sort s : Sort.all){
t.button("@waves.sort." + s, Styles.flatTogglet, () -> {
sort = s;
dialog.hide();
buildGroups();
}).size(150f, 60f).checked(s == sort);
}
}).row();
dialog.cont.check("@waves.sort.reverse", b -> {
reverseSort = b;
buildGroups();
}).padTop(4).checked(reverseSort).padBottom(8f);
dialog.addCloseButton();
dialog.show();
buildGroups();
}).size(60f, 64f);
addCloseButton(); addCloseButton();
buttons.button("@waves.edit", Icon.pencil, () -> { buttons.button("@waves.edit", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@waves.edit"); BaseDialog dialog = new BaseDialog("@waves.edit");
dialog.addCloseButton(); dialog.addCloseButton();
dialog.setFillParent(false); dialog.setFillParent(false);
dialog.cont.table(Tex.button, t -> { dialog.cont.table(Tex.button, t -> {
var style = Styles.flatt; var style = Styles.cleart;
t.defaults().size(210f, 58f); t.defaults().size(280f, 64f).pad(2f);
t.button("@waves.copy", Icon.copy, style, () -> { t.button("@waves.copy", Icon.copy, style, () -> {
ui.showInfoFade("@waves.copied"); ui.showInfoFade("@waves.copied");
Core.app.setClipboardText(maps.writeWaves(groups)); Core.app.setClipboardText(maps.writeWaves(groups));
dialog.hide(); dialog.hide();
}).disabled(b -> groups == null).marginLeft(12f).row(); }).disabled(b -> groups == null || groups.isEmpty()).marginLeft(12f).row();
t.button("@waves.load", Icon.download, style, () -> { t.button("@waves.load", Icon.download, style, () -> {
try{ try{
@@ -98,16 +76,16 @@ public class WaveInfoDialog extends BaseDialog{
ui.showErrorMessage("@waves.invalid"); ui.showErrorMessage("@waves.invalid");
} }
dialog.hide(); dialog.hide();
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty()).row(); }).disabled(Core.app.getClipboardText() == null || !Core.app.getClipboardText().startsWith("[")).marginLeft(12f).row();
t.button("@settings.reset", Icon.upload, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> { t.button("@clear", Icon.none, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups = JsonIO.copy(waves.get()); groups.clear();
buildGroups(); buildGroups();
dialog.hide(); dialog.hide();
})).marginLeft(12f).row(); })).marginLeft(12f).row();
t.button("@clear", Icon.cancel, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> { t.button("@settings.reset", Icon.refresh, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
groups.clear(); groups = JsonIO.copy(waves.get());
buildGroups(); buildGroups();
dialog.hide(); dialog.hide();
})).marginLeft(12f); })).marginLeft(12f);
@@ -144,7 +122,7 @@ public class WaveInfoDialog extends BaseDialog{
buttons.button(Core.bundle.get("waves.random"), Icon.refresh, () -> { buttons.button(Core.bundle.get("waves.random"), Icon.refresh, () -> {
groups.clear(); groups.clear();
groups = Waves.generate(1f / 10f); groups = Waves.generate(1f / 10f);
updateWaves(); buildGroups();
}).width(200f); }).width(200f);
} }
} }
@@ -171,19 +149,53 @@ public class WaveInfoDialog extends BaseDialog{
void setup(){ void setup(){
groups = JsonIO.copy(state.rules.spawns.isEmpty() ? waves.get() : state.rules.spawns); groups = JsonIO.copy(state.rules.spawns.isEmpty() ? waves.get() : state.rules.spawns);
if(groups == null) groups = new Seq<>();
cont.clear(); cont.clear();
cont.stack(new Table(Tex.clear, main -> { cont.stack(new Table(Tex.clear, main -> {
main.pane(t -> table = t).growX().growY().padRight(8f).scrollX(false); main.table(s -> {
main.row(); s.image(Icon.zoom).padRight(8);
main.button("@add", () -> { s.field(search < 0 ? "" : (search + 1) + "", TextFieldFilter.digitsOnly, text -> {
if(groups == null) groups = new Seq<>(); search = groups.any() ? Strings.parseInt(text, 0) - 1 : -1;
start = Math.max(search - (displayed / 2) - (displayed % 2), 0);
buildGroups();
}).growX().maxTextLength(8).get().setMessageText("@waves.search");
s.button(Icon.units, Styles.emptyi, () -> showUnits(type -> filterType = type, true)).size(46f).tooltip("@waves.filter.unit")
.update(b -> b.getStyle().imageUp = filterType != null ? new TextureRegionDrawable(filterType.uiIcon) : Icon.filter);
}).growX().pad(6f).row();
main.pane(t -> table = t).grow().padRight(8f).scrollX(false).row();
main.table(t -> {
t.button("@add", () -> {
SpawnGroup newGroup = new SpawnGroup(lastType); SpawnGroup newGroup = new SpawnGroup(lastType);
groups.add(newGroup); groups.add(newGroup);
expandedGroup = newGroup; expandedGroup = newGroup;
showUpdate(newGroup); showUnits(type -> newGroup.type = lastType = type, false);
buildGroups(); buildGroups();
}).growX().height(70f); }).growX().height(70f);
t.button(Icon.filter, () -> {
BaseDialog dialog = new BaseDialog("@waves.sort");
dialog.setFillParent(false);
dialog.cont.table(Tex.button, f -> {
for(Sort s : Sort.all){
f.button("@waves.sort." + s, Styles.flatTogglet, () -> {
sort = s;
dialog.hide();
buildGroups();
}).size(150f, 60f).checked(s == sort);
}
}).row();
dialog.cont.check("@waves.sort.reverse", b -> {
reverseSort = b;
buildGroups();
}).padTop(4).checked(reverseSort).padBottom(8f);
dialog.addCloseButton();
dialog.show();
}).size(64f, 70f).padLeft(6f);
}).growX();
}), new Label("@waves.none"){{ }), new Label("@waves.none"){{
visible(() -> groups.isEmpty()); visible(() -> groups.isEmpty());
this.touchable = Touchable.disabled; this.touchable = Touchable.disabled;
@@ -202,10 +214,13 @@ public class WaveInfoDialog extends BaseDialog{
table.margin(10f); table.margin(10f);
if(groups != null){ if(groups != null){
groups.sort(sort.sort); groups.sort(Structs.comps(Structs.comparingFloat(sort.sort), Structs.comparingFloat(sort.secondary)));
if(reverseSort) groups.reverse(); if(reverseSort) groups.reverse();
for(SpawnGroup group : groups){ for(SpawnGroup group : groups){
if(group.effect == StatusEffects.none) group.effect = null;
if((search >= 0 && group.getSpawned(search) <= 0) || (filterType != null && group.type != filterType)) continue;
table.table(Tex.button, t -> { table.table(Tex.button, t -> {
t.margin(0).defaults().pad(3).padLeft(5f).growX().left(); t.margin(0).defaults().pad(3).padLeft(5f).growX().left();
t.button(b -> { t.button(b -> {
@@ -218,24 +233,31 @@ public class WaveInfoDialog extends BaseDialog{
b.label(() -> (group.begin + 1) + "").color(Color.lightGray).minWidth(45f).labelAlign(Align.left).left(); b.label(() -> (group.begin + 1) + "").color(Color.lightGray).minWidth(45f).labelAlign(Align.left).left();
b.button(Icon.copySmall, Styles.emptyi, () -> { b.button(Icon.copySmall, Styles.emptyi, () -> {
SpawnGroup newGroup = group.copy(); SpawnGroup copy = group.copy();
expandedGroup = newGroup; expandedGroup = copy;
groups.add(newGroup); groups.insert(groups.indexOf(group) + 1, copy);
buildGroups(); buildGroups();
}).pad(-6).size(46f); }).pad(-6).size(46f).tooltip("@editor.copy");
b.button(group.effect != null && group.effect != StatusEffects.none ? b.button(group.effect != null ?
new TextureRegionDrawable(group.effect.uiIcon) : new TextureRegionDrawable(group.effect.uiIcon) :
Icon.logicSmall, Icon.logicSmall,
Styles.emptyi, () -> showEffect(group)).pad(-6).size(46f); Styles.emptyi, () -> showEffects(group)).pad(-6).size(46f).scaling(Scaling.fit).tooltip(group.effect != null ? group.effect.localizedName : "@none");
b.button(Icon.unitsSmall, Styles.emptyi, () -> showUpdate(group)).pad(-6).size(46f); b.button(Icon.unitsSmall, Styles.emptyi, () -> showUnits(type -> group.type = lastType = type, false)).pad(-6).size(46f).tooltip("@stat.unittype");
b.button(Icon.cancel, Styles.emptyi, () -> { b.button(Icon.cancel, Styles.emptyi, () -> {
groups.remove(group); groups.remove(group);
if(expandedGroup == group) expandedGroup = null;
table.getCell(t).pad(0f); table.getCell(t).pad(0f);
t.remove(); t.remove();
buildGroups(); buildGroups();
}).pad(-6).size(46f).padRight(-12f); }).pad(-6).size(46f).padRight(-12f).tooltip("@waves.remove");
b.clicked(KeyCode.mouseMiddle, () -> {
SpawnGroup copy = group.copy();
groups.insert(groups.indexOf(group) + 1, copy);
expandedGroup = copy;
buildGroups();
});
}, () -> { }, () -> {
expandedGroup = expandedGroup == group ? null : group; expandedGroup = expandedGroup == group ? null : group;
buildGroups(); buildGroups();
@@ -369,7 +391,7 @@ public class WaveInfoDialog extends BaseDialog{
dialog.hide(); dialog.hide();
}).size(110f, 45f).checked(-1 == group.spawn); }).size(110f, 45f).checked(-1 == group.spawn);
} }
}); }).grow();
dialog.setFillParent(false); dialog.setFillParent(false);
dialog.addCloseButton(); dialog.addCloseButton();
dialog.show(); dialog.show();
@@ -381,6 +403,10 @@ public class WaveInfoDialog extends BaseDialog{
table.row(); table.row();
} }
if(table.getChildren().isEmpty() && groups.any()){
table.add("@none.found");
}
}else{ }else{
table.add("@editor.default"); table.add("@editor.default");
} }
@@ -388,11 +414,23 @@ public class WaveInfoDialog extends BaseDialog{
updateWaves(); updateWaves();
} }
void showUpdate(SpawnGroup group){ void showUnits(Cons<UnitType> cons, boolean reset){
BaseDialog dialog = new BaseDialog(""); BaseDialog dialog = new BaseDialog("");
dialog.setFillParent(true); dialog.setFillParent(true);
dialog.cont.pane(p -> { dialog.cont.pane(p -> {
int i = 0; p.defaults().pad(2).fillX();
if(reset){
p.button(t -> {
t.left();
t.image(Icon.none).size(8 * 4).scaling(Scaling.fit).padRight(2f);
t.add("@settings.resetKey");
}, () -> {
cons.get(null);
dialog.hide();
buildGroups();
}).margin(12f);
}
int i = reset ? 1 : 0;
for(UnitType type : content.units()){ for(UnitType type : content.units()){
if(type.isHidden()) continue; if(type.isHidden()) continue;
p.button(t -> { p.button(t -> {
@@ -400,19 +438,18 @@ public class WaveInfoDialog extends BaseDialog{
t.image(type.uiIcon).size(8 * 4).scaling(Scaling.fit).padRight(2f); t.image(type.uiIcon).size(8 * 4).scaling(Scaling.fit).padRight(2f);
t.add(type.localizedName); t.add(type.localizedName);
}, () -> { }, () -> {
lastType = type; cons.get(type);
group.type = type;
dialog.hide(); dialog.hide();
buildGroups(); buildGroups();
}).pad(2).margin(12f).fillX(); }).margin(12f);
if(++i % 3 == 0) p.row(); if(++i % 3 == 0) p.row();
} }
}); }).growX().scrollX(false);
dialog.addCloseButton(); dialog.addCloseButton();
dialog.show(); dialog.show();
} }
void showEffect(SpawnGroup group){ void showEffects(SpawnGroup group){
BaseDialog dialog = new BaseDialog(""); BaseDialog dialog = new BaseDialog("");
dialog.setFillParent(true); dialog.setFillParent(true);
dialog.cont.pane(p -> { dialog.cont.pane(p -> {
@@ -434,28 +471,33 @@ public class WaveInfoDialog extends BaseDialog{
t.add("@settings.resetKey"); t.add("@settings.resetKey");
} }
}, () -> { }, () -> {
group.effect = effect; group.effect = effect != StatusEffects.none ? effect : null;
dialog.hide(); dialog.hide();
buildGroups(); buildGroups();
}).pad(2).margin(12f).fillX(); }).pad(2).margin(12f).fillX();
if(++i % 3 == 0) p.row(); if(++i % 3 == 0) p.row();
} }
}); }).growX().scrollX(false);
dialog.addCloseButton(); dialog.addCloseButton();
dialog.show(); dialog.show();
} }
enum Sort{ enum Sort{
begin(Structs.comps(Structs.comparingFloat(g -> g.begin), Structs.comparingFloat(g -> g.type.id))), begin(g -> g.begin, g -> g.type.id),
health(Structs.comps(Structs.comparingFloat(g -> g.type.health), Structs.comparingFloat(g -> g.begin))), health(g -> g.type.health),
type(Structs.comps(Structs.comparingFloat(g -> g.type.id), Structs.comparingFloat(g -> g.begin))); type(g -> g.type.id);
static final Sort[] all = values(); static final Sort[] all = values();
final Comparator<SpawnGroup> sort; final Floatf<SpawnGroup> sort, secondary;
Sort(Comparator<SpawnGroup> sort){ Sort(Floatf<SpawnGroup> sort){
this(sort, g -> g.begin);
}
Sort(Floatf<SpawnGroup> sort, Floatf<SpawnGroup> secondary){
this.sort = sort; this.sort = sort;
this.secondary = secondary;
} }
} }

View File

@@ -113,7 +113,7 @@ public class Rules{
public float waveSpacing = 2 * Time.toMinutes; public float waveSpacing = 2 * Time.toMinutes;
/** Starting wave spacing; if <=0, uses waveSpacing * 2. */ /** Starting wave spacing; if <=0, uses waveSpacing * 2. */
public float initialWaveSpacing = 0f; public float initialWaveSpacing = 0f;
/** Wave after which the player 'wins'. Used in sectors. Use a value <= 0 to disable. */ /** Wave after which the player 'wins'. Use a value <= 0 to disable. */
public int winWave = 0; public int winWave = 0;
/** Base unit cap. Can still be increased by blocks. */ /** Base unit cap. Can still be increased by blocks. */
public int unitCap = 0; public int unitCap = 0;

View File

@@ -118,7 +118,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
if(unitAmount != 1) json.writeValue("amount", unitAmount); if(unitAmount != 1) json.writeValue("amount", unitAmount);
if(effect != null) json.writeValue("effect", effect.name); if(effect != null) json.writeValue("effect", effect.name);
if(spawn != -1) json.writeValue("spawn", spawn); if(spawn != -1) json.writeValue("spawn", spawn);
if(payloads != null && payloads.size > 0) json.writeValue("payloads", payloads.map(u -> u.name).toArray(String.class)); if(payloads != null && payloads.any()) json.writeValue("payloads", payloads.map(u -> u.name).toArray(String.class));
if(items != null && items.amount > 0) json.writeValue("items", items); if(items != null && items.amount > 0) json.writeValue("items", items);
} }
@@ -127,7 +127,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
public void read(Json json, JsonValue data){ public void read(Json json, JsonValue data){
String tname = data.getString("type", "dagger"); String tname = data.getString("type", "dagger");
type = content.getByName(ContentType.unit, LegacyIO.unitMap.get(tname, tname)); type = content.unit(LegacyIO.unitMap.get(tname, tname));
if(type == null) type = UnitTypes.dagger; if(type == null) type = UnitTypes.dagger;
begin = data.getInt("begin", 0); begin = data.getInt("begin", 0);
end = data.getInt("end", never); end = data.getInt("end", never);
@@ -138,7 +138,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
shieldScaling = data.getFloat("shieldScaling", 0); shieldScaling = data.getFloat("shieldScaling", 0);
unitAmount = data.getInt("amount", 1); unitAmount = data.getInt("amount", 1);
spawn = data.getInt("spawn", -1); spawn = data.getInt("spawn", -1);
if(data.has("payloads")) payloads = Seq.with(json.readValue(String[].class, data.get("payloads"))).map(s -> content.getByName(ContentType.unit, s)); if(data.has("payloads")) payloads = Seq.with(json.readValue(String[].class, data.get("payloads"))).map(s -> content.unit(s));
if(data.has("items")) items = json.readValue(ItemStack.class, data.get("items")); if(data.has("items")) items = json.readValue(ItemStack.class, data.get("items"));
@@ -146,7 +146,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{
if(data.has("effect") && data.get("effect").isNumber() && data.getInt("effect", -1) == 8){ if(data.has("effect") && data.get("effect").isNumber() && data.getInt("effect", -1) == 8){
effect = StatusEffects.boss; effect = StatusEffects.boss;
}else{ }else{
effect = content.getByName(ContentType.status, data.has("effect") && data.get("effect").isString() ? data.getString("effect", "none") : "none"); effect = content.statusEffect(data.has("effect") && data.get("effect").isString() ? data.getString("effect", "none") : "none");
} }
} }

View File

@@ -108,6 +108,7 @@ public abstract class FilterOption{
.setRegion(supplier.get() == Blocks.air ? Icon.none.getRegion() : supplier.get().uiIcon)).size(iconSmall), () -> { .setRegion(supplier.get() == Blocks.air ? Icon.none.getRegion() : supplier.get().uiIcon)).size(iconSmall), () -> {
BaseDialog dialog = new BaseDialog("@filter.option." + name); BaseDialog dialog = new BaseDialog("@filter.option." + name);
dialog.cont.pane(t -> { dialog.cont.pane(t -> {
t.margin(14f);
int i = 0; int i = 0;
for(Block block : Vars.content.blocks()){ for(Block block : Vars.content.blocks()){
if(!filter.get(block)) continue; if(!filter.get(block)) continue;
@@ -120,7 +121,7 @@ public abstract class FilterOption{
if(++i % 10 == 0) t.row(); if(++i % 10 == 0) t.row();
} }
dialog.setFillParent(i > 100); dialog.setFillParent(i > 100);
}).padRight(8f).scrollX(false); }).scrollX(false);
dialog.addCloseButton(); dialog.addCloseButton();

View File

@@ -68,7 +68,7 @@ public class CustomRulesDialog extends BaseDialog{
b.image(con.uiIcon).size(iconMed).padRight(3); b.image(con.uiIcon).size(iconMed).padRight(3);
b.add(con.localizedName).color(Color.lightGray).padLeft(3).growX().left().wrap(); b.add(con.localizedName).color(Color.lightGray).padLeft(3).growX().left().wrap();
b.button(Icon.cancel, Styles.clearNonei, () -> { b.button(Icon.cancel, Styles.emptyi, () -> {
set.remove(con); set.remove(con);
rebuild[0].run(); rebuild[0].run();
}).size(70f).pad(-4f).padLeft(0f); }).size(70f).pad(-4f).padLeft(0f);
@@ -91,7 +91,7 @@ public class CustomRulesDialog extends BaseDialog{
set.add(b); set.add(b);
rebuild[0].run(); rebuild[0].run();
dialog.hide(); dialog.hide();
}).size(60f); }).size(60f).tooltip(b.localizedName);
if(++i[0] % cols == 0){ if(++i[0] % cols == 0){
t.row(); t.row();
@@ -101,7 +101,7 @@ public class CustomRulesDialog extends BaseDialog{
dialog.addCloseButton(); dialog.addCloseButton();
dialog.show(); dialog.show();
}).size(300f, 64f); }).size(300f, 64f).disabled(b -> set.size == content.<T>getBy(type).count(pred));
}; };
bd.shown(rebuild[0]); bd.shown(rebuild[0]);
@@ -139,15 +139,16 @@ public class CustomRulesDialog extends BaseDialog{
title("@rules.title.waves"); title("@rules.title.waves");
check("@rules.waves", b -> rules.waves = b, () -> rules.waves); check("@rules.waves", b -> rules.waves = b, () -> rules.waves);
check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer); check("@rules.wavesending", b -> rules.waveSending = b, () -> rules.waveSending, () -> rules.waves);
check("@rules.wavesending", b -> rules.waveSending = b, () -> rules.waveSending); check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer, () -> rules.waves);
check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies); check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies, () -> rules.waves && rules.waveTimer);
number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waveTimer, 1, Float.MAX_VALUE); numberi("@rules.wavelimit", f -> rules.winWave = f, () -> rules.winWave, () -> rules.waves, 0, Integer.MAX_VALUE);
number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waves && rules.waveTimer, 1, Float.MAX_VALUE);
//this is experimental, because it's not clear that 0 makes it default. //this is experimental, because it's not clear that 0 makes it default.
if(experimental){ if(experimental){
number("@rules.initialwavespacing", false, f -> rules.initialWaveSpacing = f * 60f, () -> rules.initialWaveSpacing / 60f, () -> true, 0, Float.MAX_VALUE); number("@rules.initialwavespacing", false, f -> rules.initialWaveSpacing = f * 60f, () -> rules.initialWaveSpacing / 60f, () -> rules.waves && rules.waveTimer, 0, Float.MAX_VALUE);
} }
number("@rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> true); number("@rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> rules.waves);
title("@rules.title.resourcesbuilding"); title("@rules.title.resourcesbuilding");
check("@rules.infiniteresources", b -> { check("@rules.infiniteresources", b -> {
@@ -281,7 +282,10 @@ public class CustomRulesDialog extends BaseDialog{
main.button("[#" + team.color + "]" + team.localized() + (team.emoji.isEmpty() ? "" : "[] " + team.emoji), Icon.downOpen, Styles.togglet, () -> { main.button("[#" + team.color + "]" + team.localized() + (team.emoji.isEmpty() ? "" : "[] " + team.emoji), Icon.downOpen, Styles.togglet, () -> {
shown[0] = !shown[0]; shown[0] = !shown[0];
}).marginLeft(14f).width(260f).height(55f).checked(a -> shown[0]).row(); }).marginLeft(14f).width(260f).height(55f).update(t -> {
((Image)t.getChildren().get(1)).setDrawable(shown[0] ? Icon.upOpen : Icon.downOpen);
t.setChecked(shown[0]);
}).row();
main.collapser(t -> { main.collapser(t -> {
t.left().defaults().fillX().left().pad(5); t.left().defaults().fillX().left().pad(5);

View File

@@ -24,7 +24,7 @@ import static mindustry.Vars.*;
public class LoadDialog extends BaseDialog{ public class LoadDialog extends BaseDialog{
Table slots; Table slots;
String searchString; String searchString;
Seq<Gamemode> filteredModes; Seq<Gamemode> hidden;
TextField searchField; TextField searchField;
ScrollPane pane; ScrollPane pane;
@@ -50,7 +50,7 @@ public class LoadDialog extends BaseDialog{
cont.clear(); cont.clear();
slots = new Table(); slots = new Table();
filteredModes = new Seq<>(); hidden = new Seq<>();
pane = new ScrollPane(slots); pane = new ScrollPane(slots);
rebuild(); rebuild();
@@ -67,9 +67,9 @@ public class LoadDialog extends BaseDialog{
boolean sandbox = mode == Gamemode.sandbox; boolean sandbox = mode == Gamemode.sandbox;
if(Core.atlas.isFound(icon.getRegion()) || sandbox){ if(Core.atlas.isFound(icon.getRegion()) || sandbox){
search.button(sandbox ? Icon.terrain : icon, Styles.emptyTogglei, () -> { search.button(sandbox ? Icon.terrain : icon, Styles.emptyTogglei, () -> {
if(!filteredModes.addUnique(mode)) filteredModes.remove(mode); if(!hidden.addUnique(mode)) hidden.remove(mode);
rebuild(); rebuild();
}).size(60f).padLeft(-8f).checked(b -> !filteredModes.contains(mode)).tooltip("@mode." + mode.name() + ".name"); }).size(60f).padLeft(-12f).checked(b -> !hidden.contains(mode)).tooltip("@mode." + mode.name() + ".name");
} }
} }
@@ -98,7 +98,7 @@ public class LoadDialog extends BaseDialog{
for(SaveSlot slot : array){ for(SaveSlot slot : array){
if(slot.isHidden() if(slot.isHidden()
|| (searchString != null && !Strings.stripColors(slot.getName()).toLowerCase().contains(searchString)) || (searchString != null && !Strings.stripColors(slot.getName()).toLowerCase().contains(searchString))
|| (!filteredModes.isEmpty() && filteredModes.contains(slot.mode()))){ || (!hidden.isEmpty() && hidden.contains(slot.mode()))){
continue; continue;
} }

View File

@@ -725,7 +725,7 @@ public class SchematicsDialog extends BaseDialog{
r.image(s.item.uiIcon).left().size(iconMed); r.image(s.item.uiIcon).left().size(iconMed);
r.label(() -> { r.label(() -> {
Building core = player.core(); Building core = player.core();
if(core == null || state.rules.infiniteResources || core.items.has(s.item, s.amount)) return "[lightgray]" + s.amount + ""; if(core == null || state.isMenu() || state.rules.infiniteResources || core.items.has(s.item, s.amount)) return "[lightgray]" + s.amount + "";
return (core.items.has(s.item, s.amount) ? "[lightgray]" : "[scarlet]") + Math.min(core.items.get(s.item), s.amount) + "[lightgray]/" + s.amount; return (core.items.has(s.item, s.amount) ? "[lightgray]" : "[scarlet]") + Math.min(core.items.get(s.item), s.amount) + "[lightgray]/" + s.amount;
}).padLeft(2).left().padRight(4); }).padLeft(2).left().padRight(4);

View File

@@ -52,7 +52,7 @@ public class HudFragment{
//warn about guardian/boss waves //warn about guardian/boss waves
Events.on(WaveEvent.class, e -> { Events.on(WaveEvent.class, e -> {
int max = 10; int max = 10;
int winWave = state.isCampaign() && state.rules.winWave > 0 ? state.rules.winWave : Integer.MAX_VALUE; int winWave = state.rules.winWave > 0 ? state.rules.winWave : Integer.MAX_VALUE;
outer: outer:
for(int i = state.wave - 1; i <= Math.min(state.wave + max, winWave - 2); i++){ for(int i = state.wave - 1; i <= Math.min(state.wave + max, winWave - 2); i++){
for(SpawnGroup group : state.rules.spawns){ for(SpawnGroup group : state.rules.spawns){
@@ -822,7 +822,7 @@ public class HudFragment{
return builder; return builder;
} }
if(state.rules.winWave > 1 && state.rules.winWave >= state.wave && state.isCampaign()){ if(state.rules.winWave > 1 && state.rules.winWave >= state.wave){
builder.append(wavefc.get(state.wave, state.rules.winWave)); builder.append(wavefc.get(state.wave, state.rules.winWave));
}else{ }else{
builder.append(wavef.get(state.wave)); builder.append(wavef.get(state.wave));

View File

@@ -85,9 +85,11 @@ public class ItemSelection{
Table main = new Table().background(Styles.black6); Table main = new Table().background(Styles.black6);
if(rowCount > rows * 1.5f){ if(rowCount > rows * 1.5f){
search = main.field(null, text -> rebuild.run()).width(40 * columns).padBottom(4).left().growX().get(); main.table(s -> {
s.image(Icon.zoom).padLeft(4f);
search = s.field(null, text -> rebuild.run()).width(40 * columns).padBottom(4).left().growX().get();
search.setMessageText("@players.search"); search.setMessageText("@players.search");
main.row(); }).row();
} }
ScrollPane pane = new ScrollPane(cont, Styles.smallPane); ScrollPane pane = new ScrollPane(cont, Styles.smallPane);
@@ -101,7 +103,7 @@ public class ItemSelection{
} }
pane.setOverscroll(false, false); pane.setOverscroll(false, false);
main.add(pane).maxHeight(40 * rows); main.add(pane).growX().maxHeight(40 * rows);
table.top().add(main); table.top().add(main);
} }
} }

View File

@@ -1,7 +1,7 @@
[ [
{ {
"name": "Tamazia", "name": "Tamazia",
"address": ["83.150.217.98:25566"] "address": ["83.150.217.98:25566", "83.150.217.98:25568"]
}, },
{ {
"name": "RCM", "name": "RCM",