most ability displays (#8981)

* works

* why not

* idk if that changes it but

* json

* destringening

* automatic imports and leftover marker

* uirfirf
This commit is contained in:
nullevoy
2023-09-02 15:19:32 +02:00
committed by GitHub
parent bff4097c88
commit cc66ccb49f
49 changed files with 358 additions and 107 deletions

View File

@@ -965,13 +965,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = {0} Status Field
ability.unitspawn = {0} Factory
ability.statusfield = Status Field
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Repair Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.suppressionfield = Repair Suppression
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Better Drill Required

View File

@@ -939,13 +939,16 @@ stat.healing = Аднаўленне
ability.forcefield = Сіловое Поле
ability.repairfield = Поле Рамонту
ability.statusfield = Поле Статусу
ability.unitspawn = {0} Завод
ability.unitspawn = Завод
ability.shieldregenfield = Васстанўляюяае Поле Шчыта
ability.movelightning = Рух Маланкі
ability.shieldarc = Шчытавая Дуга
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Энэргетычнае Поле: [accent]{0}[] пашкоджанні ~ [accent]{1}[] блокі / [accent]{2}[] целі
ability.energyfield = Энэргетычнае Поле
bar.onlycoredeposit = Даступны Толькі Перанос Рэсурсаў У Ядро
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.drilltierreq = Патрабуецца свідар лепей
bar.noresources = Не Хапае Рэсурсаў

View File

@@ -950,12 +950,16 @@ stat.healing = Healing
ability.forcefield = Енергийно Поле
ability.repairfield = Възстановяващо Поле
ability.statusfield = Подсилващо Поле
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Възстановяващо броня Поле
ability.movelightning = Подвижна светкавица
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Необходимо е по-добро Свредло

View File

@@ -953,13 +953,16 @@ stat.healing = Reparador
ability.forcefield = Camp de força
ability.repairfield = Repara el camp de força
ability.statusfield = Estat del camp: {0}
ability.unitspawn = Fàbrica de {0}
ability.statusfield = Estat del camp
ability.unitspawn = Fàbrica
ability.shieldregenfield = Regenerador de camps de força
ability.movelightning = Moviment llampec
ability.shieldarc = Escut de descàrregues
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Camp de força: [accent]{0}[] de dany ~ [accent]{1}[] blocs / [accent]{2}[] objectius
ability.energyfield = Camp de força
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Només es permet depositar al nucli.
bar.drilltierreq = Cal una perforadora millor.

View File

@@ -951,12 +951,16 @@ stat.healing = Léčí se
ability.forcefield = Silové pole
ability.repairfield = Opravit pole
ability.statusfield = Stav pole
ability.unitspawn = {0} továrna
ability.unitspawn = továrna
ability.shieldregenfield = Silově opravné pole
ability.movelightning = Pohybující se blesk
ability.shieldarc = Štítovy Oblouk
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energetické pole: [accent]{0}[] poškození ~ [accent]{1}[] dlaždic / [accent]{2}[] cílu
ability.energyfield = Energetické pole
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Pouze Ukládání do Jádra je povoleno
bar.drilltierreq = Je vyžadován lepší vrt

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Kraftfelt
ability.repairfield = Reparationsfelt
ability.statusfield = Statusfelt
ability.unitspawn = {0} Fabrik
ability.unitspawn = Fabrik
ability.shieldregenfield = Skjold-regenereringsfelt
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Kræver bedre bor

View File

@@ -962,13 +962,17 @@ stat.healing = Heilung
ability.forcefield = Kraftfeld
ability.repairfield = Heilungsfeld
ability.statusfield = {0} Statusfeld
ability.unitspawn = {0} Fabrik
ability.statusfield = Statusfeld
ability.unitspawn = Fabrik
ability.shieldregenfield = Schildregenerationsfeld
ability.movelightning = Bewegungsblitze
ability.shieldarc = Lichtbogenschild
ability.suppressionfield = Heilungsunterdrückungsfeld
ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele
ability.energyfield = Energiefeld
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Nur Kernablage möglich
bar.drilltierreq = Besserer Bohrer benötigt

View File

@@ -959,13 +959,16 @@ stat.healing = Curación
ability.forcefield = Área de Escudo
ability.repairfield = Área de Reparación
ability.statusfield = Área de Potenciación {0}
ability.unitspawn = Fábrica de {0}
ability.statusfield = Área de Potenciación
ability.unitspawn = Fábrica
ability.shieldregenfield = Área de Regeneración de Armaduras
ability.movelightning = Movimiento Relámpago
ability.shieldarc = Sector de Escudo
ability.suppressionfield = Área de Bloqueo de Regeneración
ability.energyfield = Campo de Energía: [accent]{0}[] daño ~ [accent]{1}[] bloques / [accent]{2}[] objetivos
ability.energyfield = Campo de Energía
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Sólo se permite depositar en el núcleo
bar.drilltierreq = Requiere un taladro mejor

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Nõuab paremat puuri

View File

@@ -942,12 +942,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Zulagailu hobea behar da

View File

@@ -939,12 +939,16 @@ stat.healing = Parantuu
ability.forcefield = Voimakenttä
ability.repairfield = Korjauskenttä
ability.statusfield = Statuskenttä
ability.unitspawn = {0} Tehdas
ability.unitspawn = Tehdas
ability.shieldregenfield = Kilvenvahvistuskenttä
ability.movelightning = Salamointi liikkuessa
ability.shieldarc = Kilpikaari
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energiakenttä: [accent]{0}[] vahinko ~ [accent]{1}[] palikkaa / [accent]{2}[] kohdetta
ability.energyfield = Energiakenttä
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Sijoittaminen sallittua vain ytimeen
bar.drilltierreq = Parempi pora vaadittu

View File

@@ -939,12 +939,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Better Drill Required

View File

@@ -965,13 +965,16 @@ stat.healing = Guérison
ability.forcefield = Champ de Force
ability.repairfield = Champ de Réparation
ability.statusfield = Champ d'Amélioration {0}
ability.unitspawn = Usine de {0}
ability.statusfield = Champ d'Amélioration
ability.unitspawn = Usine
ability.shieldregenfield = Champ de régénération de bouclier
ability.movelightning = Déplacement éclair
ability.shieldarc = Arc de Bouclier
ability.suppressionfield = Champ de Suppression de Soins
ability.energyfield = Champ d'énergie: [accent]{0}[] dégâts ~ [accent]{1}[] blocs / [accent]{2}[] cibles
ability.energyfield = Champ d'énergie
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé
bar.drilltierreq = Meilleure Foreuse Requise

View File

@@ -949,12 +949,16 @@ stat.healing = Healing
ability.forcefield = Erőtér
ability.repairfield = Javító mező
ability.statusfield = Status Field
ability.unitspawn = {0} Gyár
ability.unitspawn = Gyár
ability.shieldregenfield = Pajzsos regeneráló mező
ability.movelightning = Világítás
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Erősebb Drill szükséges

View File

@@ -959,13 +959,16 @@ stat.healing = Menyembuhkan
ability.forcefield = Bidang Kekuatan
ability.repairfield = Bidang Perbaikan
ability.statusfield = {0} Bidang Status
ability.unitspawn = {0} Pabrik
ability.statusfield = Bidang Status
ability.unitspawn = Pabrik
ability.shieldregenfield = Bidang Regenerasi Perisai
ability.movelightning = Pergerakan Petir
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Bidang Tenaga: [accent]{0}[] kerusakan ~ [accent]{1}[] blok / [accent]{2}[] target
ability.energyfield = Bidang Tenaga
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Hanya Penyetoran Inti yang Diizinkan
bar.drilltierreq = Membutuhkan Bor yang Lebih Baik

View File

@@ -946,12 +946,16 @@ stat.healing = Rigenerazione
ability.forcefield = Campo di Forza
ability.repairfield = Campo Riparativo
ability.statusfield = Campo di Stato
ability.unitspawn = {0} Fabbrica
ability.unitspawn = Fabbrica
ability.shieldregenfield = Campo di Rigenerazione Scudo
ability.movelightning = Movimento Fulminante
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Campo energetico: [accent]{0}[] danno ~ [accent]{1}[] blocchi / [accent]{2}[] obbiettivi
ability.energyfield = Campo energetico
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Concesso solo il deposito al nucleo
bar.drilltierreq = Miglior Trivella Richiesta

View File

@@ -951,13 +951,17 @@ stat.healing = 治癒
ability.forcefield = フォースフィールド
ability.repairfield = リペアフィールド
ability.statusfield = {0} ステータスフィールド
ability.unitspawn = {0} 生産
ability.statusfield = ステータスフィールド
ability.unitspawn = 生産
ability.shieldregenfield = シールドリペアフィールド
ability.movelightning = ムーブメントライトニング
ability.shieldarc = シールドアーク
ability.suppressionfield = リジェネ抑制フィールド
ability.energyfield = エネルギー範囲: [accent]{0}[] ダメージ ~ [accent]{1}[] ブロック / [accent]{2}[] ターゲット
ability.energyfield = エネルギー範囲
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = コアにのみ搬入できます。
bar.drilltierreq = より高性能なドリルを使用してください

View File

@@ -951,13 +951,16 @@ stat.healing = 회복량
ability.forcefield = 보호막 필드
ability.repairfield = 수리 필드
ability.statusfield = {0} 상태이상 필드
ability.unitspawn = {0} 공장
ability.statusfield = 상태이상 필드
ability.unitspawn = 공장
ability.shieldregenfield = 방어막 복구 필드
ability.movelightning = 가속 전격
ability.shieldarc = 방어막 아크
ability.suppressionfield = 재생성 억제 필드
ability.energyfield = 에너지 필드: [accent]{1}[]타일 내 [accent]{2}[]개 목표물에게 [accent]{0}[]피해량
ability.energyfield = 에너지 필드
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = 코어에만 투입할 수 있습니다
bar.drilltierreq = 더 좋은 드릴 필요

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Privalomas Geresnis Grąžtas

View File

@@ -952,12 +952,16 @@ stat.healing = Genezing
ability.forcefield = Krachtveld
ability.repairfield = Reparatieveld
ability.statusfield = Statusveld
ability.unitspawn = {0} Fabriek
ability.unitspawn = Fabriek
ability.shieldregenfield = Schild Regeneratie Veld
ability.movelightning = Beweging Bliksem
ability.shieldarc = Schild Boog
ability.suppressionfield = Regeneratie Onderdrukkingsveld
ability.energyfield = Energieveld: [accent]{0}[] schade ~ [accent]{1}[] blokken / [accent]{2}[] doelen
ability.energyfield = Energieveld
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Alleen materialen in de Core toegestaan.
bar.drilltierreq = Betere boor nodig

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Better Drill Required

View File

@@ -950,12 +950,16 @@ stat.healing = Leczy
ability.forcefield = Pole Siłowe
ability.repairfield = Pole Naprawy
ability.statusfield = Pole Statusu
ability.unitspawn = Fabryka Jednostek {0}
ability.unitspawn = Fabryka Jednostek
ability.shieldregenfield = Strefa Tarczy Regenerującej
ability.movelightning = Pioruny Poruszania
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Pole Energii: [accent]{0}[] obrażenia ~ [accent]{1}[] bloki / [accent]{2}[] cele
ability.energyfield = Pole Energii
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia
bar.drilltierreq = Wymagane Lepsze Wiertło

View File

@@ -960,13 +960,16 @@ stat.healing = Reparo
ability.forcefield = Campo de Força
ability.repairfield = Campo de Reparação
ability.statusfield = Campo de Status {0}
ability.unitspawn = Fábrica de {0}
ability.statusfield = Campo de Status
ability.unitspawn = Fábrica
ability.shieldregenfield = Raio de Regeneração do Escudo
ability.movelightning = Raio de Movimento
ability.shieldarc = Arco do Escudo
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[]
ability.energyfield = Campo de Energia
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Somente depósito no núcleo permitido
bar.drilltierreq = Broca melhor necessária.

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Broca melhor necessária.

View File

@@ -951,13 +951,17 @@ stat.healing = Reparare
ability.forcefield = Câmp de Forță
ability.repairfield = Câmp de Reparare
ability.statusfield = {0} Câmp de Stare
ability.unitspawn = Fabrică de {0}
ability.statusfield = Câmp de Stare
ability.unitspawn = Fabrică
ability.shieldregenfield = Câmp Regenerare Scut
ability.movelightning = Mișcare Fulger
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte
ability.energyfield = Câmp de Energie
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Burghiu Mai Bun Necesar

View File

@@ -952,13 +952,16 @@ stat.healing = Ремонт
ability.forcefield = Силовое поле
ability.repairfield = Ремонтирующее поле
ability.statusfield = {0} Усиливающее поле
ability.unitspawn = Завод единиц «{0}»
ability.statusfield = Усиливающее поле
ability.unitspawn = Завод единиц <EFBFBD>
ability.shieldregenfield = Поле восстановления щита
ability.movelightning = Молнии при движении
ability.shieldarc = Дуговой щит
ability.suppressionfield = Поле подавления регенерации
ability.energyfield = Энергетическое поле: [accent]{0}[] урона ~ [accent]{1}[] блоков / [accent]{2}[] целей
ability.energyfield = Энергетическое поле
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Доступен перенос только в ядро
bar.drilltierreq = Требуется бур получше

View File

@@ -953,13 +953,17 @@ stat.healing = Popravlja
ability.forcefield = Polje Sile
ability.repairfield = Polje Popravke
ability.statusfield = {0} Statusno Polje
ability.unitspawn = {0} Fabrika
ability.statusfield = Statusno Polje
ability.unitspawn = Fabrika
ability.shieldregenfield = Brzina Obnove Štita
ability.movelightning = Munje Pri Kretanju
ability.shieldarc = Elektrolučni Štit
ability.suppressionfield = Polje Prigušivanja Popravki
ability.energyfield = Energetsko Polje: [accent]{0}[] štete ~ [accent]{1}[] polja / [accent]{2}[] maksimalnih meta
ability.energyfield = Energetsko Polje
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Dozvoljeno Dostavljanje Samo Unutar Jezgra
bar.drilltierreq = Bolja Bušilica Potrebna

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Bättre Borr Krävs

View File

@@ -953,13 +953,16 @@ stat.healing = การรักษา
ability.forcefield = โล่พลังงาน
ability.repairfield = สนามซ่อมแซม
ability.statusfield = {0} สนามเอฟเฟกต์
ability.unitspawn = โรงงานผลิต [accent]{0}
ability.statusfield = สนามเอฟเฟกต์
ability.unitspawn = โรงงานผลิต
ability.shieldregenfield = สนามรักษาโล่
ability.movelightning = ปล่อยสายฟ้าเมื่อเคลื่อนที่
ability.shieldarc = โล่พลังงานโค้ง
ability.suppressionfield = สนามระงับการฟื้นฟู
ability.energyfield = สนามพลังงาน: [accent]{0}[] ดาเมจ ~ [accent]{1}[] บล็อก / [accent]{2}[] เป้าหมาย
ability.energyfield = สนามพลังงาน
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น
bar.drilltierreq = ต้องมีเครื่องขุดที่ดีกว่านี้

View File

@@ -940,12 +940,16 @@ stat.healing = Healing
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.unitspawn = Factory
ability.shieldregenfield = Shield Regen Field
ability.movelightning = Movement Lightning
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
ability.energyfield = Energy Field
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = Only Core Depositing Allowed
bar.drilltierreq = Better Drill Required

View File

@@ -951,13 +951,16 @@ stat.healing = Tamir Eder
ability.forcefield = Güç Kalkanı
ability.repairfield = Onarma Alanı
ability.statusfield = Hızlandırma Alanı
ability.unitspawn = {0} Birliği Fabrikası
ability.unitspawn = Birliği Fabrikası
ability.shieldregenfield = Kalkan Yenileme Alanı
ability.movelightning = Hareket Enerjisi
ability.shieldarc = Arc Kalkan
ability.suppressionfield = Tamir Engelleme Alanı
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
ability.energyfield = Güç Kalkanı
bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.drilltierreq = Daha Güçlü Matkap Gerekli
bar.noresources = Kaynak Yetersiz

View File

@@ -961,13 +961,16 @@ stat.healing = Відновлювання
ability.forcefield = 虳邽<EFBFBD>郋赲迮 郈郋郅迮
ability.repairfield = <EFBFBD>迮邾郋郇<EFBFBD><EFBFBD>赲訄郅<EFBFBD>郇迮 郈郋郅迮
ability.statusfield = {0} Поле підсилення
ability.unitspawn = Завод одиниць «{0}»
ability.statusfield = <EFBFBD>郋郅迮 郈<><EFBFBD>邽郅迮郇郇<E98387>
ability.unitspawn = <EFBFBD>訄赲郋迡 郋迡邽郇邽<E98387><E982BD> <20>
ability.shieldregenfield = 虳邽<EFBFBD>郋赲<EFBFBD>迡郇郋赲郅<EFBFBD>赲訄郅<EFBFBD>郇迮 郈郋郅迮
ability.movelightning = <EFBFBD>郅邽<EFBFBD>郕訄赲郕邽 郈<><20><EFBFBD> <20><><EFBFBD><EFBFBD>
ability.shieldarc = 虳邽<EFBFBD>郋赲訄 迡<>迣訄
ability.suppressionfield = <EFBFBD>郋郅迮 郈<>邽迣郇<E8BFA3><E98387>迮郇郇<E98387><>迡郇郋赲郅迮郇郇<E98387>
ability.energyfield = Енергетичне поле: [accent]{0}[] шкоди ~ [accent]{1}[] блоків / [accent]{2}[] цілей
ability.energyfield = <EFBFBD>郇迮<EFBFBD>迣迮<EFBFBD><EFBFBD>郇迮 郈郋郅迮
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = <EFBFBD><EFBFBD>迮迡訄<EFBFBD>訄 郈<>迮迡邾迮<E982BE><E8BFAE>赲 迡郋郱赲郋郅迮郇訄 郅邽<E98385>迮 迡郋 <20><EFBFBD>
bar.drilltierreq = <EFBFBD><EFBFBD><EFBFBD><EFBFBD>訇迮郇 郅<><EFBFBD>邽邿 訇<><E8A887>

View File

@@ -954,14 +954,17 @@ stat.healing = Sửa chữa
ability.forcefield = Tạo khiên
ability.repairfield = Sửa chữa/Xây dựng
ability.statusfield = {0} Vùng gia tốc
ability.unitspawn = Sản xuất {0}
ability.statusfield = Vùng gia tốc
ability.unitspawn = Sản xuất
ability.shieldregenfield = Tạo khiên nhỏ
ability.movelightning = Phóng điện khi di chuyển
ability.shieldarc = Khiên Vòng Cung
ability.suppressionfield = Trường sửa chữa
ability.energyfield = Trường điện từ: [accent]{0}[] sát thương ~ [accent]{1}[] khối / [accent]{2}[] mục tiêu
ability.energyfield = Trường điện từ
bar.onlycoredeposit = Chỉ có thể đưa vào căn cứ
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.drilltierreq = Cần máy khoan tốt hơn
bar.noresources = Thiếu tài nguyên

View File

@@ -962,13 +962,16 @@ stat.healing = 治疗
ability.forcefield = 力墙场
ability.repairfield = 修复场
ability.statusfield = {0}状态场
ability.unitspawn = {0}单位工厂
ability.statusfield = 状态场
ability.unitspawn = 单位工厂
ability.shieldregenfield = 护盾再生场
ability.movelightning = 闪电助推器
ability.shieldarc = 弧形护盾
ability.suppressionfield = 修复压制场
ability.energyfield = 能量场:[accent]{0}[]伤害~[accent]{1}[]格/[accent]{2}[]目标
ability.energyfield = 能量场:
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = 仅核心可丢入资源
bar.drilltierreq = 需要更高级的钻头

View File

@@ -958,13 +958,16 @@ stat.healing = 治癒
ability.forcefield = 防護罩
ability.repairfield = 維修力場
ability.statusfield = {0}狀態力場
ability.unitspawn = {0}工廠
ability.statusfield = 狀態力場
ability.unitspawn = 工廠
ability.shieldregenfield = 護盾充能力場
ability.movelightning = 移動閃電
ability.shieldarc = Shield Arc
ability.suppressionfield = Regen Suppression Field
ability.energyfield = 能量場: [accent]{0}[] 傷害 ~ [accent]{1}[] 方格 / [accent]{2}[] 目標數
ability.energyfield = 能量場:
ability.energyfield.sametypehealmultiplier = [lightgray]Same Type Healing: [white]{0}%
ability.energyfield.maxtargets = [lightgray]Max Targets: [white]{0}
ability.regen = Regeneration
bar.onlycoredeposit = 僅允許向核心放置物品
bar.drilltierreq = 需要更好的鑽頭

View File

@@ -15,6 +15,8 @@ public abstract class Ability implements Cloneable{
public void draw(Unit unit){}
public void death(Unit unit){}
public void init(UnitType type){}
public void displayBars(Unit unit, Table bars){}
public void addStats(Table t){}
public Ability copy(){
try{
@@ -25,10 +27,6 @@ public abstract class Ability implements Cloneable{
}
}
public void displayBars(Unit unit, Table bars){
}
/** @return localized ability name; mods should override this. */
public String localized(){
var type = getClass();

View File

@@ -4,9 +4,11 @@ import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.scene.ui.layout.Table;
import arc.util.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.world.meta.*;
public class ArmorPlateAbility extends Ability{
public TextureRegion plateRegion;
@@ -25,6 +27,11 @@ public class ArmorPlateAbility extends Ability{
unit.healthMultiplier += warmup * healthMultiplier;
}
@Override
public void addStats(Table t){
t.add("[lightgray]" + Stat.healthMultiplier.localized() + ": [white]" + Math.round(healthMultiplier * 100f) + 100 + "%");
}
@Override
public void draw(Unit unit){
if(warmup > 0.001f){

View File

@@ -5,15 +5,16 @@ import arc.audio.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
@@ -31,6 +32,7 @@ public class EnergyFieldAbility extends Ability{
public float healPercent = 3f;
/** Multiplies healing to units of the same type by this amount. */
public float sameTypeHealMult = 1f;
public boolean displayHeal = true;
public float layer = Layer.bullet - 0.001f, blinkScl = 20f, blinkSize = 0.1f;
public float effectRadius = 5f, sectorRad = 0.14f, rotateSpeed = 0.5f;
@@ -50,8 +52,25 @@ public class EnergyFieldAbility extends Ability{
}
@Override
public String localized(){
return Core.bundle.format("ability.energyfield", damage, range / Vars.tilesize, maxTargets);
public void addStats(Table t){
t.add(Core.bundle.format("bullet.damage", damage));
t.row();
t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized());
t.row();
t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized());
t.row();
t.add(Core.bundle.format("ability.energyfield.maxtargets", maxTargets));
if(displayHeal){
t.row();
t.add(Core.bundle.format("bullet.healpercent", Strings.autoFixed(healPercent, 2)));
t.row();
t.add(Core.bundle.format("ability.energyfield.sametypehealmultiplier", Math.round(sameTypeHealMult * 100f)));
}
if(status != StatusEffects.none){
t.row();
t.add(status.emoji() + " " + status.localizedName);
}
}
@Override

View File

@@ -12,6 +12,9 @@ import mindustry.content.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class ForceFieldAbility extends Ability{
/** Shield radius. */
@@ -68,6 +71,18 @@ public class ForceFieldAbility extends Ability{
ForceFieldAbility(){}
@Override
public void addStats(Table t){
t.add("[lightgray]" + Stat.health.localized() + ": [white]" + Math.round(max));
t.row();
t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(radius / tilesize, 2) + " " + StatUnit.blocks.localized());
t.row();
t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(regen * 60f, 2) + StatUnit.perSecond.localized());
t.row();
t.add("[lightgray]" + Stat.cooldownTime.localized() + ": [white]" + Strings.autoFixed(cooldown / 60f, 2) + " " + StatUnit.seconds.localized());
t.row();
}
@Override
public void update(Unit unit){
if(unit.shield < max){

View File

@@ -30,6 +30,7 @@ public class MoveEffectAbility extends Ability{
}
public MoveEffectAbility(){
display = false;
}
@Override

View File

@@ -1,7 +1,10 @@
package mindustry.entities.abilities;
import arc.Core;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.world.meta.*;
public class RegenAbility extends Ability{
/** Amount healed as percent per tick. */
@@ -9,6 +12,18 @@ public class RegenAbility extends Ability{
/** Amount healed as a flat amount per tick. */
public float amount = 0f;
@Override
public void addStats(Table t){
if(amount > 0.01f){
t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(amount * 60f, 2) + StatUnit.perSecond.localized());
t.row();
}
if(percentAmount > 0.01f){
t.add(Core.bundle.format("bullet.healpercent", Strings.autoFixed(percentAmount * 60f, 2)) + StatUnit.perSecond.localized()); //stupid but works
}
}
@Override
public void update(Unit unit){
unit.heal((unit.maxHealth * percentAmount / 100f + amount) * Time.delta);

View File

@@ -1,9 +1,13 @@
package mindustry.entities.abilities;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.world.meta.*;
import static mindustry.Vars.tilesize;
public class RepairFieldAbility extends Ability{
public float amount = 1, reload = 100, range = 60;
@@ -22,6 +26,13 @@ public class RepairFieldAbility extends Ability{
this.range = range;
}
@Override
public void addStats(Table t){
t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(amount * 60f / reload, 2) + StatUnit.perSecond.localized());
t.row();
t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized());
}
@Override
public void update(Unit unit){
timer += Time.delta;

View File

@@ -13,6 +13,7 @@ import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.world.meta.*;
public class ShieldArcAbility extends Ability{
private static Unit paramUnit;
@@ -66,6 +67,16 @@ public class ShieldArcAbility extends Ability{
/** State. */
protected float widthScale, alpha;
@Override
public void addStats(Table t){
t.add("[lightgray]" + Stat.health.localized() + ": [white]" + Math.round(max));
t.row();
t.add("[lightgray]" + Stat.repairSpeed.localized() + ": [white]" + Strings.autoFixed(regen * 60f, 2) + StatUnit.perSecond.localized());
t.row();
t.add("[lightgray]" + Stat.cooldownTime.localized() + ": [white]" + Strings.autoFixed(cooldown / 60f, 2) + " " + StatUnit.seconds.localized());
t.row();
}
@Override
public void update(Unit unit){
if(data < max){

View File

@@ -1,9 +1,14 @@
package mindustry.entities.abilities;
import arc.Core;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.world.meta.*;
import static mindustry.Vars.tilesize;
public class ShieldRegenFieldAbility extends Ability{
public float amount = 1, max = 100f, reload = 100, range = 60;
@@ -23,6 +28,16 @@ public class ShieldRegenFieldAbility extends Ability{
this.range = range;
}
@Override
public void addStats(Table t){
t.add("[lightgray]" + Core.bundle.get("waves.shields") + ": [white]" + Math.round(max)); //extremely stupid usage
t.row();
t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized());
t.row();
t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized());
t.row();
}
@Override
public void update(Unit unit){
timer += Time.delta;

View File

@@ -1,6 +1,7 @@
package mindustry.entities.abilities;
import arc.math.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.*;
import mindustry.gen.*;
@@ -24,6 +25,11 @@ public class SpawnDeathAbility extends Ability{
public SpawnDeathAbility(){
}
@Override
public void addStats(Table t){
t.add((randAmount > 0 ? amount + "-" + (amount + randAmount) : amount) + " " + unit.emoji() + " " + unit.localizedName);
}
@Override
public void death(Unit unit){
if(!Vars.net.client()){

View File

@@ -1,16 +1,19 @@
package mindustry.entities.abilities;
import arc.*;
import arc.math.*;
import arc.scene.ui.layout.Table;
import arc.util.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.meta.*;
import static mindustry.Vars.tilesize;
public class StatusFieldAbility extends Ability{
public StatusEffect effect;
public float duration = 60, reload = 100, range = 20;
public float duration = 60, reload = 100, range = 20; //
public boolean onShoot = false;
public Effect applyEffect = Fx.none;
public Effect activeEffect = Fx.overdriveWave;
@@ -29,8 +32,12 @@ public class StatusFieldAbility extends Ability{
}
@Override
public String localized(){
return Core.bundle.format("ability.statusfield", effect.emoji());
public void addStats(Table t){
t.add("[lightgray]" + Stat.reload.localized() + ": [white]" + Strings.autoFixed(60f / reload, 2) + " " + StatUnit.perSecond.localized());
t.row();
t.add("[lightgray]" + Stat.shootRange.localized() + ": [white]" + Strings.autoFixed(range / tilesize, 2) + " " + StatUnit.blocks.localized());
t.row();
t.add(effect.emoji() + " " + effect.localizedName);
}
@Override

View File

@@ -3,6 +3,7 @@ package mindustry.entities.abilities;
import arc.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.*;
import mindustry.content.*;
@@ -11,6 +12,7 @@ import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
@@ -32,6 +34,13 @@ public class UnitSpawnAbility extends Ability{
public UnitSpawnAbility(){
}
@Override
public void addStats(Table t){
t.add("[lightgray]" + Stat.buildTime.localized() + ": [white]" + Strings.autoFixed(spawnTime / 60f, 2) + " " + StatUnit.seconds.localized());
t.row();
t.add(unit.emoji() + " " + unit.localizedName);
}
@Override
public void update(Unit unit){
timer += Time.delta * state.rules.unitBuildSpeed(unit.team);

View File

@@ -603,13 +603,7 @@ public class UnitType extends UnlockableContent implements Senseable{
stats.add(Stat.range, (int)(maxRange / tilesize), StatUnit.blocks);
if(abilities.any()){
var unique = new ObjectSet<String>();
for(Ability a : abilities){
if(a.display && unique.add(a.localized())){
stats.add(Stat.abilities, a.localized());
}
}
stats.add(Stat.abilities, StatValues.abilities(abilities));
}
stats.add(Stat.flying, flying);

View File

@@ -12,6 +12,7 @@ import arc.util.*;
import mindustry.*;
import mindustry.content.*;
import mindustry.ctype.*;
import mindustry.entities.abilities.*;
import mindustry.entities.bullet.*;
import mindustry.gen.*;
import mindustry.maps.*;
@@ -348,7 +349,7 @@ public class StatValues{
public static StatValue weapons(UnitType unit, Seq<Weapon> weapons){
return table -> {
table.row();
for(int i = 0; i < weapons.size;i ++){
for(int i = 0; i < weapons.size; i++){
Weapon weapon = weapons.get(i);
if(weapon.flipSprite || !weapon.hasStats(unit)){
@@ -370,6 +371,23 @@ public class StatValues{
};
}
public static StatValue abilities(Seq<Ability> abilities){
return table -> {
table.row();
table.table(t -> abilities.each(ability -> {
if(ability.display){
t.row();
t.table(Styles.grayPanel, a -> {
a.add("[accent]" + ability.localized()).padBottom(4);
a.row();
a.left().top().defaults().left();
ability.addStats(a);
}).pad(5).margin(10).growX();
}
}));
};
}
public static <T extends UnlockableContent> StatValue ammo(ObjectMap<T, BulletType> map){
return ammo(map, 0, false);
}