Merge branch 'master' into patch-2

This commit is contained in:
Thomas Widyantoko
2020-10-20 05:55:02 +07:00
committed by GitHub
124 changed files with 2438 additions and 2294 deletions

View File

@@ -512,6 +512,7 @@ weather.rain.name = Rain
weather.snow.name = Snow weather.snow.name = Snow
weather.sandstorm.name = Sandstorm weather.sandstorm.name = Sandstorm
weather.sporestorm.name = Sporestorm weather.sporestorm.name = Sporestorm
weather.fog.name = Fog
sectors.unexplored = [lightgray]Unexplored sectors.unexplored = [lightgray]Unexplored
sectors.resources = Resources: sectors.resources = Resources:
@@ -581,50 +582,61 @@ error.title = [scarlet]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
lastaccessed = [lightgray]Last Accessed: {0} lastaccessed = [lightgray]Last Accessed: {0}
blocks.input = Input
blocks.output = Output
blocks.booster = Booster
blocks.tiles = Required Tiles
blocks.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.input = Input
blocks.damage = Damage stat.output = Output
blocks.targetsair = Targets Air stat.booster = Booster
blocks.targetsground = Targets Ground stat.tiles = Required Tiles
blocks.itemsmoved = Move Speed stat.affinities = Affinities
blocks.launchtime = Time Between Launches stat.powercapacity = Power Capacity
blocks.shootrange = Range stat.powershot = Power/Shot
blocks.size = Size stat.damage = Damage
blocks.displaysize = Display Size stat.targetsair = Targets Air
blocks.liquidcapacity = Liquid Capacity stat.targetsground = Targets Ground
blocks.powerrange = Power Range stat.itemsmoved = Move Speed
blocks.linkrange = Link Range stat.launchtime = Time Between Launches
blocks.instructions = Instructions stat.shootrange = Range
blocks.powerconnections = Max Connections stat.size = Size
blocks.poweruse = Power Use stat.displaysize = Display Size
blocks.powerdamage = Power/Damage stat.liquidcapacity = Liquid Capacity
blocks.itemcapacity = Item Capacity stat.powerrange = Power Range
blocks.memorycapacity = Memory Capacity stat.linkrange = Link Range
blocks.basepowergeneration = Base Power Generation stat.instructions = Instructions
blocks.productiontime = Production Time stat.powerconnections = Max Connections
blocks.repairtime = Block Full Repair Time stat.poweruse = Power Use
blocks.speedincrease = Speed Increase stat.powerdamage = Power/Damage
blocks.range = Range stat.itemcapacity = Item Capacity
blocks.drilltier = Drillables stat.memorycapacity = Memory Capacity
blocks.drillspeed = Base Drill Speed stat.basepowergeneration = Base Power Generation
blocks.boosteffect = Boost Effect stat.productiontime = Production Time
blocks.maxunits = Max Active Units stat.repairtime = Block Full Repair Time
blocks.health = Health stat.speedincrease = Speed Increase
blocks.buildtime = Build Time stat.range = Range
blocks.maxconsecutive = Max Consecutive stat.drilltier = Drillables
blocks.buildcost = Build Cost stat.drillspeed = Base Drill Speed
blocks.inaccuracy = Inaccuracy stat.boosteffect = Boost Effect
blocks.shots = Shots stat.maxunits = Max Active Units
blocks.reload = Shots/Second stat.health = Health
blocks.ammo = Ammo stat.buildtime = Build Time
blocks.shieldhealth = Shield Health stat.maxconsecutive = Max Consecutive
blocks.cooldowntime = Cooldown Time stat.buildcost = Build Cost
stat.inaccuracy = Inaccuracy
stat.shots = Shots
stat.reload = Shots/Second
stat.ammo = Ammo
stat.shieldhealth = Shield Health
stat.cooldowntime = Cooldown Time
stat.explosiveness = Explosiveness
stat.flammability = Flammability
stat.radioactivity = Radioactivity
stat.heatcapacity = HeatCapacity
stat.viscosity = Viscosity
stat.temperature = Temperature
stat.speed = Speed
stat.buildspeed = Build Speed
stat.minespeed = Mine Speed
stat.minetier = Mine Tier
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -875,6 +887,7 @@ content.item.name = Items
content.liquid.name = Liquids content.liquid.name = Liquids
content.unit.name = Units content.unit.name = Units
content.block.name = Blocks content.block.name = Blocks
item.copper.name = Copper item.copper.name = Copper
item.lead.name = Lead item.lead.name = Lead
item.coal.name = Coal item.coal.name = Coal
@@ -896,23 +909,6 @@ liquid.slag.name = Slag
liquid.oil.name = Oil liquid.oil.name = Oil
liquid.cryofluid.name = Cryofluid liquid.cryofluid.name = Cryofluid
item.explosiveness = [lightgray]Explosiveness: {0}%
item.flammability = [lightgray]Flammability: {0}%
item.radioactivity = [lightgray]Radioactivity: {0}%
unit.health = [lightgray]Health: {0}
unit.speed = [lightgray]Speed: {0}
unit.weapon = [lightgray]Weapon: {0}
unit.itemcapacity = [lightgray]Item Capacity: {0}
unit.minespeed = [lightgray]Mining Speed: {0}%
unit.minepower = [lightgray]Mining Power: {0}
unit.ability = [lightgray]Ability: {0}
unit.buildspeed = [lightgray]Building Speed: {0}%
liquid.heatcapacity = [lightgray]Heat Capacity: {0}
liquid.viscosity = [lightgray]Viscosity: {0}
liquid.temperature = [lightgray]Temperature: {0}
unit.dagger.name = Dagger unit.dagger.name = Dagger
unit.mace.name = Mace unit.mace.name = Mace
unit.fortress.name = Fortress unit.fortress.name = Fortress
@@ -1324,5 +1320,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Інфармацыя
error.title = [crimson]Адбылася памылка error.title = [crimson]Адбылася памылка
error.crashtitle = Адбылася памылка error.crashtitle = Адбылася памылка
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Уваход stat.input = Уваход
blocks.output = Выхад stat.output = Выхад
blocks.booster = Паскаральнік stat.booster = Паскаральнік
blocks.tiles = Неабходныя пліткі stat.tiles = Неабходныя пліткі
blocks.affinities = Павелічэнне эфектыўнасці stat.affinities = Павелічэнне эфектыўнасці
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Умяшчальнасць энергіі stat.powercapacity = Умяшчальнасць энергіі
blocks.powershot = Энергія/Выстрэл stat.powershot = Энергія/Выстрэл
blocks.damage = Страты stat.damage = Страты
blocks.targetsair = Паветраныя мэты stat.targetsair = Паветраныя мэты
blocks.targetsground = Наземныя мэты stat.targetsground = Наземныя мэты
blocks.itemsmoved = Хуткасць перамяшчэння stat.itemsmoved = Хуткасць перамяшчэння
blocks.launchtime = Інтэрвал запускаў stat.launchtime = Інтэрвал запускаў
blocks.shootrange = Радыус дзеяння stat.shootrange = Радыус дзеяння
blocks.size = Памер stat.size = Памер
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Умяшчальнасць вадкасці stat.liquidcapacity = Умяшчальнасць вадкасці
blocks.powerrange = Далёкасць перадачы энергіі stat.powerrange = Далёкасць перадачы энергіі
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Колькасць злучэнняў stat.powerconnections = Колькасць злучэнняў
blocks.poweruse = Спажывае энергіі stat.poweruse = Спажывае энергіі
blocks.powerdamage = Энергія/страты stat.powerdamage = Энергія/страты
blocks.itemcapacity = Умяшчальнасць прадметаў stat.itemcapacity = Умяшчальнасць прадметаў
blocks.basepowergeneration = Базавая генерацыя энергіі stat.basepowergeneration = Базавая генерацыя энергіі
blocks.productiontime = Час вытворчасці stat.productiontime = Час вытворчасці
blocks.repairtime = Час поўнай рэгенерацыі stat.repairtime = Час поўнай рэгенерацыі
blocks.speedincrease = Павелічэнне хуткасці stat.speedincrease = Павелічэнне хуткасці
blocks.range = Радыус дзеяння stat.range = Радыус дзеяння
blocks.drilltier = Бурит stat.drilltier = Бурит
blocks.drillspeed = Базавая хуткасць свідравання stat.drillspeed = Базавая хуткасць свідравання
blocks.boosteffect = паскараўся эфект stat.boosteffect = паскараўся эфект
blocks.maxunits = Максімальная колькасць актыўных адзінак stat.maxunits = Максімальная колькасць актыўных адзінак
blocks.health = Здароўе stat.health = Здароўе
blocks.buildtime = Час будаўніцтва stat.buildtime = Час будаўніцтва
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Кошт будаўніцтва stat.buildcost = Кошт будаўніцтва
blocks.inaccuracy = Роскід stat.inaccuracy = Роскід
blocks.shots = Стрэлы stat.shots = Стрэлы
blocks.reload = Стрэлы/секунду stat.reload = Стрэлы/секунду
blocks.ammo = Боепрыпасы stat.ammo = Боепрыпасы
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Патрабуецца свідар лепей bar.drilltierreq = Патрабуецца свідар лепей
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Вялікая турэль, якая можа ве
block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах. block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах.
block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы. block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы.
block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе. block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -572,50 +572,50 @@ info.title = Informace
error.title = [scarlet]Objevila se chyba[] error.title = [scarlet]Objevila se chyba[]
error.crashtitle = Objevila se chyba error.crashtitle = Objevila se chyba
unit.nobuild = [scarlet]Jednotka nemůže stavět unit.nobuild = [scarlet]Jednotka nemůže stavět
blocks.input = Vstup stat.input = Vstup
blocks.output = Výstup stat.output = Výstup
blocks.booster = Posilovač stat.booster = Posilovač
blocks.tiles = Vyžadované dlaždice stat.tiles = Vyžadované dlaždice
blocks.affinities = Synergie stat.affinities = Synergie
block.unknown = [lightgray]???[] block.unknown = [lightgray]???[]
blocks.powercapacity = Kapacita energie stat.powercapacity = Kapacita energie
blocks.powershot = Energie na 1 výstřel stat.powershot = Energie na 1 výstřel
blocks.damage = Poškození stat.damage = Poškození
blocks.targetsair = Zaměřuje vzdušné jednotky stat.targetsair = Zaměřuje vzdušné jednotky
blocks.targetsground = Zaměřuje pozemní jednotky stat.targetsground = Zaměřuje pozemní jednotky
blocks.itemsmoved = Rychlost pohybu stat.itemsmoved = Rychlost pohybu
blocks.launchtime = Čas mezi vysláním stat.launchtime = Čas mezi vysláním
blocks.shootrange = Dostřel stat.shootrange = Dostřel
blocks.size = Velikost stat.size = Velikost
blocks.displaysize = Velikost zobrazovače stat.displaysize = Velikost zobrazovače
blocks.liquidcapacity = Kapacita kapalin stat.liquidcapacity = Kapacita kapalin
blocks.powerrange = Rozsah energie stat.powerrange = Rozsah energie
blocks.linkrange = Dosah napojení stat.linkrange = Dosah napojení
blocks.instructions = Instrukce stat.instructions = Instrukce
blocks.powerconnections = Nejvyšší počet spojení stat.powerconnections = Nejvyšší počet spojení
blocks.poweruse = Spotřeba energie stat.poweruse = Spotřeba energie
blocks.powerdamage = Energie na jednotku poškození stat.powerdamage = Energie na jednotku poškození
blocks.itemcapacity = Kapacita předmětů stat.itemcapacity = Kapacita předmětů
blocks.memorycapacity = Kapacita paměti stat.memorycapacity = Kapacita paměti
blocks.basepowergeneration = Základní generování energie stat.basepowergeneration = Základní generování energie
blocks.productiontime = Čas produkce stat.productiontime = Čas produkce
blocks.repairtime = Čas do úplné opravy stat.repairtime = Čas do úplné opravy
blocks.speedincrease = Zvýšení rychlosti stat.speedincrease = Zvýšení rychlosti
blocks.range = Dosah stat.range = Dosah
blocks.drilltier = Lze těžit stat.drilltier = Lze těžit
blocks.drillspeed = Základní rychlost vrtu stat.drillspeed = Základní rychlost vrtu
blocks.boosteffect = Účinek posílení stat.boosteffect = Účinek posílení
blocks.maxunits = Nejvýše aktivních jednotek stat.maxunits = Nejvýše aktivních jednotek
blocks.health = Životy stat.health = Životy
blocks.buildtime = Čas stavby stat.buildtime = Čas stavby
blocks.maxconsecutive = Nejvýše po sobě stat.maxconsecutive = Nejvýše po sobě
blocks.buildcost = Cena stavby stat.buildcost = Cena stavby
blocks.inaccuracy = Nepřesnost stat.inaccuracy = Nepřesnost
blocks.shots = Střely stat.shots = Střely
blocks.reload = Střel za 1s stat.reload = Střel za 1s
blocks.ammo = Střelivo stat.ammo = Střelivo
blocks.shieldhealth = Zdraví štítu stat.shieldhealth = Zdraví štítu
blocks.cooldowntime = Čas na zchladnutí stat.cooldowntime = Čas na zchladnutí
bar.drilltierreq = Je vyžadován lepší vrt bar.drilltierreq = Je vyžadován lepší vrt
bar.noresources = Chybějí zdroje bar.noresources = Chybějí zdroje
@@ -1312,4 +1312,4 @@ block.cyclone.description = Velká protiletecká a protipozemní střílna. Pál
block.spectre.description = Velká střílna s kanónem s dvěma hlavněmi. Střílí velké náboje, které pronikají brněním jak pozemních, tak vzdušných nepřátelských cílů. block.spectre.description = Velká střílna s kanónem s dvěma hlavněmi. Střílí velké náboje, které pronikají brněním jak pozemních, tak vzdušných nepřátelských cílů.
block.meltdown.description = Masivní laserový kanón. Nabije se a pak pálí nepřetržitý laserový paprsek na nepřátele v okolí. Vyžaduje ke své funkci chlazení. block.meltdown.description = Masivní laserový kanón. Nabije se a pak pálí nepřetržitý laserový paprsek na nepřátele v okolí. Vyžaduje ke své funkci chlazení.
block.repair-point.description = Nepřetržitě léčí nejbližší poškozenou jednotku v poli své působnosti. block.repair-point.description = Nepřetržitě léčí nejbližší poškozenou jednotku v poli své působnosti.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity stat.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.powershot = Power/Shot
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Targets Air stat.targetsair = Targets Air
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Range stat.shootrange = Range
blocks.size = Size stat.size = Size
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Liquid Capacity stat.liquidcapacity = Liquid Capacity
blocks.powerrange = Power Range stat.powerrange = Power Range
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Power Use stat.poweruse = Power Use
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity stat.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Drillables stat.drilltier = Drillables
blocks.drillspeed = Base Drill Speed stat.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Health stat.health = Health
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = Inaccuracy stat.inaccuracy = Inaccuracy
blocks.shots = Shots stat.shots = Shots
blocks.reload = Shots/Second stat.reload = Shots/Second
blocks.ammo = Ammo stat.ammo = Ammo
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]Ein Fehler ist aufgetreten error.title = [crimson]Ein Fehler ist aufgetreten
error.crashtitle = Ein Fehler ist aufgetreten! error.crashtitle = Ein Fehler ist aufgetreten!
unit.nobuild = [scarlet]Einheit kann nicht bauen! unit.nobuild = [scarlet]Einheit kann nicht bauen!
blocks.input = Eingang stat.input = Eingang
blocks.output = Ausgang stat.output = Ausgang
blocks.booster = Verstärkung stat.booster = Verstärkung
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Kapazität stat.powercapacity = Kapazität
blocks.powershot = Stromverbrauch/Schuss stat.powershot = Stromverbrauch/Schuss
blocks.damage = Schaden stat.damage = Schaden
blocks.targetsair = Visiert Lufteinheiten an stat.targetsair = Visiert Lufteinheiten an
blocks.targetsground = Visiert Bodeneinheiten an stat.targetsground = Visiert Bodeneinheiten an
blocks.itemsmoved = Bewegungsgeschwindigkeit stat.itemsmoved = Bewegungsgeschwindigkeit
blocks.launchtime = Zeit zwischen Starts stat.launchtime = Zeit zwischen Starts
blocks.shootrange = Reichweite stat.shootrange = Reichweite
blocks.size = Größe stat.size = Größe
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Flüssigkeitskapazität stat.liquidcapacity = Flüssigkeitskapazität
blocks.powerrange = Stromreichweite stat.powerrange = Stromreichweite
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Maximale Stromverbindungen stat.powerconnections = Maximale Stromverbindungen
blocks.poweruse = Stromverbrauch stat.poweruse = Stromverbrauch
blocks.powerdamage = Stromverbrauch/Schadenspunkt stat.powerdamage = Stromverbrauch/Schadenspunkt
blocks.itemcapacity = Materialkapazität stat.itemcapacity = Materialkapazität
blocks.basepowergeneration = Basis-Stromerzeugung stat.basepowergeneration = Basis-Stromerzeugung
blocks.productiontime = Produktionszeit stat.productiontime = Produktionszeit
blocks.repairtime = Zeit zur vollständigen Reparatur stat.repairtime = Zeit zur vollständigen Reparatur
blocks.speedincrease = Geschwindigkeitserhöhung stat.speedincrease = Geschwindigkeitserhöhung
blocks.range = Reichweite stat.range = Reichweite
blocks.drilltier = Abbaubare Erze stat.drilltier = Abbaubare Erze
blocks.drillspeed = Bohrgeschwindigkeit stat.drillspeed = Bohrgeschwindigkeit
blocks.boosteffect = Verstärkungseffekt stat.boosteffect = Verstärkungseffekt
blocks.maxunits = Max. aktive Einheiten stat.maxunits = Max. aktive Einheiten
blocks.health = Lebenspunkte stat.health = Lebenspunkte
blocks.buildtime = Baudauer stat.buildtime = Baudauer
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Baukosten stat.buildcost = Baukosten
blocks.inaccuracy = Ungenauigkeit stat.inaccuracy = Ungenauigkeit
blocks.shots = Schüsse stat.shots = Schüsse
blocks.reload = Schüsse/Sekunde stat.reload = Schüsse/Sekunde
blocks.ammo = Munition stat.ammo = Munition
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Besserer Bohrer Benötigt bar.drilltierreq = Besserer Bohrer Benötigt
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Ein großer Schnellfeuer-Geschützturm.
block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert. block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert.
block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert. block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert.
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung. block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = [accent]Información
error.title = [crimson]Un error ha ocurrido. error.title = [crimson]Un error ha ocurrido.
error.crashtitle = Un error ha ocurrido. error.crashtitle = Un error ha ocurrido.
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Entrada stat.input = Entrada
blocks.output = Salida stat.output = Salida
blocks.booster = Potenciador stat.booster = Potenciador
blocks.tiles = Tiles requeridos stat.tiles = Tiles requeridos
blocks.affinities = Afinidades stat.affinities = Afinidades
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacidad de Energía stat.powercapacity = Capacidad de Energía
blocks.powershot = Energía/Disparo stat.powershot = Energía/Disparo
blocks.damage = Daño stat.damage = Daño
blocks.targetsair = Apunta al Aire stat.targetsair = Apunta al Aire
blocks.targetsground = Apunta a Tierra stat.targetsground = Apunta a Tierra
blocks.itemsmoved = Velocidad de movimiento stat.itemsmoved = Velocidad de movimiento
blocks.launchtime = Tiempo entre lanzamientos stat.launchtime = Tiempo entre lanzamientos
blocks.shootrange = Rango de Disparo stat.shootrange = Rango de Disparo
blocks.size = Tamaño stat.size = Tamaño
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacidad de Líquidos stat.liquidcapacity = Capacidad de Líquidos
blocks.powerrange = Rango de Energía stat.powerrange = Rango de Energía
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Conexiones maximas stat.powerconnections = Conexiones maximas
blocks.poweruse = Consumo de Energía stat.poweruse = Consumo de Energía
blocks.powerdamage = Energía/Daño stat.powerdamage = Energía/Daño
blocks.itemcapacity = Capacidad de Objetos stat.itemcapacity = Capacidad de Objetos
blocks.basepowergeneration = Generación de energía base stat.basepowergeneration = Generación de energía base
blocks.productiontime = Tiempo de producción stat.productiontime = Tiempo de producción
blocks.repairtime = Tiempo para Reparar Bloque Completamente stat.repairtime = Tiempo para Reparar Bloque Completamente
blocks.speedincrease = Aumento de Velocidad stat.speedincrease = Aumento de Velocidad
blocks.range = Rango stat.range = Rango
blocks.drilltier = Taladrables stat.drilltier = Taladrables
blocks.drillspeed = Velocidad Base del Taladro stat.drillspeed = Velocidad Base del Taladro
blocks.boosteffect = Efecto del Potenciador stat.boosteffect = Efecto del Potenciador
blocks.maxunits = Máximo de Unidades Activas stat.maxunits = Máximo de Unidades Activas
blocks.health = Vida stat.health = Vida
blocks.buildtime = Tiempo de construcción stat.buildtime = Tiempo de construcción
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Coste de construcción stat.buildcost = Coste de construcción
blocks.inaccuracy = Imprecisión stat.inaccuracy = Imprecisión
blocks.shots = Disparos stat.shots = Disparos
blocks.reload = Recarga stat.reload = Recarga
blocks.ammo = Munición stat.ammo = Munición
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Se requiere un mejor taladro. bar.drilltierreq = Se requiere un mejor taladro.
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Una torre grande anti-aérea y anti-terrestre. Dispa
block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perforantes a objetivos de aire y tierra. block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perforantes a objetivos de aire y tierra.
block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar.
block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. block.repair-point.description = Repara la unidad dañada más cercana a su alrededor.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]Viga error.title = [crimson]Viga
error.crashtitle = Viga error.crashtitle = Viga
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Sisend stat.input = Sisend
blocks.output = Väljund stat.output = Väljund
blocks.booster = Kiirendaja stat.booster = Kiirendaja
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Energiamahtuvus stat.powercapacity = Energiamahtuvus
blocks.powershot = Energia ühikut/lasu kohta stat.powershot = Energia ühikut/lasu kohta
blocks.damage = Hävituspunkte stat.damage = Hävituspunkte
blocks.targetsair = Sihib õhku stat.targetsair = Sihib õhku
blocks.targetsground = Sihib maapinnale stat.targetsground = Sihib maapinnale
blocks.itemsmoved = Transportimise kiirus stat.itemsmoved = Transportimise kiirus
blocks.launchtime = Aeg lendutõusude vahel stat.launchtime = Aeg lendutõusude vahel
blocks.shootrange = Ulatus stat.shootrange = Ulatus
blocks.size = Suurus stat.size = Suurus
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Vedelike mahutavus stat.liquidcapacity = Vedelike mahutavus
blocks.powerrange = Energia ulatus stat.powerrange = Energia ulatus
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Energiatarve stat.poweruse = Energiatarve
blocks.powerdamage = Energiatarve hävituspunkti kohta stat.powerdamage = Energiatarve hävituspunkti kohta
blocks.itemcapacity = Ressursside mahutavus stat.itemcapacity = Ressursside mahutavus
blocks.basepowergeneration = Energiatootlus stat.basepowergeneration = Energiatootlus
blocks.productiontime = Tootmisaeg stat.productiontime = Tootmisaeg
blocks.repairtime = Täieliku parandamise aeg stat.repairtime = Täieliku parandamise aeg
blocks.speedincrease = Kiiruse suurenemine stat.speedincrease = Kiiruse suurenemine
blocks.range = Ulatus stat.range = Ulatus
blocks.drilltier = Kaevandatav stat.drilltier = Kaevandatav
blocks.drillspeed = Puurimise kiirus stat.drillspeed = Puurimise kiirus
blocks.boosteffect = Kiirendaja mõju stat.boosteffect = Kiirendaja mõju
blocks.maxunits = Maks. aktiivseid väeüksuseid stat.maxunits = Maks. aktiivseid väeüksuseid
blocks.health = Elud stat.health = Elud
blocks.buildtime = Ehitamise aeg stat.buildtime = Ehitamise aeg
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Ehitamise maksumus stat.buildcost = Ehitamise maksumus
blocks.inaccuracy = Ebatäpsus stat.inaccuracy = Ebatäpsus
blocks.shots = Laske stat.shots = Laske
blocks.reload = Lasku/s stat.reload = Lasku/s
blocks.ammo = Laskemoon stat.ammo = Laskemoon
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Nõuab paremat puuri bar.drilltierreq = Nõuab paremat puuri
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Suur lendavate ja maapealsete väeüksuste vastane k
block.spectre.description = Massiivne kaheraudne kahur, mis tulistab soomuskatteid läbistavaid mürske nii lendavate kui ka maapealsete väeüksuste pihta. block.spectre.description = Massiivne kaheraudne kahur, mis tulistab soomuskatteid läbistavaid mürske nii lendavate kui ka maapealsete väeüksuste pihta.
block.meltdown.description = Massiivne laserkahur, mis tekitab püsiva energiakiire. Vajab töötamiseks jahutusvedelikku. block.meltdown.description = Massiivne laserkahur, mis tekitab püsiva energiakiire. Vajab töötamiseks jahutusvedelikku.
block.repair-point.description = Parandab kõige lähemal asuvat liitlaste väeüksust. block.repair-point.description = Parandab kõige lähemal asuvat liitlaste väeüksust.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Informazioa
error.title = [crimson]Errore bat gertatu da error.title = [crimson]Errore bat gertatu da
error.crashtitle = Errore bat gertatu da error.crashtitle = Errore bat gertatu da
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Sarrera stat.input = Sarrera
blocks.output = Irteera stat.output = Irteera
blocks.booster = Indargarria stat.booster = Indargarria
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Energia-edukiera stat.powercapacity = Energia-edukiera
blocks.powershot = Energia/tiroko stat.powershot = Energia/tiroko
blocks.damage = Kaltea stat.damage = Kaltea
blocks.targetsair = Airera tirokatzen du stat.targetsair = Airera tirokatzen du
blocks.targetsground = Lurrera tirokatzen du stat.targetsground = Lurrera tirokatzen du
blocks.itemsmoved = Garraio-abiadura stat.itemsmoved = Garraio-abiadura
blocks.launchtime = Egozketen arteko denbora stat.launchtime = Egozketen arteko denbora
blocks.shootrange = Irismena stat.shootrange = Irismena
blocks.size = Neurria stat.size = Neurria
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Likido-edukiera stat.liquidcapacity = Likido-edukiera
blocks.powerrange = Energia irismena stat.powerrange = Energia irismena
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Gehieneko konexioak stat.powerconnections = Gehieneko konexioak
blocks.poweruse = Energia-erabilera stat.poweruse = Energia-erabilera
blocks.powerdamage = Energia/Kaltea stat.powerdamage = Energia/Kaltea
blocks.itemcapacity = Elementu-edukiera stat.itemcapacity = Elementu-edukiera
blocks.basepowergeneration = Oinarrizko energia sorrera stat.basepowergeneration = Oinarrizko energia sorrera
blocks.productiontime = Eraikitze denbora stat.productiontime = Eraikitze denbora
blocks.repairtime = Blokearen konpontze denbora osoa stat.repairtime = Blokearen konpontze denbora osoa
blocks.speedincrease = Abiadura areagotzea stat.speedincrease = Abiadura areagotzea
blocks.range = Irismena stat.range = Irismena
blocks.drilltier = Ustiagarriak stat.drilltier = Ustiagarriak
blocks.drillspeed = Oinarrizko ustiatze-abiadura stat.drillspeed = Oinarrizko ustiatze-abiadura
blocks.boosteffect = Indartze-efektua stat.boosteffect = Indartze-efektua
blocks.maxunits = Gehieneko unitate aktiboak stat.maxunits = Gehieneko unitate aktiboak
blocks.health = Osasuna stat.health = Osasuna
blocks.buildtime = Eraikitze-denbora stat.buildtime = Eraikitze-denbora
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Eraikitze-kostua stat.buildcost = Eraikitze-kostua
blocks.inaccuracy = Zehazgabetasuna stat.inaccuracy = Zehazgabetasuna
blocks.shots = Tiroak stat.shots = Tiroak
blocks.reload = Tiroak/segundoko stat.reload = Tiroak/segundoko
blocks.ammo = Munizioa stat.ammo = Munizioa
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Zulagailu hobea behar da bar.drilltierreq = Zulagailu hobea behar da
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Aire zein lurreko defentsarako dorre handia. Torpedo
block.spectre.description = Kanoi bikoitz erraldoia. Blindajea zulatu dezaketen bala handiak tirokatzen ditu aireko zein lurreko xedeei. block.spectre.description = Kanoi bikoitz erraldoia. Blindajea zulatu dezaketen bala handiak tirokatzen ditu aireko zein lurreko xedeei.
block.meltdown.description = Laser kanoi erraldoia. Etengabeko laser izpi bat kargatu eta jauritzen die inguruko etsaiei. Hozgarria behar du jarduteko. block.meltdown.description = Laser kanoi erraldoia. Etengabeko laser izpi bat kargatu eta jauritzen die inguruko etsaiei. Hozgarria behar du jarduteko.
block.repair-point.description = Etengabe konpontzen du inguruko kaltetutako unitate hurbilena. block.repair-point.description = Etengabe konpontzen du inguruko kaltetutako unitate hurbilena.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Informaatio
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Sisääntulo stat.input = Sisääntulo
blocks.output = Ulostulo stat.output = Ulostulo
blocks.booster = Tehostaja stat.booster = Tehostaja
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Energiakapasiteetti stat.powercapacity = Energiakapasiteetti
blocks.powershot = Energiaa/Ammus stat.powershot = Energiaa/Ammus
blocks.damage = Vahinko stat.damage = Vahinko
blocks.targetsair = Hyökkää ilmaan stat.targetsair = Hyökkää ilmaan
blocks.targetsground = Hyökkää maahan stat.targetsground = Hyökkää maahan
blocks.itemsmoved = Liikkumisnopeus stat.itemsmoved = Liikkumisnopeus
blocks.launchtime = Aika laukaisujen välillä stat.launchtime = Aika laukaisujen välillä
blocks.shootrange = Kantama stat.shootrange = Kantama
blocks.size = Koko stat.size = Koko
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Nestekapasiteetti stat.liquidcapacity = Nestekapasiteetti
blocks.powerrange = Energiakantama stat.powerrange = Energiakantama
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Maksimimäärä yhdistyksiä stat.powerconnections = Maksimimäärä yhdistyksiä
blocks.poweruse = Energian käyttö stat.poweruse = Energian käyttö
blocks.powerdamage = Energia/Vahinko stat.powerdamage = Energia/Vahinko
blocks.itemcapacity = Tavarakapasiteetti stat.itemcapacity = Tavarakapasiteetti
blocks.basepowergeneration = Perus energiantuotto stat.basepowergeneration = Perus energiantuotto
blocks.productiontime = Tuotantoaika stat.productiontime = Tuotantoaika
blocks.repairtime = Kokonaisen palikan korjausaika stat.repairtime = Kokonaisen palikan korjausaika
blocks.speedincrease = Nopeuden kasvu stat.speedincrease = Nopeuden kasvu
blocks.range = Etäisyys stat.range = Etäisyys
blocks.drilltier = Porattavat stat.drilltier = Porattavat
blocks.drillspeed = Kanta Poran Nopeus stat.drillspeed = Kanta Poran Nopeus
blocks.boosteffect = Tehostamisem vaikutus stat.boosteffect = Tehostamisem vaikutus
blocks.maxunits = Maksimimäärä yksikköjä stat.maxunits = Maksimimäärä yksikköjä
blocks.health = Elämäpisteet stat.health = Elämäpisteet
blocks.buildtime = Rakentamisaika stat.buildtime = Rakentamisaika
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Rakentamishinta stat.buildcost = Rakentamishinta
blocks.inaccuracy = Epätarkkuus stat.inaccuracy = Epätarkkuus
blocks.shots = Ammusta stat.shots = Ammusta
blocks.reload = Ammusta/sekunnissa stat.reload = Ammusta/sekunnissa
blocks.ammo = Ammus stat.ammo = Ammus
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Parempi pora vaadittu bar.drilltierreq = Parempi pora vaadittu
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [scarlet]An error has occured error.title = [scarlet]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity stat.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.powershot = Power/Shot
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Targets Air stat.targetsair = Targets Air
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Range stat.shootrange = Range
blocks.size = Size stat.size = Size
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Liquid Capacity stat.liquidcapacity = Liquid Capacity
blocks.powerrange = Power Range stat.powerrange = Power Range
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Power Use stat.poweruse = Power Use
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity stat.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Drillables stat.drilltier = Drillables
blocks.drillspeed = Base Drill Speed stat.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Health stat.health = Health
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = Inaccuracy stat.inaccuracy = Inaccuracy
blocks.shots = Shots stat.shots = Shots
blocks.reload = Shots/Second stat.reload = Shots/Second
blocks.ammo = Ammo stat.ammo = Ammo
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]Une erreur s'est produite error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite error.crashtitle = Une erreur s'est produite
unit.nobuild = [scarlet]Cette unité ne peut construire unit.nobuild = [scarlet]Cette unité ne peut construire
blocks.input = Entrée stat.input = Entrée
blocks.output = Sortie stat.output = Sortie
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Pré-requis stat.tiles = Pré-requis
blocks.affinities = Affinités stat.affinities = Affinités
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacité d'énergie stat.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir stat.powershot = Énergie/Tir
blocks.damage = Dégâts stat.damage = Dégâts
blocks.targetsair = Cibles Aériennes stat.targetsair = Cibles Aériennes
blocks.targetsground = Cibles Terrestres stat.targetsground = Cibles Terrestres
blocks.itemsmoved = Vitesse de Déplacement stat.itemsmoved = Vitesse de Déplacement
blocks.launchtime = Temps entre chaque lancement stat.launchtime = Temps entre chaque lancement
blocks.shootrange = Portée de tir stat.shootrange = Portée de tir
blocks.size = Taille stat.size = Taille
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacité liquide stat.liquidcapacity = Capacité liquide
blocks.powerrange = Portée électrique stat.powerrange = Portée électrique
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Nombre maximal de connections stat.powerconnections = Nombre maximal de connections
blocks.poweruse = Énergie utilisée stat.poweruse = Énergie utilisée
blocks.powerdamage = Dégâts d'énergie stat.powerdamage = Dégâts d'énergie
blocks.itemcapacity = Stockage stat.itemcapacity = Stockage
blocks.basepowergeneration = Production d'énergie stat.basepowergeneration = Production d'énergie
blocks.productiontime = Durée de production stat.productiontime = Durée de production
blocks.repairtime = Durée de réparation complète du Bloc stat.repairtime = Durée de réparation complète du Bloc
blocks.speedincrease = Accélération stat.speedincrease = Accélération
blocks.range = Portée stat.range = Portée
blocks.drilltier = Forable stat.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base stat.drillspeed = Vitesse de forage de base
blocks.boosteffect = Effet du Boost stat.boosteffect = Effet du Boost
blocks.maxunits = Unités actives max stat.maxunits = Unités actives max
blocks.health = Santé stat.health = Santé
blocks.buildtime = Durée de construction stat.buildtime = Durée de construction
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Coût de construction stat.buildcost = Coût de construction
blocks.inaccuracy = Imprécision stat.inaccuracy = Imprécision
blocks.shots = Tirs stat.shots = Tirs
blocks.reload = Tirs/Seconde stat.reload = Tirs/Seconde
blocks.ammo = Munitions stat.ammo = Munitions
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Meilleure Foreuse Requise bar.drilltierreq = Meilleure Foreuse Requise
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Une grande tourelle qui tire rapidement des débris
block.spectre.description = Une tourelle massive à double cannon et qui tire de puissantes balles perce-blindages simultanément. block.spectre.description = Une tourelle massive à double cannon et qui tire de puissantes balles perce-blindages simultanément.
block.meltdown.description = Une tourelle massive chargeant et tirant de puissants rayons lasers. Nécessite un liquide de refroidissement. block.meltdown.description = Une tourelle massive chargeant et tirant de puissants rayons lasers. Nécessite un liquide de refroidissement.
block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité. block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité.
block.segment.description = Endommage et détruit les tirs ennemis. Cependant, les lasers ne peuvent pas être ciblés. block.segment.description = Endommage et détruit les tirs ennemis. Cependant, les lasers ne peuvent pas être ciblés.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]Une erreur s'est produite error.title = [crimson]Une erreur s'est produite
error.crashtitle = Une erreur s'est produite error.crashtitle = Une erreur s'est produite
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Ressource(s) requise(s) stat.input = Ressource(s) requise(s)
blocks.output = Ressource(s) produite(s) stat.output = Ressource(s) produite(s)
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]Inconnu block.unknown = [lightgray]Inconnu
blocks.powercapacity = Capacité d'énergie stat.powercapacity = Capacité d'énergie
blocks.powershot = Énergie/Tir stat.powershot = Énergie/Tir
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Cible les unités aériennes stat.targetsair = Cible les unités aériennes
blocks.targetsground = Cible les unités terrestres stat.targetsground = Cible les unités terrestres
blocks.itemsmoved = Vitesse de déplacement stat.itemsmoved = Vitesse de déplacement
blocks.launchtime = Temps entre chaque lancement stat.launchtime = Temps entre chaque lancement
blocks.shootrange = Portée stat.shootrange = Portée
blocks.size = Taille stat.size = Taille
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacité en liquide stat.liquidcapacity = Capacité en liquide
blocks.powerrange = Distance de transmission stat.powerrange = Distance de transmission
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Énergie utilisée stat.poweruse = Énergie utilisée
blocks.powerdamage = Énergie/Dégâts stat.powerdamage = Énergie/Dégâts
blocks.itemcapacity = Stockage stat.itemcapacity = Stockage
blocks.basepowergeneration = Production d'énergie de base stat.basepowergeneration = Production d'énergie de base
blocks.productiontime = Temps de production stat.productiontime = Temps de production
blocks.repairtime = Temps pour la réparation totale du bloc stat.repairtime = Temps pour la réparation totale du bloc
blocks.speedincrease = Augmentation de la vitesse stat.speedincrease = Augmentation de la vitesse
blocks.range = Portée stat.range = Portée
blocks.drilltier = Forable stat.drilltier = Forable
blocks.drillspeed = Vitesse de forage de base stat.drillspeed = Vitesse de forage de base
blocks.boosteffect = Effet boostant stat.boosteffect = Effet boostant
blocks.maxunits = Maximum d'unitée active stat.maxunits = Maximum d'unitée active
blocks.health = Santé stat.health = Santé
blocks.buildtime = Temps de construction stat.buildtime = Temps de construction
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Coût de construction stat.buildcost = Coût de construction
blocks.inaccuracy = Précision stat.inaccuracy = Précision
blocks.shots = Tirs stat.shots = Tirs
blocks.reload = Tirs/Seconde stat.reload = Tirs/Seconde
blocks.ammo = Munition stat.ammo = Munition
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Une grande tourelle à tir rapide.
block.spectre.description = Une grande tourelle qui tire deux balles puissantes à la fois. block.spectre.description = Une grande tourelle qui tire deux balles puissantes à la fois.
block.meltdown.description = Une grande tourelle qui tire de puissants faisceaux à longue portée. block.meltdown.description = Une grande tourelle qui tire de puissants faisceaux à longue portée.
block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité. block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity stat.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.powershot = Power/Shot
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Targets Air stat.targetsair = Targets Air
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Range stat.shootrange = Range
blocks.size = Size stat.size = Size
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Liquid Capacity stat.liquidcapacity = Liquid Capacity
blocks.powerrange = Power Range stat.powerrange = Power Range
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Power Use stat.poweruse = Power Use
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity stat.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Drillables stat.drilltier = Drillables
blocks.drillspeed = Base Drill Speed stat.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Health stat.health = Health
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = Inaccuracy stat.inaccuracy = Inaccuracy
blocks.shots = Shots stat.shots = Shots
blocks.reload = Shots/Second stat.reload = Shots/Second
blocks.ammo = Ammo stat.ammo = Ammo
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -512,6 +512,7 @@ weather.rain.name = Hujan
weather.snow.name = Salju weather.snow.name = Salju
weather.sandstorm.name = Badai Pasir weather.sandstorm.name = Badai Pasir
weather.sporestorm.name = Badai Spora weather.sporestorm.name = Badai Spora
weather.fog.name = Kabut
sectors.unexplored = [lightgray]Belum Ditelusuri sectors.unexplored = [lightgray]Belum Ditelusuri
sectors.resources = Sumber Daya: sectors.resources = Sumber Daya:
@@ -581,50 +582,61 @@ error.title = [crimson]Sebuah kesalahan telah terjadi
error.crashtitle = Sebuah kesalahan telah terjadi error.crashtitle = Sebuah kesalahan telah terjadi
unit.nobuild = [scarlet]Unit tidak dapat membangun unit.nobuild = [scarlet]Unit tidak dapat membangun
lastaccessed = [lightgray]Terakhir Diakses: {0} lastaccessed = [lightgray]Terakhir Diakses: {0}
blocks.input = Masukan
blocks.output = Pengeluaran
blocks.booster = Pendorong
blocks.tiles = Kotak yang dibutuhkan
blocks.affinities = Afinitas
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Kapasitas Tenaga
blocks.powershot = Tenaga/Tembakan stat.input = Masukan
blocks.damage = Kerusakan stat.output = Pengeluaran
blocks.targetsair = Menargetkan Udara stat.booster = Pendorong
blocks.targetsground = Menargetkan Darat stat.tiles = Kotak yang dibutuhkan
blocks.itemsmoved = Kecepatan Gerak stat.affinities = Afinitas
blocks.launchtime = Waktu Diantara Peluncuran stat.powercapacity = Kapasitas Tenaga
blocks.shootrange = Jarak stat.powershot = Tenaga/Tembakan
blocks.size = Ukuran stat.damage = Kerusakan
blocks.displaysize = Ukuran Tampilan stat.targetsair = Menargetkan Udara
blocks.liquidcapacity = Kapasitas Zat Cair stat.targetsground = Menargetkan Darat
blocks.powerrange = Jarak Tenaga stat.itemsmoved = Kecepatan Gerak
blocks.linkrange = Jarak Tautan stat.launchtime = Waktu Diantara Peluncuran
blocks.instructions = Instruksi stat.shootrange = Jarak
blocks.powerconnections = Koneksi Maksimal stat.size = Ukuran
blocks.poweruse = Penggunaan Tenaga stat.displaysize = Ukuran Tampilan
blocks.powerdamage = Tenaga/Pukulan stat.liquidcapacity = Kapasitas Zat Cair
blocks.itemcapacity = Kapasitas Item stat.powerrange = Jarak Tenaga
blocks.memorycapacity = Kapasitas Memori stat.linkrange = Jarak Tautan
blocks.basepowergeneration = Basis Generasi Tenaga stat.instructions = Instruksi
blocks.productiontime = Waktu Produksi stat.powerconnections = Koneksi Maksimal
blocks.repairtime = Waktu Memperbaiki Blok Penuh stat.poweruse = Penggunaan Tenaga
blocks.speedincrease = Tambahan Kecepatan stat.powerdamage = Tenaga/Pukulan
blocks.range = Jarak stat.itemcapacity = Kapasitas Item
blocks.drilltier = Sumber Daya yang Bisa di Bor stat.memorycapacity = Kapasitas Memori
blocks.drillspeed = Basis Kecepatan Bor stat.basepowergeneration = Basis Generasi Tenaga
blocks.boosteffect = Efek Pendorong stat.productiontime = Waktu Produksi
blocks.maxunits = Maks Unit Aktif stat.repairtime = Waktu Memperbaiki Blok Penuh
blocks.health = Darah stat.speedincrease = Tambahan Kecepatan
blocks.buildtime = Waktu Pembuatan stat.range = Jarak
blocks.maxconsecutive = Max Consecutive stat.drilltier = Sumber Daya yang Bisa di Bor
blocks.buildcost = Biaya Bangunan stat.drillspeed = Basis Kecepatan Bor
blocks.inaccuracy = Jarak Melenceng stat.boosteffect = Efek Pendorong
blocks.shots = Tembakan stat.maxunits = Maks Unit Aktif
blocks.reload = Tembakan/Detik stat.health = Darah
blocks.ammo = Amunisi stat.buildtime = Waktu Pembuatan
blocks.shieldhealth = Darah Perisai stat.maxconsecutive = Max Consecutive
blocks.cooldowntime = Cooldown Time stat.buildcost = Biaya Bangunan
stat.inaccuracy = Jarak Melenceng
stat.shots = Tembakan
stat.reload = Tembakan/Detik
stat.ammo = Amunisi
stat.shieldhealth = Darah Perisai
stat.cooldowntime = Cooldown Time
stat.explosiveness = Explosiveness
stat.flammability = Flammability
stat.radioactivity = Radioactivity
stat.heatcapacity = HeatCapacity
stat.viscosity = Viscosity
stat.temperature = Temperature
stat.speed = Speed
stat.buildspeed = Build Speed
stat.minespeed = Mine Speed
stat.minetier = Mine Tier
bar.drilltierreq = Membutuhkan Bor yang Lebih Baik bar.drilltierreq = Membutuhkan Bor yang Lebih Baik
bar.noresources = Sumber Daya Tidak Ditemukan bar.noresources = Sumber Daya Tidak Ditemukan
@@ -875,6 +887,7 @@ content.item.name = Item
content.liquid.name = Zat Cair content.liquid.name = Zat Cair
content.unit.name = Unit content.unit.name = Unit
content.block.name = Blok content.block.name = Blok
item.copper.name = Tembaga item.copper.name = Tembaga
item.lead.name = Timah item.lead.name = Timah
item.coal.name = Batu Bara item.coal.name = Batu Bara
@@ -896,23 +909,6 @@ liquid.slag.name = Terak
liquid.oil.name = Minyak liquid.oil.name = Minyak
liquid.cryofluid.name = Cairan Pendingin liquid.cryofluid.name = Cairan Pendingin
item.explosiveness = [lightgray]Tingkat Keledakan: {0}%
item.flammability = [lightgray]Tingkat Kebakaran: {0}%
item.radioactivity = [lightgray]Tingkat Radioaktif: {0}%
unit.health = [lightgray]Darah: {0}
unit.speed = [lightgray]Kecepatan: {0}
unit.weapon = [lightgray]Senjata: {0}
unit.itemcapacity = [lightgray]Kapasitas Item: {0}
unit.minespeed = [lightgray]Kecepatan Menambang: {0}%
unit.minepower = [lightgray]Kekuatan Menambang: {0}
unit.ability = [lightgray]Kemampuan: {0}
unit.buildspeed = [lightgray]Kecepatan Membangun: {0}%
liquid.heatcapacity = [lightgray]Kapasitas Panas: {0}
liquid.viscosity = [lightgray]Kelekatan: {0}
liquid.temperature = [lightgray]Suhu: {0}
unit.dagger.name = Dagger unit.dagger.name = Dagger
unit.mace.name = Mace unit.mace.name = Mace
unit.fortress.name = Fortress unit.fortress.name = Fortress
@@ -949,18 +945,18 @@ unit.corvus.name = Corvus
block.resupply-point.name = Titik Pemasok Ulang block.resupply-point.name = Titik Pemasok Ulang
block.parallax.name = Parallax block.parallax.name = Parallax
block.cliff.name = Jurang block.cliff.name = Cliff
block.sand-boulder.name = Batu Pasir Besar block.sand-boulder.name = Batu Pasir Besar
block.grass.name = Rumput block.grass.name = Rumput
block.slag.name = Slag block.slag.name = Slag
block.space.name = Ruang Angkasa block.space.name = Luar Angkasa
block.salt.name = Garam block.salt.name = Garam
block.salt-wall.name = Dinding Garam block.salt-wall.name = Bukit Garam
block.pebbles.name = Kerikil block.pebbles.name = Kerikil
block.tendrils.name = Sulur block.tendrils.name = Sulur
block.sand-wall.name = Dinding Pasir block.sand-wall.name = Bukit Pasir
block.spore-pine.name = Cemara Spora block.spore-pine.name = Cemara Spora
block.spore-wall.name = Dinding Spora block.spore-wall.name = Bukit Spora
block.boulder.name = Batu Besar block.boulder.name = Batu Besar
block.snow-boulder.name = Batu Salju Besar block.snow-boulder.name = Batu Salju Besar
block.snow-pine.name = Pinus Salju block.snow-pine.name = Pinus Salju
@@ -969,7 +965,7 @@ block.shale-boulder.name = Serpihan Batu Besar
block.moss.name = Lumut block.moss.name = Lumut
block.shrubs.name = Semak-Semak block.shrubs.name = Semak-Semak
block.spore-moss.name = Lumut Spora block.spore-moss.name = Lumut Spora
block.shale-wall.name = Dinding Serpih block.shale-wall.name = Bukit Serpih
block.scrap-wall.name = Dinding Kepingan block.scrap-wall.name = Dinding Kepingan
block.scrap-wall-large.name = Dinding Kepingan Besar 1 block.scrap-wall-large.name = Dinding Kepingan Besar 1
block.scrap-wall-huge.name = Dinding Kepingan Besar 2 block.scrap-wall-huge.name = Dinding Kepingan Besar 2
@@ -1324,4 +1320,4 @@ block.cyclone.description = Menara penembak beruntun besar.
block.spectre.description = Menara besar yang menembak dua peluru kuat sekaligus. block.spectre.description = Menara besar yang menembak dua peluru kuat sekaligus.
block.meltdown.description = Menara besar ini menembak sinar panjang yang kuat. block.meltdown.description = Menara besar ini menembak sinar panjang yang kuat.
block.repair-point.description = Terus menerus memulihkan unit terluka disekitar. block.repair-point.description = Terus menerus memulihkan unit terluka disekitar.
block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak akan ditargetkan. block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak akan ditargetkan.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]Si è verificato un errore error.title = [crimson]Si è verificato un errore
error.crashtitle = Si è verificato un errore error.crashtitle = Si è verificato un errore
unit.nobuild = [scarlet]L'unità non può costruire unit.nobuild = [scarlet]L'unità non può costruire
blocks.input = Ingresso stat.input = Ingresso
blocks.output = Uscita stat.output = Uscita
blocks.booster = Potenziamenti stat.booster = Potenziamenti
blocks.tiles = Blocchi Richiesti stat.tiles = Blocchi Richiesti
blocks.affinities = Affinità stat.affinities = Affinità
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacità Energetica stat.powercapacity = Capacità Energetica
blocks.powershot = Danno/Colpo stat.powershot = Danno/Colpo
blocks.damage = Danno stat.damage = Danno
blocks.targetsair = Attacca Nemici Aerei stat.targetsair = Attacca Nemici Aerei
blocks.targetsground = Attacca Nemici Terreni stat.targetsground = Attacca Nemici Terreni
blocks.itemsmoved = Velocità di Movimento stat.itemsmoved = Velocità di Movimento
blocks.launchtime = Tempo fra Decolli stat.launchtime = Tempo fra Decolli
blocks.shootrange = Raggio stat.shootrange = Raggio
blocks.size = Dimensioni stat.size = Dimensioni
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacità del Liquido stat.liquidcapacity = Capacità del Liquido
blocks.powerrange = Raggio Energia stat.powerrange = Raggio Energia
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Connessioni Massime stat.powerconnections = Connessioni Massime
blocks.poweruse = Utilizzo Energia stat.poweruse = Utilizzo Energia
blocks.powerdamage = Energia/Danno stat.powerdamage = Energia/Danno
blocks.itemcapacity = Capacità stat.itemcapacity = Capacità
blocks.basepowergeneration = Generazione Energia di Base stat.basepowergeneration = Generazione Energia di Base
blocks.productiontime = Tempo di Produzione stat.productiontime = Tempo di Produzione
blocks.repairtime = Tempo di Riparazione Completa stat.repairtime = Tempo di Riparazione Completa
blocks.speedincrease = Aumento Velocità stat.speedincrease = Aumento Velocità
blocks.range = Raggio stat.range = Raggio
blocks.drilltier = Scavabili stat.drilltier = Scavabili
blocks.drillspeed = Velocità di Scavo Stabile stat.drillspeed = Velocità di Scavo Stabile
blocks.boosteffect = Effetto Boost stat.boosteffect = Effetto Boost
blocks.maxunits = Unità Attive Max stat.maxunits = Unità Attive Max
blocks.health = Salute stat.health = Salute
blocks.buildtime = Tempo di Costruzione stat.buildtime = Tempo di Costruzione
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Costo di Costruzione stat.buildcost = Costo di Costruzione
blocks.inaccuracy = Inaccuratezza stat.inaccuracy = Inaccuratezza
blocks.shots = Colpi stat.shots = Colpi
blocks.reload = Ricarica stat.reload = Ricarica
blocks.ammo = Munizioni stat.ammo = Munizioni
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Miglior Trivella Richiesta bar.drilltierreq = Miglior Trivella Richiesta
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Una grande torretta a fuoco rapido.
block.spectre.description = Una grande torretta che spara due potenti proiettili contemporaneamente. block.spectre.description = Una grande torretta che spara due potenti proiettili contemporaneamente.
block.meltdown.description = Una grande torretta che spara un potente laser a lungo raggio. block.meltdown.description = Una grande torretta che spara un potente laser a lungo raggio.
block.repair-point.description = Cura continuamente l'unità danneggiata più vicina. block.repair-point.description = Cura continuamente l'unità danneggiata più vicina.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = 情報
error.title = [crimson]エラーが発生しました error.title = [crimson]エラーが発生しました
error.crashtitle = エラーが発生しました error.crashtitle = エラーが発生しました
unit.nobuild = [scarlet]ユニットを構築できません unit.nobuild = [scarlet]ユニットを構築できません
blocks.input = 搬入 stat.input = 搬入
blocks.output = 搬出 stat.output = 搬出
blocks.booster = ブースト stat.booster = ブースト
blocks.tiles = 必要なタイル stat.tiles = 必要なタイル
blocks.affinities = 親和性 stat.affinities = 親和性
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = 電力容量 stat.powercapacity = 電力容量
blocks.powershot = 電力/ショット stat.powershot = 電力/ショット
blocks.damage = ダメージ stat.damage = ダメージ
blocks.targetsair = 対空攻撃 stat.targetsair = 対空攻撃
blocks.targetsground = 対地攻撃 stat.targetsground = 対地攻撃
blocks.itemsmoved = 輸送速度 stat.itemsmoved = 輸送速度
blocks.launchtime = 発射の待機時間 stat.launchtime = 発射の待機時間
blocks.shootrange = 範囲 stat.shootrange = 範囲
blocks.size = 大きさ stat.size = 大きさ
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = 液体容量 stat.liquidcapacity = 液体容量
blocks.powerrange = 電力範囲 stat.powerrange = 電力範囲
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = 最大接続数 stat.powerconnections = 最大接続数
blocks.poweruse = 電力使用量 stat.poweruse = 電力使用量
blocks.powerdamage = 電力/ダメージ stat.powerdamage = 電力/ダメージ
blocks.itemcapacity = アイテム容量 stat.itemcapacity = アイテム容量
blocks.basepowergeneration = 基本発電量 stat.basepowergeneration = 基本発電量
blocks.productiontime = 製造速度 stat.productiontime = 製造速度
blocks.repairtime = ブロックの完全修復速度 stat.repairtime = ブロックの完全修復速度
blocks.speedincrease = 速度向上 stat.speedincrease = 速度向上
blocks.range = 範囲 stat.range = 範囲
blocks.drilltier = ドリル stat.drilltier = ドリル
blocks.drillspeed = 基本採掘速度 stat.drillspeed = 基本採掘速度
blocks.boosteffect = ブースト効果 stat.boosteffect = ブースト効果
blocks.maxunits = 最大ユニット数 stat.maxunits = 最大ユニット数
blocks.health = 耐久値 stat.health = 耐久値
blocks.buildtime = 建設時間 stat.buildtime = 建設時間
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = 建設費用 stat.buildcost = 建設費用
blocks.inaccuracy = 誤差 stat.inaccuracy = 誤差
blocks.shots = ショット stat.shots = ショット
blocks.reload = リロード速度 stat.reload = リロード速度
blocks.ammo = 弾薬 stat.ammo = 弾薬
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = より高性能なドリルを使用してください bar.drilltierreq = より高性能なドリルを使用してください
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = 大型の連射型ターレットです。
block.spectre.description = 一度に2発の強力な弾を放つ大型のターレットです。 block.spectre.description = 一度に2発の強力な弾を放つ大型のターレットです。
block.meltdown.description = 強力な長距離攻撃が可能な大型のターレットです。 block.meltdown.description = 強力な長距離攻撃が可能な大型のターレットです。
block.repair-point.description = 近くの負傷したユニットを修復します。 block.repair-point.description = 近くの負傷したユニットを修復します。
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = 정보
error.title = [scarlet]오류가 발생했습니다. error.title = [scarlet]오류가 발생했습니다.
error.crashtitle = 오류가 발생했습니다 error.crashtitle = 오류가 발생했습니다
unit.nobuild = [scarlet]이 유닛은 건설할 수 없습니다. unit.nobuild = [scarlet]이 유닛은 건설할 수 없습니다.
blocks.input = 입력 stat.input = 입력
blocks.output = 출력 stat.output = 출력
blocks.booster = 가속 stat.booster = 가속
blocks.tiles = 필요한 타일 stat.tiles = 필요한 타일
blocks.affinities = 친화력 stat.affinities = 친화력
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = 전력 용량 stat.powercapacity = 전력 용량
blocks.powershot = 전력/발 stat.powershot = 전력/발
blocks.damage = 공격력 stat.damage = 공격력
blocks.targetsair = 공중 공격 stat.targetsair = 공중 공격
blocks.targetsground = 지상 공격 stat.targetsground = 지상 공격
blocks.itemsmoved = 이동 속도 stat.itemsmoved = 이동 속도
blocks.launchtime = 출격 간격 stat.launchtime = 출격 간격
blocks.shootrange = 사거리 stat.shootrange = 사거리
blocks.size = 크기 stat.size = 크기
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = 액체 용량 stat.liquidcapacity = 액체 용량
blocks.powerrange = 전력 범위 stat.powerrange = 전력 범위
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = 최대 연결 수 stat.powerconnections = 최대 연결 수
blocks.poweruse = 전력 사용 stat.poweruse = 전력 사용
blocks.powerdamage = 전력/데미지 stat.powerdamage = 전력/데미지
blocks.itemcapacity = 저장 용량 stat.itemcapacity = 저장 용량
blocks.basepowergeneration = 기본 전력 생성량 stat.basepowergeneration = 기본 전력 생성량
blocks.productiontime = 제작 시간 stat.productiontime = 제작 시간
blocks.repairtime = 전체 블록 수리시간 stat.repairtime = 전체 블록 수리시간
blocks.speedincrease = 속도 증가 stat.speedincrease = 속도 증가
blocks.range = 사거리 stat.range = 사거리
blocks.drilltier = 드릴 stat.drilltier = 드릴
blocks.drillspeed = 기본 드릴 속도 stat.drillspeed = 기본 드릴 속도
blocks.boosteffect = 가속 효과 stat.boosteffect = 가속 효과
blocks.maxunits = 최대 활성 유닛수 stat.maxunits = 최대 활성 유닛수
blocks.health = 체력 stat.health = 체력
blocks.buildtime = 건설 시간 stat.buildtime = 건설 시간
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = 건설 재료 stat.buildcost = 건설 재료
blocks.inaccuracy = 오차각 stat.inaccuracy = 오차각
blocks.shots = 공격 속도 stat.shots = 공격 속도
blocks.reload = 발/초 stat.reload = 발/초
blocks.ammo = 탄약 stat.ammo = 탄약
blocks.shieldhealth = 보호막 체력 stat.shieldhealth = 보호막 체력
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = 더 좋은 드릴이 필요 bar.drilltierreq = 더 좋은 드릴이 필요
bar.noresources = 자원 부족 bar.noresources = 자원 부족
@@ -1302,4 +1302,4 @@ block.cyclone.description = 대공 및 대지 포탑. 근처 유닛에게 폭발
block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다. block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이버 빔을 충전하여 발사합니다. 냉각수가 있어야 작동합니다. block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이버 빔을 충전하여 발사합니다. 냉각수가 있어야 작동합니다.
block.repair-point.description = 주변에서 가장 가까운 유닛을 지속적으로 치료합니다. block.repair-point.description = 주변에서 가장 가까운 유닛을 지속적으로 치료합니다.
block.segment.description = 날아오는 발사체를 요격합니다. 레이저는 목표 대상이 아닙니다. block.segment.description = 날아오는 발사체를 요격합니다. 레이저는 목표 대상이 아닙니다.

View File

@@ -570,49 +570,49 @@ info.title = Informacija
error.title = [crimson]Įvyko klaida error.title = [crimson]Įvyko klaida
error.crashtitle = Įvyko klaida error.crashtitle = Įvyko klaida
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Įeiga stat.input = Įeiga
blocks.output = Išeiga stat.output = Išeiga
blocks.booster = Stiprintuvas stat.booster = Stiprintuvas
blocks.tiles = Privalomi stat.tiles = Privalomi
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Energijos Talpumas stat.powercapacity = Energijos Talpumas
blocks.powershot = Energija per šūvį stat.powershot = Energija per šūvį
blocks.damage = Žala stat.damage = Žala
blocks.targetsair = Šaudo į oro taikinius stat.targetsair = Šaudo į oro taikinius
blocks.targetsground = Šaudo į žemės taikinius stat.targetsground = Šaudo į žemės taikinius
blocks.itemsmoved = Judėjimo Greitis stat.itemsmoved = Judėjimo Greitis
blocks.launchtime = Laikas Tarp Paleidimų stat.launchtime = Laikas Tarp Paleidimų
blocks.shootrange = Atstumas stat.shootrange = Atstumas
blocks.size = Dydis stat.size = Dydis
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Skysčių Talpumas stat.liquidcapacity = Skysčių Talpumas
blocks.powerrange = Energijos Skleidimo Atstumas stat.powerrange = Energijos Skleidimo Atstumas
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Maks. Jungčių Kiekis stat.powerconnections = Maks. Jungčių Kiekis
blocks.poweruse = Energijos Suvartojimas stat.poweruse = Energijos Suvartojimas
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Daiktų Talpumas stat.itemcapacity = Daiktų Talpumas
blocks.basepowergeneration = Bazinis Energijos Generavimas stat.basepowergeneration = Bazinis Energijos Generavimas
blocks.productiontime = Gamybos Laikas stat.productiontime = Gamybos Laikas
blocks.repairtime = Pilnas bloko sutaisymo laikas stat.repairtime = Pilnas bloko sutaisymo laikas
blocks.speedincrease = Greičio Padidėjimas stat.speedincrease = Greičio Padidėjimas
blocks.range = Atstumas stat.range = Atstumas
blocks.drilltier = Gręžiama stat.drilltier = Gręžiama
blocks.drillspeed = Bazinis Grąžto Greitis stat.drillspeed = Bazinis Grąžto Greitis
blocks.boosteffect = Pastiprinimo Efektas stat.boosteffect = Pastiprinimo Efektas
blocks.maxunits = Maks. Aktyvių Vienetų Kiekis stat.maxunits = Maks. Aktyvių Vienetų Kiekis
blocks.health = Gyvybės stat.health = Gyvybės
blocks.buildtime = Statymo Laikas stat.buildtime = Statymo Laikas
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Statymo Kaina stat.buildcost = Statymo Kaina
blocks.inaccuracy = Netikslumas stat.inaccuracy = Netikslumas
blocks.shots = Šūviai stat.shots = Šūviai
blocks.reload = Šūviai per sekundę stat.reload = Šūviai per sekundę
blocks.ammo = Šoviniai stat.ammo = Šoviniai
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Privalomas Geresnis Grąžtas bar.drilltierreq = Privalomas Geresnis Grąžtas
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Didelis bokštas puolantis, tiek žemę, tiek orą.
block.spectre.description = Milžiniškas dvivamzdis bokštas. Šaudo didelius, kiaurai per šarvus einančius šovinius į taikinius esančius ant žemės ir ore. block.spectre.description = Milžiniškas dvivamzdis bokštas. Šaudo didelius, kiaurai per šarvus einančius šovinius į taikinius esančius ant žemės ir ore.
block.meltdown.description = Milžiniška lazerinė patranka. Užsikrauna ir šaudo lazerinius spindulius į aplinkinius priešus. Veikimui reikalingas aušinimo skystis. block.meltdown.description = Milžiniška lazerinė patranka. Užsikrauna ir šaudo lazerinius spindulius į aplinkinius priešus. Veikimui reikalingas aušinimo skystis.
block.repair-point.description = Pastoviai gydo artimiausius netoliese esančius vienetus. block.repair-point.description = Pastoviai gydo artimiausius netoliese esančius vienetus.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Informatie
error.title = [crimson]Een fout is opgetreden error.title = [crimson]Een fout is opgetreden
error.crashtitle = Een fout is opgetreden error.crashtitle = Een fout is opgetreden
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Stroomcapaciteit stat.powercapacity = Stroomcapaciteit
blocks.powershot = Stroom/Schot stat.powershot = Stroom/Schot
blocks.damage = Schade stat.damage = Schade
blocks.targetsair = Luchtdoelwitten stat.targetsair = Luchtdoelwitten
blocks.targetsground = Gronddoelwitten stat.targetsground = Gronddoelwitten
blocks.itemsmoved = Beweegingssnelheid stat.itemsmoved = Beweegingssnelheid
blocks.launchtime = Tijd tussen lanceringen stat.launchtime = Tijd tussen lanceringen
blocks.shootrange = Bereik stat.shootrange = Bereik
blocks.size = Formaat stat.size = Formaat
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Vloeistofcapaciteit stat.liquidcapacity = Vloeistofcapaciteit
blocks.powerrange = Stroombereik stat.powerrange = Stroombereik
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Maximale Hoeveelheid Connecties stat.powerconnections = Maximale Hoeveelheid Connecties
blocks.poweruse = Stroomverbruik stat.poweruse = Stroomverbruik
blocks.powerdamage = Stroom/Schade stat.powerdamage = Stroom/Schade
blocks.itemcapacity = Materiaalcapaciteit stat.itemcapacity = Materiaalcapaciteit
blocks.basepowergeneration = Standaard Stroom Generatie stat.basepowergeneration = Standaard Stroom Generatie
blocks.productiontime = Productie Tijd stat.productiontime = Productie Tijd
blocks.repairtime = Volledige Blok Repareertijd stat.repairtime = Volledige Blok Repareertijd
blocks.speedincrease = Snelheidsverhoging stat.speedincrease = Snelheidsverhoging
blocks.range = Bereik stat.range = Bereik
blocks.drilltier = Valt te delven stat.drilltier = Valt te delven
blocks.drillspeed = Standaard mine snelheid stat.drillspeed = Standaard mine snelheid
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Maximaal Actieve Units stat.maxunits = Maximaal Actieve Units
blocks.health = Levenspunten stat.health = Levenspunten
blocks.buildtime = Bouwtijd stat.buildtime = Bouwtijd
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Bouwkosten stat.buildcost = Bouwkosten
blocks.inaccuracy = Onnauwkeurigheid stat.inaccuracy = Onnauwkeurigheid
blocks.shots = Shoten stat.shots = Shoten
blocks.reload = Schoten/Seconde stat.reload = Schoten/Seconde
blocks.ammo = Ammunitie stat.ammo = Ammunitie
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Betere miner nodig bar.drilltierreq = Betere miner nodig
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large rapid fire turret.
block.spectre.description = A large turret which shoots two powerful bullets at once. block.spectre.description = A large turret which shoots two powerful bullets at once.
block.meltdown.description = A large turret which shoots powerful long-range beams. block.meltdown.description = A large turret which shoots powerful long-range beams.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity stat.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.powershot = Power/Shot
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Targets Air stat.targetsair = Targets Air
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Range stat.shootrange = Range
blocks.size = Size stat.size = Size
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Liquid Capacity stat.liquidcapacity = Liquid Capacity
blocks.powerrange = Power Range stat.powerrange = Power Range
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Power Use stat.poweruse = Power Use
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity stat.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Drillables stat.drilltier = Drillables
blocks.drillspeed = Base Drill Speed stat.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Health stat.health = Health
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = Inaccuracy stat.inaccuracy = Inaccuracy
blocks.shots = Shots stat.shots = Shots
blocks.reload = Shots/Second stat.reload = Shots/Second
blocks.ammo = Ammo stat.ammo = Ammo
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large rapid fire turret.
block.spectre.description = A large turret which shoots two powerful bullets at once. block.spectre.description = A large turret which shoots two powerful bullets at once.
block.meltdown.description = A large turret which shoots powerful long-range beams. block.meltdown.description = A large turret which shoots powerful long-range beams.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Informacje
error.title = [crimson]Wystąpił błąd error.title = [crimson]Wystąpił błąd
error.crashtitle = Wystąpił błąd error.crashtitle = Wystąpił błąd
unit.nobuild = [scarlet]Jednostka nie może budować unit.nobuild = [scarlet]Jednostka nie może budować
blocks.input = Wejście stat.input = Wejście
blocks.output = Wyjście stat.output = Wyjście
blocks.booster = Wzmacniacz stat.booster = Wzmacniacz
blocks.tiles = Wymagane Pola stat.tiles = Wymagane Pola
blocks.affinities = Uwydajnienie stat.affinities = Uwydajnienie
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Pojemność mocy stat.powercapacity = Pojemność mocy
blocks.powershot = moc/strzał stat.powershot = moc/strzał
blocks.damage = Obrażenia stat.damage = Obrażenia
blocks.targetsair = Namierzanie wrogów powietrznych stat.targetsair = Namierzanie wrogów powietrznych
blocks.targetsground = Namierzanie wrogów lądowych stat.targetsground = Namierzanie wrogów lądowych
blocks.itemsmoved = Prędkość poruszania się stat.itemsmoved = Prędkość poruszania się
blocks.launchtime = Czas pomiędzy wystrzeleniami stat.launchtime = Czas pomiędzy wystrzeleniami
blocks.shootrange = Zasięg stat.shootrange = Zasięg
blocks.size = Rozmiar stat.size = Rozmiar
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Pojemność cieczy stat.liquidcapacity = Pojemność cieczy
blocks.powerrange = Zakres mocy stat.powerrange = Zakres mocy
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Maksymalna ilość połączeń stat.powerconnections = Maksymalna ilość połączeń
blocks.poweruse = Zużycie prądu stat.poweruse = Zużycie prądu
blocks.powerdamage = Moc/Zniszczenia stat.powerdamage = Moc/Zniszczenia
blocks.itemcapacity = Pojemność przedmiotów stat.itemcapacity = Pojemność przedmiotów
blocks.basepowergeneration = Podstawowa generacja mocy stat.basepowergeneration = Podstawowa generacja mocy
blocks.productiontime = Czas produkcji stat.productiontime = Czas produkcji
blocks.repairtime = Czas pełnej naprawy bloku stat.repairtime = Czas pełnej naprawy bloku
blocks.speedincrease = Zwiększenie prędkości stat.speedincrease = Zwiększenie prędkości
blocks.range = Zasięg stat.range = Zasięg
blocks.drilltier = Co może wykopać stat.drilltier = Co może wykopać
blocks.drillspeed = Podstawowa szybkość kopania stat.drillspeed = Podstawowa szybkość kopania
blocks.boosteffect = Efekt wzmocnienia stat.boosteffect = Efekt wzmocnienia
blocks.maxunits = Maksymalna ilość jednostek stat.maxunits = Maksymalna ilość jednostek
blocks.health = Zdrowie stat.health = Zdrowie
blocks.buildtime = Czas budowy stat.buildtime = Czas budowy
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Koszt budowy stat.buildcost = Koszt budowy
blocks.inaccuracy = Niecelność stat.inaccuracy = Niecelność
blocks.shots = Strzały stat.shots = Strzały
blocks.reload = Strzałów/sekundę stat.reload = Strzałów/sekundę
blocks.ammo = Amunicja stat.ammo = Amunicja
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Wymagane Lepsze Wiertło bar.drilltierreq = Wymagane Lepsze Wiertło
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Duża szybkostrzelna wieża.
block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne. block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia. block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu. block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = [accent]Informação
error.title = [crimson]Ocorreu um Erro. error.title = [crimson]Ocorreu um Erro.
error.crashtitle = Ocorreu um Erro error.crashtitle = Ocorreu um Erro
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Entrada stat.input = Entrada
blocks.output = Saída stat.output = Saída
blocks.booster = Apoio stat.booster = Apoio
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacidade de Energia stat.powercapacity = Capacidade de Energia
blocks.powershot = Energia/tiro stat.powershot = Energia/tiro
blocks.damage = Dano stat.damage = Dano
blocks.targetsair = Mira no ar stat.targetsair = Mira no ar
blocks.targetsground = Mira no chão stat.targetsground = Mira no chão
blocks.itemsmoved = Velocidade de movimento stat.itemsmoved = Velocidade de movimento
blocks.launchtime = Tempo entre Disparos. stat.launchtime = Tempo entre Disparos.
blocks.shootrange = Alcance stat.shootrange = Alcance
blocks.size = Tamanho stat.size = Tamanho
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacidade de Líquido stat.liquidcapacity = Capacidade de Líquido
blocks.powerrange = Alcance da Energia stat.powerrange = Alcance da Energia
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Conexões Máximas stat.powerconnections = Conexões Máximas
blocks.poweruse = Uso de energia stat.poweruse = Uso de energia
blocks.powerdamage = Dano/Poder stat.powerdamage = Dano/Poder
blocks.itemcapacity = Capacidade de Itens stat.itemcapacity = Capacidade de Itens
blocks.basepowergeneration = Geração de poder base stat.basepowergeneration = Geração de poder base
blocks.productiontime = Tempo de produção stat.productiontime = Tempo de produção
blocks.repairtime = Tempo de reparo total do bloco stat.repairtime = Tempo de reparo total do bloco
blocks.speedincrease = Aumento de velocidade stat.speedincrease = Aumento de velocidade
blocks.range = Distância stat.range = Distância
blocks.drilltier = Brocas stat.drilltier = Brocas
blocks.drillspeed = Velocidade base da Broca stat.drillspeed = Velocidade base da Broca
blocks.boosteffect = Efeito do Impulso stat.boosteffect = Efeito do Impulso
blocks.maxunits = Máximo de unidades ativas stat.maxunits = Máximo de unidades ativas
blocks.health = Saúde stat.health = Saúde
blocks.buildtime = Tempo de construção stat.buildtime = Tempo de construção
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Custo de construção stat.buildcost = Custo de construção
blocks.inaccuracy = Imprecisão stat.inaccuracy = Imprecisão
blocks.shots = Tiros stat.shots = Tiros
blocks.reload = Tiros por segundo stat.reload = Tiros por segundo
blocks.ammo = Munição stat.ammo = Munição
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Broca melhor necessária. bar.drilltierreq = Broca melhor necessária.
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Uma grande torre que dispara balas explosivas que se
block.spectre.description = Um grande canhão massivo. Dispara grandes tiros perfuradores de blindagem em inimigos aéreos e terrestres. block.spectre.description = Um grande canhão massivo. Dispara grandes tiros perfuradores de blindagem em inimigos aéreos e terrestres.
block.meltdown.description = Um grande canhão laser massivo. Carrega e dispara um poderoso e persistente feixe nos seus inimigos. Requer uma refrigeração para ser operada. block.meltdown.description = Um grande canhão laser massivo. Carrega e dispara um poderoso e persistente feixe nos seus inimigos. Requer uma refrigeração para ser operada.
block.repair-point.description = Continuamente repara a unidade danificada mais proxima. block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
block.segment.description = Destrói projéteis inimigos. Projéteis de laser não são afetados. block.segment.description = Destrói projéteis inimigos. Projéteis de laser não são afetados.

View File

@@ -570,49 +570,49 @@ info.title = [accent]Informação
error.title = [crimson]Ocorreu um Erro. error.title = [crimson]Ocorreu um Erro.
error.crashtitle = Ocorreu um Erro error.crashtitle = Ocorreu um Erro
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Entrada stat.input = Entrada
blocks.output = Saida stat.output = Saida
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Telhas Requeridas stat.tiles = Telhas Requeridas
blocks.affinities = Afinidades stat.affinities = Afinidades
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacidade de Energia stat.powercapacity = Capacidade de Energia
blocks.powershot = Energia/tiro stat.powershot = Energia/tiro
blocks.damage = Dano stat.damage = Dano
blocks.targetsair = Mirar no ar stat.targetsair = Mirar no ar
blocks.targetsground = Mirar no chão stat.targetsground = Mirar no chão
blocks.itemsmoved = Velocidade de movimento stat.itemsmoved = Velocidade de movimento
blocks.launchtime = Tempo entre tiros stat.launchtime = Tempo entre tiros
blocks.shootrange = Alcance stat.shootrange = Alcance
blocks.size = Tamanho stat.size = Tamanho
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Capacidade de Líquido stat.liquidcapacity = Capacidade de Líquido
blocks.powerrange = Alcance da Energia stat.powerrange = Alcance da Energia
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Uso de energia stat.poweruse = Uso de energia
blocks.powerdamage = Dano/Poder stat.powerdamage = Dano/Poder
blocks.itemcapacity = Capacidade de Itens stat.itemcapacity = Capacidade de Itens
blocks.basepowergeneration = Geração de poder base stat.basepowergeneration = Geração de poder base
blocks.productiontime = Tempo de produção stat.productiontime = Tempo de produção
blocks.repairtime = Tempo de reparo total do bloco stat.repairtime = Tempo de reparo total do bloco
blocks.speedincrease = Aumento de velocidade stat.speedincrease = Aumento de velocidade
blocks.range = Distância stat.range = Distância
blocks.drilltier = Furáveis stat.drilltier = Furáveis
blocks.drillspeed = Velocidade da broca base stat.drillspeed = Velocidade da broca base
blocks.boosteffect = Efeito do Boost stat.boosteffect = Efeito do Boost
blocks.maxunits = Máximo de unidades ativas stat.maxunits = Máximo de unidades ativas
blocks.health = Saúde stat.health = Saúde
blocks.buildtime = Tempo de construção stat.buildtime = Tempo de construção
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Custo de construção stat.buildcost = Custo de construção
blocks.inaccuracy = Imprecisão stat.inaccuracy = Imprecisão
blocks.shots = Tiros stat.shots = Tiros
blocks.reload = Tiros por segundo stat.reload = Tiros por segundo
blocks.ammo = Munição stat.ammo = Munição
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Broca melhor necessária. bar.drilltierreq = Broca melhor necessária.
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Uma grande torre de tiro rapido.
block.spectre.description = Uma grande torre que da dois tiros poderosos ao mesmo tempo. block.spectre.description = Uma grande torre que da dois tiros poderosos ao mesmo tempo.
block.meltdown.description = Uma grande torre que atira dois raios poderosos ao mesmo tempo. block.meltdown.description = Uma grande torre que atira dois raios poderosos ao mesmo tempo.
block.repair-point.description = Continuamente repara a unidade danificada mais proxima. block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -569,50 +569,50 @@ error.title = [scarlet]A apărut o eroare.
error.crashtitle = A apărut o eroare. error.crashtitle = A apărut o eroare.
unit.nobuild = [scarlet]Unitatea nu poate construi. unit.nobuild = [scarlet]Unitatea nu poate construi.
lastaccessed = [lightgray]Ultima Accesare: {0} lastaccessed = [lightgray]Ultima Accesare: {0}
blocks.input = Necesită stat.input = Necesită
blocks.output = Produce stat.output = Produce
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Teren Necesar stat.tiles = Teren Necesar
blocks.affinities = Efecte Teren stat.affinities = Efecte Teren
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Capacitate electrică stat.powercapacity = Capacitate electrică
blocks.powershot = Electricitate/Glonț stat.powershot = Electricitate/Glonț
blocks.damage = Forță stat.damage = Forță
blocks.targetsair = Lovește Aeronave stat.targetsair = Lovește Aeronave
blocks.targetsground = Lovește Artilerie stat.targetsground = Lovește Artilerie
blocks.itemsmoved = Viteza de Mișcare a Materialelor stat.itemsmoved = Viteza de Mișcare a Materialelor
blocks.launchtime = Timp între Lansări stat.launchtime = Timp între Lansări
blocks.shootrange = Rază stat.shootrange = Rază
blocks.size = Mărime stat.size = Mărime
blocks.displaysize = Mărimea Monitorului Logic stat.displaysize = Mărimea Monitorului Logic
blocks.liquidcapacity = Capacitate Lichid stat.liquidcapacity = Capacitate Lichid
blocks.powerrange = Raza Electrică stat.powerrange = Raza Electrică
blocks.linkrange = Raza Legăturilor stat.linkrange = Raza Legăturilor
blocks.instructions = Instrucțiuni stat.instructions = Instrucțiuni
blocks.powerconnections = Maxim Conexiuni stat.powerconnections = Maxim Conexiuni
blocks.poweruse = Consum Electricitate stat.poweruse = Consum Electricitate
blocks.powerdamage = Electricitate/Forța Glonțului stat.powerdamage = Electricitate/Forța Glonțului
blocks.itemcapacity = Capacitate Materiale stat.itemcapacity = Capacitate Materiale
blocks.memorycapacity = Capacitate Memorie stat.memorycapacity = Capacitate Memorie
blocks.basepowergeneration = Generare Electricitate (Bază) stat.basepowergeneration = Generare Electricitate (Bază)
blocks.productiontime = Timp Producție stat.productiontime = Timp Producție
blocks.repairtime = Durata Reparării Blocului stat.repairtime = Durata Reparării Blocului
blocks.speedincrease = Creștere Viteză stat.speedincrease = Creștere Viteză
blocks.range = Rază stat.range = Rază
blocks.drilltier = Minabile stat.drilltier = Minabile
blocks.drillspeed = Viteză Burghiu (Bază) stat.drillspeed = Viteză Burghiu (Bază)
blocks.boosteffect = Efect de Boost stat.boosteffect = Efect de Boost
blocks.maxunits = Maxim Unități Active stat.maxunits = Maxim Unități Active
blocks.health = Viață stat.health = Viață
blocks.buildtime = Timp Construcție stat.buildtime = Timp Construcție
blocks.maxconsecutive = Maxim Consecutive stat.maxconsecutive = Maxim Consecutive
blocks.buildcost = Cost Construcție stat.buildcost = Cost Construcție
blocks.inaccuracy = Inacuratețe stat.inaccuracy = Inacuratețe
blocks.shots = Lovituri stat.shots = Lovituri
blocks.reload = Lovituri/Secundă stat.reload = Lovituri/Secundă
blocks.ammo = Muniție stat.ammo = Muniție
blocks.shieldhealth = Viața Scutului stat.shieldhealth = Viața Scutului
blocks.cooldowntime = Timp de Reîncărcare stat.cooldowntime = Timp de Reîncărcare
bar.drilltierreq = Burghiu Mai Bun Necesar bar.drilltierreq = Burghiu Mai Bun Necesar
bar.noresources = Resurse lipsă bar.noresources = Resurse lipsă
@@ -1311,4 +1311,4 @@ block.cyclone.description = O mare armă anti-artilerie și anti-aer. Trage cu g
block.spectre.description = O armă masivă cu două țevi. Trage cu gloanțe mari care găuresc armurile țintelor aeriene și artileriei. block.spectre.description = O armă masivă cu două țevi. Trage cu gloanțe mari care găuresc armurile țintelor aeriene și artileriei.
block.meltdown.description = O armă cu laser masivă. Trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera. block.meltdown.description = O armă cu laser masivă. Trage cu un laser continuu la inamicii din apropiere. Necesită răcitor pt a opera.
block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate. block.repair-point.description = Repară încontinuu cea mai deteriorată unitate din vecinătate.
block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate. block.segment.description = Deteriorează și distruge proiectilele din apropiere. Laserele nu sunt afectate.

View File

@@ -576,50 +576,50 @@ error.title = [scarlet]Произошла ошибка
error.crashtitle = Произошла ошибка error.crashtitle = Произошла ошибка
unit.nobuild = [scarlet]Боевая единица не может строить unit.nobuild = [scarlet]Боевая единица не может строить
lastaccessed = [lightgray]Последняя конфигурация от {0} lastaccessed = [lightgray]Последняя конфигурация от {0}
blocks.input = Вход stat.input = Вход
blocks.output = Выход stat.output = Выход
blocks.booster = Ускоритель stat.booster = Ускоритель
blocks.tiles = Необходимые плитки stat.tiles = Необходимые плитки
blocks.affinities = Увеличение эффективности stat.affinities = Увеличение эффективности
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Вместимость энергии stat.powercapacity = Вместимость энергии
blocks.powershot = Энергия/Выстрел stat.powershot = Энергия/Выстрел
blocks.damage = Урон stat.damage = Урон
blocks.targetsair = Воздушные цели stat.targetsair = Воздушные цели
blocks.targetsground = Наземные цели stat.targetsground = Наземные цели
blocks.itemsmoved = Скорость перемещения stat.itemsmoved = Скорость перемещения
blocks.launchtime = Интервал запусков stat.launchtime = Интервал запусков
blocks.shootrange = Радиус действия stat.shootrange = Радиус действия
blocks.size = Размер stat.size = Размер
blocks.displaysize = Размер дисплея stat.displaysize = Размер дисплея
blocks.liquidcapacity = Вместимость жидкости stat.liquidcapacity = Вместимость жидкости
blocks.powerrange = Дальность передачи энергии stat.powerrange = Дальность передачи энергии
blocks.linkrange = Дальность связи stat.linkrange = Дальность связи
blocks.instructions = Инструкции stat.instructions = Инструкции
blocks.powerconnections = Количество соединений stat.powerconnections = Количество соединений
blocks.poweruse = Потребляет энергии stat.poweruse = Потребляет энергии
blocks.powerdamage = Энергия/урон stat.powerdamage = Энергия/урон
blocks.itemcapacity = Вместимость предметов stat.itemcapacity = Вместимость предметов
blocks.memorycapacity = Размер памяти stat.memorycapacity = Размер памяти
blocks.basepowergeneration = Базовая генерация энергии stat.basepowergeneration = Базовая генерация энергии
blocks.productiontime = Время производства stat.productiontime = Время производства
blocks.repairtime = Время полной регенерации stat.repairtime = Время полной регенерации
blocks.speedincrease = Увеличение скорости stat.speedincrease = Увеличение скорости
blocks.range = Радиус действия stat.range = Радиус действия
blocks.drilltier = Бурит stat.drilltier = Бурит
blocks.drillspeed = Базовая скорость бурения stat.drillspeed = Базовая скорость бурения
blocks.boosteffect = Ускоряющий эффект stat.boosteffect = Ускоряющий эффект
blocks.maxunits = Максимальное количество активных единиц stat.maxunits = Максимальное количество активных единиц
blocks.health = Прочность stat.health = Прочность
blocks.buildtime = Время строительства stat.buildtime = Время строительства
blocks.maxconsecutive = Макс. последовательность stat.maxconsecutive = Макс. последовательность
blocks.buildcost = Стоимость строительства stat.buildcost = Стоимость строительства
blocks.inaccuracy = Разброс stat.inaccuracy = Разброс
blocks.shots = Выстрелы stat.shots = Выстрелы
blocks.reload = Выстрелы/секунду stat.reload = Выстрелы/секунду
blocks.ammo = Боеприпасы stat.ammo = Боеприпасы
blocks.shieldhealth = Прочность щита stat.shieldhealth = Прочность щита
blocks.cooldowntime = Время восстановления stat.cooldowntime = Время восстановления
bar.drilltierreq = Требуется бур получше bar.drilltierreq = Требуется бур получше
bar.noresources = Недостаточно ресурсов bar.noresources = Недостаточно ресурсов
@@ -1321,5 +1321,4 @@ block.cyclone.description = Большая турель, которая може
block.spectre.description = Массивная двуствольная пушка. Стреляет крупными бронебойными снарядами по воздушным и наземным целям. block.spectre.description = Массивная двуствольная пушка. Стреляет крупными бронебойными снарядами по воздушным и наземным целям.
block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы. block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы.
block.repair-point.description = Непрерывно лечит ближайшую поврежденную боевую единицу или мех в своём радиусе. block.repair-point.description = Непрерывно лечит ближайшую поврежденную боевую единицу или мех в своём радиусе.
block.segment.description = Повреждает и разрушает приближающиеся снаряды. Не взаимодействует с лазерными лучами. block.segment.description = Повреждает и разрушает приближающиеся снаряды. Не взаимодействует с лазерными лучами.

View File

@@ -570,49 +570,49 @@ info.title = Info
error.title = [crimson]An error has occured error.title = [crimson]An error has occured
error.crashtitle = An error has occured error.crashtitle = An error has occured
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Inmatning stat.input = Inmatning
blocks.output = Utmatning stat.output = Utmatning
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Power Capacity stat.powercapacity = Power Capacity
blocks.powershot = Power/Shot stat.powershot = Power/Shot
blocks.damage = Skada stat.damage = Skada
blocks.targetsair = Targets Air stat.targetsair = Targets Air
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Range stat.shootrange = Range
blocks.size = Storlek stat.size = Storlek
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Liquid Capacity stat.liquidcapacity = Liquid Capacity
blocks.powerrange = Power Range stat.powerrange = Power Range
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Power Use stat.poweruse = Power Use
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Item Capacity stat.itemcapacity = Item Capacity
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Drillables stat.drilltier = Drillables
blocks.drillspeed = Base Drill Speed stat.drillspeed = Base Drill Speed
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Health stat.health = Health
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = Inaccuracy stat.inaccuracy = Inaccuracy
blocks.shots = Skott stat.shots = Skott
blocks.reload = Shots/Second stat.reload = Shots/Second
blocks.ammo = Ammunition stat.ammo = Ammunition
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Bättre Borr Krävs bar.drilltierreq = Bättre Borr Krävs
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = ข้อมูล
error.title = [crimson]มีบางอย่างผิดพลาดเกิดขึ้น error.title = [crimson]มีบางอย่างผิดพลาดเกิดขึ้น
error.crashtitle = มีบางอย่างผิดพลาดเกิดขึ้น error.crashtitle = มีบางอย่างผิดพลาดเกิดขึ้น
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = นำเข้า stat.input = นำเข้า
blocks.output = ส่งออก stat.output = ส่งออก
blocks.booster = บูสเตอร์ stat.booster = บูสเตอร์
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = ความจุพลังงาน stat.powercapacity = ความจุพลังงาน
blocks.powershot = หน่วยพลังงาน/นัด stat.powershot = หน่วยพลังงาน/นัด
blocks.damage = ดาเมจ stat.damage = ดาเมจ
blocks.targetsair = ยิงอากาศยาน stat.targetsair = ยิงอากาศยาน
blocks.targetsground = ยิงภาคพื้นดิน stat.targetsground = ยิงภาคพื้นดิน
blocks.itemsmoved = ความเร็วเคลื่อนที่ stat.itemsmoved = ความเร็วเคลื่อนที่
blocks.launchtime = เวลาระหว่างการส่ง stat.launchtime = เวลาระหว่างการส่ง
blocks.shootrange = ระยะยิง stat.shootrange = ระยะยิง
blocks.size = ขนาด stat.size = ขนาด
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = จุของเหลว stat.liquidcapacity = จุของเหลว
blocks.powerrange = ระยะพลังงาน stat.powerrange = ระยะพลังงาน
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = จำนวนการเชื่อมต่อสูงสุด stat.powerconnections = จำนวนการเชื่อมต่อสูงสุด
blocks.poweruse = ใช้พลังงาน stat.poweruse = ใช้พลังงาน
blocks.powerdamage = หน่วยพลังงาน/ดาเมจ stat.powerdamage = หน่วยพลังงาน/ดาเมจ
blocks.itemcapacity = จุไอเท็ม stat.itemcapacity = จุไอเท็ม
blocks.basepowergeneration = กำเนิดพลังงานพื้นฐาน stat.basepowergeneration = กำเนิดพลังงานพื้นฐาน
blocks.productiontime = เวลาที่ใช้ในการผลิต stat.productiontime = เวลาที่ใช้ในการผลิต
blocks.repairtime = เวลาที่ใช้ในการซ่อมแซมให้สมบูรณ์ stat.repairtime = เวลาที่ใช้ในการซ่อมแซมให้สมบูรณ์
blocks.speedincrease = เพิ่มความเร็ว stat.speedincrease = เพิ่มความเร็ว
blocks.range = ระยะ stat.range = ระยะ
blocks.drilltier = ขุดได้ stat.drilltier = ขุดได้
blocks.drillspeed = ความเร็วขุดพื้นฐาน stat.drillspeed = ความเร็วขุดพื้นฐาน
blocks.boosteffect = แอฟเฟ็คของบูสต์ stat.boosteffect = แอฟเฟ็คของบูสต์
blocks.maxunits = จำนวนยูนิตสูงสุด stat.maxunits = จำนวนยูนิตสูงสุด
blocks.health = เลือด stat.health = เลือด
blocks.buildtime = เวลาในการสร้าง stat.buildtime = เวลาในการสร้าง
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = ใช้ stat.buildcost = ใช้
blocks.inaccuracy = ความคลาดเคลื่อน stat.inaccuracy = ความคลาดเคลื่อน
blocks.shots = นัด stat.shots = นัด
blocks.reload = นัด/วินาที stat.reload = นัด/วินาที
blocks.ammo = กระสุน stat.ammo = กระสุน
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = จำเป็นต้องใช้เครื่องขุดที่ดีกว่า bar.drilltierreq = จำเป็นต้องใช้เครื่องขุดที่ดีกว่า
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = ป้อมปืนต่อต้านอาก
block.spectre.description = ปืนใหญ่ลำกล้องคูขนาดยักษ์. ยิงกระสุนเจาะเกราะใส่ศัตรูทั้งบนอากาศและภาดพื้นดิน. block.spectre.description = ปืนใหญ่ลำกล้องคูขนาดยักษ์. ยิงกระสุนเจาะเกราะใส่ศัตรูทั้งบนอากาศและภาดพื้นดิน.
block.meltdown.description = ปืนใหญ่เลเซอร์ขนาดยักษ์. ชาร์จแล้วยิงลำแสงเลเซอร์ใส่ศัตรูที่อยู่ใกล้. จำเป็นต้องใช้สารหล่อเย็น. block.meltdown.description = ปืนใหญ่เลเซอร์ขนาดยักษ์. ชาร์จแล้วยิงลำแสงเลเซอร์ใส่ศัตรูที่อยู่ใกล้. จำเป็นต้องใช้สารหล่อเย็น.
block.repair-point.description = ซ่อมแซมยูนิตที่อยู่ในรัศมีอย่างต่อเนื่อง. block.repair-point.description = ซ่อมแซมยูนิตที่อยู่ในรัศมีอย่างต่อเนื่อง.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = [accent]Bilgi
error.title = [crimson]Bir hata olustu error.title = [crimson]Bir hata olustu
error.crashtitle = Bir hata olustu error.crashtitle = Bir hata olustu
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Input stat.input = Input
blocks.output = Output stat.output = Output
blocks.booster = Booster stat.booster = Booster
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Guc kapasitesi stat.powercapacity = Guc kapasitesi
blocks.powershot = Guc/Saldiri hizi stat.powershot = Guc/Saldiri hizi
blocks.damage = Damage stat.damage = Damage
blocks.targetsair = Havayi hedef alir mi? stat.targetsair = Havayi hedef alir mi?
blocks.targetsground = Targets Ground stat.targetsground = Targets Ground
blocks.itemsmoved = Move Speed stat.itemsmoved = Move Speed
blocks.launchtime = Time Between Launches stat.launchtime = Time Between Launches
blocks.shootrange = Menzil stat.shootrange = Menzil
blocks.size = Buyukluk stat.size = Buyukluk
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Sivi kapasitesi stat.liquidcapacity = Sivi kapasitesi
blocks.powerrange = Menzil stat.powerrange = Menzil
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Max Connections stat.powerconnections = Max Connections
blocks.poweruse = Guc kullanimi stat.poweruse = Guc kullanimi
blocks.powerdamage = Power/Damage stat.powerdamage = Power/Damage
blocks.itemcapacity = Esya kapasitesi stat.itemcapacity = Esya kapasitesi
blocks.basepowergeneration = Base Power Generation stat.basepowergeneration = Base Power Generation
blocks.productiontime = Production Time stat.productiontime = Production Time
blocks.repairtime = Block Full Repair Time stat.repairtime = Block Full Repair Time
blocks.speedincrease = Speed Increase stat.speedincrease = Speed Increase
blocks.range = Range stat.range = Range
blocks.drilltier = Kazilabilirler stat.drilltier = Kazilabilirler
blocks.drillspeed = Ana kazma hizi stat.drillspeed = Ana kazma hizi
blocks.boosteffect = Boost Effect stat.boosteffect = Boost Effect
blocks.maxunits = Max Active Units stat.maxunits = Max Active Units
blocks.health = Can stat.health = Can
blocks.buildtime = Build Time stat.buildtime = Build Time
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = Build Cost stat.buildcost = Build Cost
blocks.inaccuracy = sekme stat.inaccuracy = sekme
blocks.shots = vuruslar stat.shots = vuruslar
blocks.reload = Yeniden doldurma stat.reload = Yeniden doldurma
blocks.ammo = Ammo stat.ammo = Ammo
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Better Drill Required bar.drilltierreq = Better Drill Required
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = A large rapid fire turret.
block.spectre.description = A large turret which shoots two powerful bullets at once. block.spectre.description = A large turret which shoots two powerful bullets at once.
block.meltdown.description = A large turret which shoots powerful long-range beams. block.meltdown.description = A large turret which shoots powerful long-range beams.
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -570,49 +570,49 @@ info.title = Bilgi
error.title = [crimson]Bir hata oldu error.title = [crimson]Bir hata oldu
error.crashtitle = Bir hata oldu error.crashtitle = Bir hata oldu
unit.nobuild = [scarlet]Unit can't build unit.nobuild = [scarlet]Unit can't build
blocks.input = Giriş stat.input = Giriş
blocks.output = Çıkış stat.output = Çıkış
blocks.booster = Güçlendirici stat.booster = Güçlendirici
blocks.tiles = Required Tiles stat.tiles = Required Tiles
blocks.affinities = Affinities stat.affinities = Affinities
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Enerji Kapasitesi stat.powercapacity = Enerji Kapasitesi
blocks.powershot = Enerji/Atış stat.powershot = Enerji/Atış
blocks.damage = Hasar stat.damage = Hasar
blocks.targetsair = Havayı Hedefler Mi stat.targetsair = Havayı Hedefler Mi
blocks.targetsground = Yeri Hedefler Mi stat.targetsground = Yeri Hedefler Mi
blocks.itemsmoved = Hareket Hızı stat.itemsmoved = Hareket Hızı
blocks.launchtime = Fırlatmalar Arasındaki Süre stat.launchtime = Fırlatmalar Arasındaki Süre
blocks.shootrange = Menzil stat.shootrange = Menzil
blocks.size = Boyut stat.size = Boyut
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = Sıvı Kapasitesi stat.liquidcapacity = Sıvı Kapasitesi
blocks.powerrange = Enerji Menzili stat.powerrange = Enerji Menzili
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = Bağlantı sayısı stat.powerconnections = Bağlantı sayısı
blocks.poweruse = Enerji Kullanımı stat.poweruse = Enerji Kullanımı
blocks.powerdamage = Enerji/Hasar stat.powerdamage = Enerji/Hasar
blocks.itemcapacity = Eşya Kapasitesi stat.itemcapacity = Eşya Kapasitesi
blocks.basepowergeneration = Temel Enerji Üretimi stat.basepowergeneration = Temel Enerji Üretimi
blocks.productiontime = Üretim Süresi stat.productiontime = Üretim Süresi
blocks.repairtime = Tamir Tamir Edilme Süresi stat.repairtime = Tamir Tamir Edilme Süresi
blocks.speedincrease = Hız Artışı stat.speedincrease = Hız Artışı
blocks.range = Menzil stat.range = Menzil
blocks.drilltier = Kazılabilenler stat.drilltier = Kazılabilenler
blocks.drillspeed = Temel Matkap Hızı stat.drillspeed = Temel Matkap Hızı
blocks.boosteffect = Hızlandırma Efekti stat.boosteffect = Hızlandırma Efekti
blocks.maxunits = Maksimum Aktif Birim stat.maxunits = Maksimum Aktif Birim
blocks.health = Can stat.health = Can
blocks.buildtime = İnşaat Süresi stat.buildtime = İnşaat Süresi
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = İnşaat Fiyatı stat.buildcost = İnşaat Fiyatı
blocks.inaccuracy = İskalama Oranı stat.inaccuracy = İskalama Oranı
blocks.shots = Atışlar stat.shots = Atışlar
blocks.reload = Atışlar/Sn stat.reload = Atışlar/Sn
blocks.ammo = Mermi stat.ammo = Mermi
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = Daha İyi Matkap Gerekli bar.drilltierreq = Daha İyi Matkap Gerekli
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = Büyük bir anti hava ve anti kara tareti. Yakının
block.spectre.description = Dev bir çift namlulu top. Hava ve kara birimlerine iri, zırh delici mermiler atar. block.spectre.description = Dev bir çift namlulu top. Hava ve kara birimlerine iri, zırh delici mermiler atar.
block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir. block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir.
block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder. block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

View File

@@ -565,50 +565,50 @@ info.title = Інформація
error.title = [crimson]Виникла помилка error.title = [crimson]Виникла помилка
error.crashtitle = Виникла помилка error.crashtitle = Виникла помилка
unit.nobuild = [scarlet]Ця одиниця не може будувати unit.nobuild = [scarlet]Ця одиниця не може будувати
blocks.input = Ввід stat.input = Ввід
blocks.output = Вивід stat.output = Вивід
blocks.booster = Прискорювач stat.booster = Прискорювач
blocks.tiles = Необхідні плитки stat.tiles = Необхідні плитки
blocks.affinities = Збільшення ефективності stat.affinities = Збільшення ефективності
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = Місткість енергії stat.powercapacity = Місткість енергії
blocks.powershot = Енергія за постріл stat.powershot = Енергія за постріл
blocks.damage = Шкода stat.damage = Шкода
blocks.targetsair = Повітряні противники stat.targetsair = Повітряні противники
blocks.targetsground = Наземні противники stat.targetsground = Наземні противники
blocks.itemsmoved = Швидкість переміщення stat.itemsmoved = Швидкість переміщення
blocks.launchtime = Час між запусками stat.launchtime = Час між запусками
blocks.shootrange = Радіус дії stat.shootrange = Радіус дії
blocks.size = Розмір stat.size = Розмір
blocks.displaysize = Розмір дисплею stat.displaysize = Розмір дисплею
blocks.liquidcapacity = Рідинна місткість stat.liquidcapacity = Рідинна місткість
blocks.powerrange = Радіус передачі енергії stat.powerrange = Радіус передачі енергії
blocks.linkrange = Радіус з’єднання stat.linkrange = Радіус з’єднання
blocks.instructions = Інструкції stat.instructions = Інструкції
blocks.powerconnections = Максимальна кількість з’єднань stat.powerconnections = Максимальна кількість з’єднань
blocks.poweruse = Енергії використовує stat.poweruse = Енергії використовує
blocks.powerdamage = Енергії за од. шкоди stat.powerdamage = Енергії за од. шкоди
blocks.itemcapacity = Місткість предметів stat.itemcapacity = Місткість предметів
blocks.memorycapacity = Ємність пам’яті stat.memorycapacity = Ємність пам’яті
blocks.basepowergeneration = Базова генерація енергії stat.basepowergeneration = Базова генерація енергії
blocks.productiontime = Час виробництва stat.productiontime = Час виробництва
blocks.repairtime = Час повного відновлення блоку stat.repairtime = Час повного відновлення блоку
blocks.speedincrease = Збільшення швидкості stat.speedincrease = Збільшення швидкості
blocks.range = Радіус дії stat.range = Радіус дії
blocks.drilltier = Видобуває stat.drilltier = Видобуває
blocks.drillspeed = Базова швидкість буріння stat.drillspeed = Базова швидкість буріння
blocks.boosteffect = Прискорювальний ефект stat.boosteffect = Прискорювальний ефект
blocks.maxunits = Максимальна кількість активних одиниць stat.maxunits = Максимальна кількість активних одиниць
blocks.health = Здоров’я stat.health = Здоров’я
blocks.buildtime = Час будування stat.buildtime = Час будування
blocks.maxconsecutive = Максимальна послідовність stat.maxconsecutive = Максимальна послідовність
blocks.buildcost = Вартість будування stat.buildcost = Вартість будування
blocks.inaccuracy = Розкид stat.inaccuracy = Розкид
blocks.shots = Постріли stat.shots = Постріли
blocks.reload = Постріли/секунду stat.reload = Постріли/секунду
blocks.ammo = Боєприпаси stat.ammo = Боєприпаси
blocks.shieldhealth = Міцність щита stat.shieldhealth = Міцність щита
blocks.cooldowntime = Тривалість охолодження stat.cooldowntime = Тривалість охолодження
bar.drilltierreq = Потребується кращий бур bar.drilltierreq = Потребується кращий бур
bar.noresources = Бракує ресурсів bar.noresources = Бракує ресурсів
@@ -1300,4 +1300,4 @@ block.cyclone.description = Велика протиповітряна та пр
block.spectre.description = Масивна двоствольна гармата. Стріляє великими бронебійними кулями в повітряні та наземні цілі. block.spectre.description = Масивна двоствольна гармата. Стріляє великими бронебійними кулями в повітряні та наземні цілі.
block.meltdown.description = Масивна лазерна гармата. Заряджає і стріляє лазерним променем у найближчих противників. Для роботи потрібен теплоносій. block.meltdown.description = Масивна лазерна гармата. Заряджає і стріляє лазерним променем у найближчих противників. Для роботи потрібен теплоносій.
block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю. block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю.
block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних. block.segment.description = Пошкоджує та руйнує вхідні снаряди. Окрім лазерних.

View File

@@ -570,49 +570,49 @@ info.title = [accent]详情
error.title = [crimson]发生了一个错误 error.title = [crimson]发生了一个错误
error.crashtitle = 发生了一个错误 error.crashtitle = 发生了一个错误
unit.nobuild = [scarlet]单位未能建造 unit.nobuild = [scarlet]单位未能建造
blocks.input = 输入 stat.input = 输入
blocks.output = 输出 stat.output = 输出
blocks.booster = 增强物品/液体 stat.booster = 增强物品/液体
blocks.tiles = 所需地型 stat.tiles = 所需地型
blocks.affinities = 相关 stat.affinities = 相关
block.unknown = [lightgray]??? block.unknown = [lightgray]???
blocks.powercapacity = 能量容量 stat.powercapacity = 能量容量
blocks.powershot = 能量/发射 stat.powershot = 能量/发射
blocks.damage = 伤害 stat.damage = 伤害
blocks.targetsair = 攻击空中单位 stat.targetsair = 攻击空中单位
blocks.targetsground = 攻击地面单位 stat.targetsground = 攻击地面单位
blocks.itemsmoved = 移动速度 stat.itemsmoved = 移动速度
blocks.launchtime = 发射间隔时间 stat.launchtime = 发射间隔时间
blocks.shootrange = 范围 stat.shootrange = 范围
blocks.size = 尺寸 stat.size = 尺寸
blocks.displaysize = 显示尺寸 stat.displaysize = 显示尺寸
blocks.liquidcapacity = 液体容量 stat.liquidcapacity = 液体容量
blocks.powerrange = 能量范围 stat.powerrange = 能量范围
blocks.linkrange = 连接范围 stat.linkrange = 连接范围
blocks.instructions = 指令数量 stat.instructions = 指令数量
blocks.powerconnections = 最多连接 stat.powerconnections = 最多连接
blocks.poweruse = 使用能量 stat.poweruse = 使用能量
blocks.powerdamage = 功率/损伤 stat.powerdamage = 功率/损伤
blocks.itemcapacity = 物品容量 stat.itemcapacity = 物品容量
blocks.basepowergeneration = 基础能源输出 stat.basepowergeneration = 基础能源输出
blocks.productiontime = 生产时间 stat.productiontime = 生产时间
blocks.repairtime = 建筑完全修复时间 stat.repairtime = 建筑完全修复时间
blocks.speedincrease = 提速 stat.speedincrease = 提速
blocks.range = 范围 stat.range = 范围
blocks.drilltier = 可钻探矿物 stat.drilltier = 可钻探矿物
blocks.drillspeed = 基础钻探速度 stat.drillspeed = 基础钻探速度
blocks.boosteffect = 增强效果 stat.boosteffect = 增强效果
blocks.maxunits = 最大单位数量 stat.maxunits = 最大单位数量
blocks.health = 生命值 stat.health = 生命值
blocks.buildtime = 建造时间 stat.buildtime = 建造时间
blocks.maxconsecutive = 最大连续 stat.maxconsecutive = 最大连续
blocks.buildcost = 建造花费 stat.buildcost = 建造花费
blocks.inaccuracy = 误差 stat.inaccuracy = 误差
blocks.shots = 发射数 stat.shots = 发射数
blocks.reload = 每秒发射数 stat.reload = 每秒发射数
blocks.ammo = 弹药 stat.ammo = 弹药
blocks.shieldhealth = 盾容 stat.shieldhealth = 盾容
blocks.cooldowntime = 冷却时间 stat.cooldowntime = 冷却时间
bar.drilltierreq = 需要更好的钻头 bar.drilltierreq = 需要更好的钻头
bar.noresources = 缺失资源 bar.noresources = 缺失资源
@@ -1302,4 +1302,4 @@ block.cyclone.description = 大型炮塔,对空对地,发射在敌人周围
block.spectre.description = 超大型炮塔,对空对地,一次射出两颗强大的破甲弹。 block.spectre.description = 超大型炮塔,对空对地,一次射出两颗强大的破甲弹。
block.meltdown.description = 超大型激光炮塔,充能之后持续发射光束,需要冷却剂。 block.meltdown.description = 超大型激光炮塔,充能之后持续发射光束,需要冷却剂。
block.repair-point.description = 持续治疗其附近受损最严重的单位。 block.repair-point.description = 持续治疗其附近受损最严重的单位。
block.segment.description = 摧毁袭来的除激光以外的子弹或导弹. block.segment.description = 摧毁袭来的除激光以外的子弹或导弹.

View File

@@ -570,49 +570,49 @@ info.title = 資訊
error.title = [crimson]發生錯誤 error.title = [crimson]發生錯誤
error.crashtitle = 發生錯誤 error.crashtitle = 發生錯誤
unit.nobuild = [scarlet]單位不能建造 unit.nobuild = [scarlet]單位不能建造
blocks.input = 輸入 stat.input = 輸入
blocks.output = 輸出 stat.output = 輸出
blocks.booster = 強化 stat.booster = 強化
blocks.tiles = 需求方塊 stat.tiles = 需求方塊
blocks.affinities = 親和方塊 stat.affinities = 親和方塊
block.unknown = [lightgray] block.unknown = [lightgray]
blocks.powercapacity = 蓄電量 stat.powercapacity = 蓄電量
blocks.powershot = 能量/射擊 stat.powershot = 能量/射擊
blocks.damage = 傷害 stat.damage = 傷害
blocks.targetsair = 攻擊空中目標 stat.targetsair = 攻擊空中目標
blocks.targetsground = 攻擊地面目標 stat.targetsground = 攻擊地面目標
blocks.itemsmoved = 移動速度 stat.itemsmoved = 移動速度
blocks.launchtime = 發射間隔 stat.launchtime = 發射間隔
blocks.shootrange = 範圍 stat.shootrange = 範圍
blocks.size = 尺寸 stat.size = 尺寸
blocks.displaysize = Display Size stat.displaysize = Display Size
blocks.liquidcapacity = 液體容量 stat.liquidcapacity = 液體容量
blocks.powerrange = 輸出範圍 stat.powerrange = 輸出範圍
blocks.linkrange = Link Range stat.linkrange = Link Range
blocks.instructions = Instructions stat.instructions = Instructions
blocks.powerconnections = 最大連接數 stat.powerconnections = 最大連接數
blocks.poweruse = 能量使用 stat.poweruse = 能量使用
blocks.powerdamage = 能量/傷害 stat.powerdamage = 能量/傷害
blocks.itemcapacity = 物品容量 stat.itemcapacity = 物品容量
blocks.basepowergeneration = 基礎能量生產 stat.basepowergeneration = 基礎能量生產
blocks.productiontime = 生產時間 stat.productiontime = 生產時間
blocks.repairtime = 方塊完全修復時間 stat.repairtime = 方塊完全修復時間
blocks.speedincrease = 速度提升 stat.speedincrease = 速度提升
blocks.range = 範圍 stat.range = 範圍
blocks.drilltier = 可鑽取礦物 stat.drilltier = 可鑽取礦物
blocks.drillspeed = 基本鑽取速度 stat.drillspeed = 基本鑽取速度
blocks.boosteffect = 提升效應 stat.boosteffect = 提升效應
blocks.maxunits = 最大活躍單位 stat.maxunits = 最大活躍單位
blocks.health = 耐久度 stat.health = 耐久度
blocks.buildtime = 建設時間 stat.buildtime = 建設時間
blocks.maxconsecutive = Max Consecutive stat.maxconsecutive = Max Consecutive
blocks.buildcost = 建造成本 stat.buildcost = 建造成本
blocks.inaccuracy = 誤差 stat.inaccuracy = 誤差
blocks.shots = 射擊數 stat.shots = 射擊數
blocks.reload = 射擊次數/秒 stat.reload = 射擊次數/秒
blocks.ammo = 彈藥 stat.ammo = 彈藥
blocks.shieldhealth = Shield Health stat.shieldhealth = Shield Health
blocks.cooldowntime = Cooldown Time stat.cooldowntime = Cooldown Time
bar.drilltierreq = 需要更好的鑽頭 bar.drilltierreq = 需要更好的鑽頭
bar.noresources = Missing Resources bar.noresources = Missing Resources
@@ -1302,4 +1302,4 @@ block.cyclone.description = 一種對空和對地的大型砲塔。向附近單
block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。 block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。
block.meltdown.description = 一種巨型激光砲塔。充能並發射持續性的激光光束。需要冷卻液以運作。 block.meltdown.description = 一種巨型激光砲塔。充能並發射持續性的激光光束。需要冷卻液以運作。
block.repair-point.description = 持續治療附近最近的受損單位。 block.repair-point.description = 持續治療附近最近的受損單位。
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.

Binary file not shown.

View File

@@ -0,0 +1,9 @@
varying lowp vec4 v_color;
varying lowp vec4 v_mix_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main(){
vec4 c = texture2D(u_texture, v_texCoords);
gl_FragColor = v_color * mix(c, vec4(v_mix_color.rgb, c.a), v_mix_color.a);
}

BIN
core/assets/sprites/fog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -72,6 +72,11 @@ public class BaseAI{
int wx = (int)(World.toTile(pos.getX()) + Tmp.v1.x), wy = (int)(World.toTile(pos.getY()) + Tmp.v1.y); int wx = (int)(World.toTile(pos.getX()) + Tmp.v1.x), wy = (int)(World.toTile(pos.getY()) + Tmp.v1.y);
Tile tile = world.tiles.getc(wx, wy); Tile tile = world.tiles.getc(wx, wy);
//try not to block the spawn point
if(spawner.getSpawns().contains(t -> t.within(tile, tilesize * 40f))){
continue;
}
Seq<BasePart> parts = null; Seq<BasePart> parts = null;
//pick a completely random base part, and place it a random location //pick a completely random base part, and place it a random location

View File

@@ -80,7 +80,7 @@ public class WaveSpawner{
Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1); Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1);
unit.set(spawnX + Tmp.v1.x, spawnY + Tmp.v1.y); unit.set(spawnX + Tmp.v1.x, spawnY + Tmp.v1.y);
Time.run(Math.min(i * 5, 60 * 2), () -> spawnEffect(unit)); spawnEffect(unit);
} }
}); });
} }

View File

@@ -34,10 +34,10 @@ public class FlyingAI extends AIController{
Teamc result = target(x, y, range, air, ground); Teamc result = target(x, y, range, air, ground);
if(result != null) return result; if(result != null) return result;
if(ground) result = targetFlag(x, y, BlockFlag.producer, true); if(ground) result = targetFlag(x, y, BlockFlag.generator, true);
if(result != null) return result; if(result != null) return result;
if(ground) result = targetFlag(x, y, BlockFlag.turret, true); if(ground) result = targetFlag(x, y, BlockFlag.core, true);
if(result != null) return result; if(result != null) return result;
return null; return null;

View File

@@ -14,6 +14,8 @@ import mindustry.world.blocks.*;
import mindustry.world.blocks.campaign.*; import mindustry.world.blocks.campaign.*;
import mindustry.world.blocks.defense.*; import mindustry.world.blocks.defense.*;
import mindustry.world.blocks.defense.turrets.*; import mindustry.world.blocks.defense.turrets.*;
import mindustry.world.blocks.defense.turrets.PointDefenseTurret;
import mindustry.world.blocks.defense.turrets.TractorBeamTurret;
import mindustry.world.blocks.distribution.*; import mindustry.world.blocks.distribution.*;
import mindustry.world.blocks.environment.*; import mindustry.world.blocks.environment.*;
import mindustry.world.blocks.experimental.*; import mindustry.world.blocks.experimental.*;

View File

@@ -1293,6 +1293,14 @@ public class Fx{
}); });
}), }),
coreBurn = new Effect(23, e -> {
randLenVectors(e.id, 5, e.fin() * 9f, (x, y) -> {
float len = e.fout() * 4f;
color(Pal.accent, Color.gray, e.fin());
Fill.circle(e.x + x, e.y + y, len/2f);
});
}),
plasticburn = new Effect(40, e -> { plasticburn = new Effect(40, e -> {
randLenVectors(e.id, 5, 3f + e.fin() * 5f, (x, y) -> { randLenVectors(e.id, 5, 3f + e.fin() * 5f, (x, y) -> {
color(Color.valueOf("e9ead3"), Color.gray, e.fin()); color(Color.valueOf("e9ead3"), Color.gray, e.fin());

View File

@@ -10,6 +10,7 @@ import mindustry.entities.bullet.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -897,6 +898,7 @@ public class UnitTypes implements ContentList{
range = 140f; range = 140f;
faceTarget = false; faceTarget = false;
armor = 4f; armor = 4f;
targetFlag = BlockFlag.factory;
weapons.add(new Weapon(){{ weapons.add(new Weapon(){{
minShootVelocity = 0.75f; minShootVelocity = 0.75f;
@@ -977,6 +979,7 @@ public class UnitTypes implements ContentList{
engineOffset = 21; engineOffset = 21;
engineSize = 5.3f; engineSize = 5.3f;
hitSize = 56f; hitSize = 56f;
targetFlag = BlockFlag.battery;
BulletType missiles = new MissileBulletType(2.7f, 10){{ BulletType missiles = new MissileBulletType(2.7f, 10){{
width = 8f; width = 8f;
@@ -1051,6 +1054,7 @@ public class UnitTypes implements ContentList{
hitSize = 58f; hitSize = 58f;
destructibleWreck = false; destructibleWreck = false;
armor = 13f; armor = 13f;
targetFlag = BlockFlag.reactor;
BulletType fragBullet = new FlakBulletType(4f, 5){{ BulletType fragBullet = new FlakBulletType(4f, 5){{
shootEffect = Fx.shootBig; shootEffect = Fx.shootBig;
@@ -1196,7 +1200,6 @@ public class UnitTypes implements ContentList{
mineTier = 3; mineTier = 3;
health = 500; health = 500;
armor = 2f;
armor = 5f; armor = 5f;
speed = 1.8f; speed = 1.8f;
accel = 0.06f; accel = 0.06f;
@@ -1246,6 +1249,7 @@ public class UnitTypes implements ContentList{
buildSpeed = 2.5f; buildSpeed = 2.5f;
range = 140f; range = 140f;
targetAir = false; targetAir = false;
targetFlag = BlockFlag.battery;
ammoType = AmmoTypes.powerHigh; ammoType = AmmoTypes.powerHigh;
@@ -1650,11 +1654,11 @@ public class UnitTypes implements ContentList{
mineTier = 1; mineTier = 1;
buildSpeed = 0.5f; buildSpeed = 0.5f;
drag = 0.05f; drag = 0.05f;
speed = 2.8f; speed = 3f;
rotateSpeed = 15f; rotateSpeed = 15f;
accel = 0.1f; accel = 0.1f;
itemCapacity = 30; itemCapacity = 30;
health = 120f; health = 150f;
engineOffset = 6f; engineOffset = 6f;
hitSize = 8f; hitSize = 8f;
commandLimit = 3; commandLimit = 3;
@@ -1665,13 +1669,13 @@ public class UnitTypes implements ContentList{
y = 1f; y = 1f;
top = false; top = false;
bullet = new BasicBulletType(2.5f, 9){{ bullet = new BasicBulletType(2.5f, 10){{
width = 7f; width = 7f;
height = 9f; height = 9f;
lifetime = 60f; lifetime = 60f;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
smokeEffect = Fx.shootSmallSmoke; smokeEffect = Fx.shootSmallSmoke;
tileDamageMultiplier = 0.09f; tileDamageMultiplier = 0.03f;
}}; }};
}}); }});
}}; }};
@@ -1685,11 +1689,11 @@ public class UnitTypes implements ContentList{
mineTier = 1; mineTier = 1;
buildSpeed = 0.75f; buildSpeed = 0.75f;
drag = 0.05f; drag = 0.05f;
speed = 3f; speed = 3.3f;
rotateSpeed = 17f; rotateSpeed = 17f;
accel = 0.1f; accel = 0.1f;
itemCapacity = 50; itemCapacity = 50;
health = 150f; health = 170f;
engineOffset = 6f; engineOffset = 6f;
hitSize = 9f; hitSize = 9f;
rotateShooting = false; rotateShooting = false;
@@ -1706,13 +1710,13 @@ public class UnitTypes implements ContentList{
shotDelay = 4f; shotDelay = 4f;
spacing = 0f; spacing = 0f;
bullet = new BasicBulletType(3f, 9){{ bullet = new BasicBulletType(3f, 10){{
width = 7f; width = 7f;
height = 9f; height = 9f;
lifetime = 60f; lifetime = 60f;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
smokeEffect = Fx.shootSmallSmoke; smokeEffect = Fx.shootSmallSmoke;
tileDamageMultiplier = 0.1f; tileDamageMultiplier = 0.03f;
}}; }};
}}); }});
}}; }};
@@ -1726,11 +1730,11 @@ public class UnitTypes implements ContentList{
mineTier = 2; mineTier = 2;
buildSpeed = 1f; buildSpeed = 1f;
drag = 0.05f; drag = 0.05f;
speed = 3.5f; speed = 3.55f;
rotateSpeed = 19f; rotateSpeed = 19f;
accel = 0.11f; accel = 0.11f;
itemCapacity = 70; itemCapacity = 70;
health = 190f; health = 220f;
engineOffset = 6f; engineOffset = 6f;
hitSize = 10f; hitSize = 10f;
commandLimit = 7; commandLimit = 7;
@@ -1745,13 +1749,13 @@ public class UnitTypes implements ContentList{
inaccuracy = 3f; inaccuracy = 3f;
shotDelay = 3f; shotDelay = 3f;
bullet = new BasicBulletType(3.5f, 9){{ bullet = new BasicBulletType(3.5f, 10){{
width = 6.5f; width = 6.5f;
height = 11f; height = 11f;
lifetime = 70f; lifetime = 70f;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
smokeEffect = Fx.shootSmallSmoke; smokeEffect = Fx.shootSmallSmoke;
tileDamageMultiplier = 0.1f; tileDamageMultiplier = 0.03f;
homingPower = 0.04f; homingPower = 0.04f;
}}; }};
}}); }});

View File

@@ -1,339 +1,89 @@
package mindustry.content; package mindustry.content;
import arc.*;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.Texture.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*; import arc.util.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*; import mindustry.type.weather.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class Weathers implements ContentList{ public class Weathers implements ContentList{
public static Weather public static Weather
rain, rain,
snow, snow,
sandstorm, sandstorm,
sporestorm; sporestorm,
fog;
@Override @Override
public void load(){ public void load(){
snow = new Weather("snow"){ snow = new ParticleWeather("snow"){{
TextureRegion region; sizeMax = 13f;
float yspeed = 2f, xspeed = 0.25f, padding = 16f, size = 12f, density = 1200f; sizeMin = 2.6f;
density = 1200f;
attrs.set(Attribute.light, -0.15f);
}};
{ rain = new RainWeather("rain"){{
attrs.set(Attribute.light, -0.15f); attrs.set(Attribute.light, -0.2f);
} attrs.set(Attribute.water, 0.2f);
status = StatusEffects.wet;
}};
@Override sandstorm = new ParticleWeather("sandstorm"){{
public void load(){ color = noiseColor = Color.valueOf("f7cba4");
super.load(); drawNoise = true;
useWindVector = true;
sizeMax = 140f;
sizeMin = 70f;
minAlpha = 0f;
maxAlpha = 0.2f;
density = 1500f;
baseSpeed = 6.1f;
attrs.set(Attribute.light, -0.1f);
attrs.set(Attribute.water, -0.1f);
opacityMultiplier = 0.8f;
force = 0.1f;
}};
region = Core.atlas.find("circle-shadow"); sporestorm = new ParticleWeather("sporestorm"){{
} color = noiseColor = Color.valueOf("7457ce");
particleRegion = "circle";
drawNoise = true;
statusGround = false;
useWindVector = true;
sizeMax = 5f;
sizeMin = 2.5f;
minAlpha = 0.1f;
maxAlpha = 0.8f;
density = 2000f;
baseSpeed = 4.3f;
attrs.set(Attribute.spores, 1f);
attrs.set(Attribute.light, -0.15f);
status = StatusEffects.sporeSlowed;
opacityMultiplier = 0.85f;
force = 0.1f;
}};
@Override fog = new ParticleWeather("fog"){{
public void drawOver(WeatherState state){ duration = 15f * Time.toMinutes;
rand.setSeed(0); noiseLayers = 3;
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale()); noiseLayerSclM = 0.8f;
Tmp.r1.grow(padding); noiseLayerAlphaM = 0.7f;
Core.camera.bounds(Tmp.r2); noiseLayerSpeedM = 2f;
int total = (int)(Tmp.r1.area() / density * state.intensity()); noiseLayerSclM = 0.6f;
baseSpeed = 0.05f;
for(int i = 0; i < total; i++){ color = noiseColor = Color.grays(0.4f);
float scl = rand.random(0.5f, 1f); noiseScale = 1100f;
float scl2 = rand.random(0.5f, 1f); noisePath = "fog";
float sscl = rand.random(0.2f, 1f); drawParticles = false;
float x = (rand.random(0f, world.unitWidth()) + Time.time() * xspeed * scl2); drawNoise = true;
float y = (rand.random(0f, world.unitHeight()) - Time.time() * yspeed * scl); useWindVector = false;
xspeed = 1f;
x += Mathf.sin(y, rand.random(30f, 80f), rand.random(1f, 7f)); yspeed = 0.01f;
attrs.set(Attribute.light, -0.3f);
x -= Tmp.r1.x; attrs.set(Attribute.water, 0.05f);
y -= Tmp.r1.y; opacityMultiplier = 0.45f;
x = Mathf.mod(x, Tmp.r1.width); }};
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size * sscl).overlaps(Tmp.r2)){
Draw.rect(region, x, y, size * sscl, size * sscl);
}
}
}
};
rain = new Weather("rain"){
float yspeed = 5f, xspeed = 1.5f, padding = 16f, size = 40f, density = 1200f;
TextureRegion[] splashes = new TextureRegion[12];
{
attrs.set(Attribute.light, -0.2f);
attrs.set(Attribute.water, 0.2f);
status = StatusEffects.wet;
}
@Override
public void load(){
super.load();
for(int i = 0; i < splashes.length; i++){
splashes[i] = Core.atlas.find("splash-" + i);
}
}
@Override
public void drawOver(WeatherState state){
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * state.intensity());
Lines.stroke(0.75f);
float alpha = Draw.getColor().a;
Draw.color(Color.royal, Color.white, 0.3f);
for(int i = 0; i < total; i++){
float scl = rand.random(0.5f, 1f);
float scl2 = rand.random(0.5f, 1f);
float sscl = rand.random(0.2f, 1f);
float x = (rand.random(0f, world.unitWidth()) + Time.time() * xspeed * scl2);
float y = (rand.random(0f, world.unitHeight()) - Time.time() * yspeed * scl);
float tint = rand.random(1f) * alpha;
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size * sscl).overlaps(Tmp.r2)){
Draw.alpha(tint);
Lines.lineAngle(x, y, Angles.angle(xspeed * scl2, - yspeed * scl), size*sscl/2f);
}
}
}
@Override
public void drawUnder(WeatherState state){
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * state.intensity()) / 2;
Lines.stroke(0.75f);
float t = Time.time() / 22f;
for(int i = 0; i < total; i++){
float offset = rand.random(0f, 1f);
float time = t + offset;
int pos = (int)((time));
float life = time % 1f;
float x = (rand.random(0f, world.unitWidth()) + pos*953);
float y = (rand.random(0f, world.unitHeight()) - pos*453);
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, life * 4f).overlaps(Tmp.r2)){
Tile tile = world.tileWorld(x, y);
if(tile != null && tile.floor().liquidDrop == Liquids.water){
Draw.color(Tmp.c1.set(tile.floor().mapColor).mul(1.5f).a(state.opacity()));
Draw.rect(splashes[(int)(life * (splashes.length - 1))], x, y);
}else if(tile != null && tile.floor().liquidDrop == null && !tile.floor().solid){
Draw.color(Color.royal, Color.white, 0.3f);
Draw.alpha(Mathf.slope(life) * state.opacity());
float space = 45f;
for(int j : new int[]{-1, 1}){
Tmp.v1.trns(90f + j*space, 1f + 5f * life);
Lines.lineAngle(x + Tmp.v1.x, y + Tmp.v1.y, 90f + j*space, 3f * (1f - life));
}
}
}
}
}
};
sandstorm = new Weather("sandstorm"){
TextureRegion region;
float size = 140f, padding = size, invDensity = 1500f, baseSpeed = 6.1f;
float force = 0.4f * 0;
Color color = Color.valueOf("f7cba4");
Texture noise;
{
attrs.set(Attribute.light, -0.1f);
opacityMultiplier = 0.8f;
}
@Override
public void load(){
region = Core.atlas.find("circle-shadow");
noise = new Texture("sprites/noiseAlpha.png");
noise.setWrap(TextureWrap.repeat);
noise.setFilter(TextureFilter.linear);
}
@Override
public void dispose(){
noise.dispose();
}
@Override
public void update(WeatherState state){
float speed = force * state.intensity;
float windx = state.windVector.x * speed, windy = state.windVector.y * speed;
for(Unit unit : Groups.unit){
unit.impulse(windx, windy);
}
}
@Override
public void drawOver(WeatherState state){
Draw.tint(color);
float speed = baseSpeed * state.intensity;
float windx = state.windVector.x * speed, windy = state.windVector.y * speed;
float scale = 1f / 2000f;
float scroll = Time.time() * scale;
Tmp.tr1.texture = noise;
Core.camera.bounds(Tmp.r1);
Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale);
Tmp.tr1.scroll(-windx * scroll, windy * scroll);
Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
rand.setSeed(0);
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / invDensity * state.intensity());
Draw.tint(color);
float baseAlpha = Draw.getColor().a;
for(int i = 0; i < total; i++){
float scl = rand.random(0.5f, 1f);
float scl2 = rand.random(0.5f, 1f);
float sscl = rand.random(0.5f, 1f);
float x = (rand.random(0f, world.unitWidth()) + Time.time() * windx * scl2);
float y = (rand.random(0f, world.unitHeight()) + Time.time() * windy * scl);
float alpha = rand.random(0.2f);
x += Mathf.sin(y, rand.random(30f, 80f), rand.random(1f, 7f));
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size * sscl).overlaps(Tmp.r2)){
Draw.alpha(alpha * baseAlpha);
Draw.rect(region, x, y, size * sscl, size * sscl);
}
}
}
};
sporestorm = new Weather("sporestorm"){
TextureRegion region;
float size = 5f, padding = size, invDensity = 2000f, baseSpeed = 4.3f, force = 0.28f * 0;
Color color = Color.valueOf("7457ce");
Texture noise;
{
attrs.set(Attribute.spores, 1f);
attrs.set(Attribute.light, -0.15f);
status = StatusEffects.sporeSlowed;
statusGround = false;
opacityMultiplier = 0.85f;
}
@Override
public void load(){
region = Core.atlas.find("circle-shadow");
noise = new Texture("sprites/noiseAlpha.png");
noise.setWrap(TextureWrap.repeat);
noise.setFilter(TextureFilter.linear);
}
@Override
public void update(WeatherState state){
float speed = force * state.intensity;
float windx = state.windVector.x * speed, windy = state.windVector.y * speed;
for(Unit unit : Groups.unit){
unit.impulse(windx, windy);
}
}
@Override
public void dispose(){
noise.dispose();
}
@Override
public void drawOver(WeatherState state){
Draw.alpha(state.opacity * 0.8f);
Draw.tint(color);
float speed = baseSpeed * state.intensity;
float windx = state.windVector.x * speed, windy = state.windVector.y * speed;
float scale = 1f / 2000f;
float scroll = Time.time() * scale;
Tmp.tr1.texture = noise;
Core.camera.bounds(Tmp.r1);
Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale);
Tmp.tr1.scroll(-windx * scroll, windy * scroll);
Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
rand.setSeed(0);
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / invDensity * state.intensity());
Draw.tint(color);
float baseAlpha = state.opacity;
Draw.alpha(baseAlpha);
for(int i = 0; i < total; i++){
float scl = rand.random(0.5f, 1f);
float scl2 = rand.random(0.5f, 1f);
float sscl = rand.random(0.5f, 1f);
float x = (rand.random(0f, world.unitWidth()) + Time.time() * windx * scl2);
float y = (rand.random(0f, world.unitHeight()) + Time.time() * windy * scl);
float alpha = rand.random(0.1f, 0.8f);
x += Mathf.sin(y, rand.random(30f, 80f), rand.random(1f, 7f));
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size * sscl).overlaps(Tmp.r2)){
Draw.alpha(alpha * baseAlpha);
Fill.circle(x, y, size * sscl / 2f);
}
}
}
};
} }
} }

View File

@@ -23,7 +23,7 @@ public class GameState{
/** The current game rules. */ /** The current game rules. */
public Rules rules = new Rules(); public Rules rules = new Rules();
/** Statistics for this save/game. Displayed after game over. */ /** Statistics for this save/game. Displayed after game over. */
public Stats stats = new Stats(); public GameStats stats = new GameStats();
/** Global attributes of the environment, calculated by weather. */ /** Global attributes of the environment, calculated by weather. */
public Attributes envAttrs = new Attributes(); public Attributes envAttrs = new Attributes();
/** Sector information. Only valid in the campaign. */ /** Sector information. Only valid in the campaign. */

View File

@@ -310,7 +310,7 @@ public class World{
//TODO bad code //TODO bad code
boolean hasSnow = floors[0].name.contains("ice") || floors[0].name.contains("snow"); boolean hasSnow = floors[0].name.contains("ice") || floors[0].name.contains("snow");
boolean hasRain = !hasSnow && floors[0].name.contains("water"); boolean hasRain = !hasSnow && content.contains(Liquids.water) && !floors[0].name.contains("sand");
boolean hasDesert = !hasSnow && !hasRain && floors[0].name.contains("sand"); boolean hasDesert = !hasSnow && !hasRain && floors[0].name.contains("sand");
boolean hasSpores = floors[0].name.contains("spore") || floors[0].name.contains("moss") || floors[0].name.contains("tainted"); boolean hasSpores = floors[0].name.contains("spore") || floors[0].name.contains("moss") || floors[0].name.contains("tainted");
@@ -320,6 +320,7 @@ public class World{
if(hasRain){ if(hasRain){
state.rules.weather.add(new WeatherEntry(Weathers.rain)); state.rules.weather.add(new WeatherEntry(Weathers.rain));
state.rules.weather.add(new WeatherEntry(Weathers.fog));
} }
if(hasDesert){ if(hasDesert){

View File

@@ -10,11 +10,14 @@ import mindustry.game.EventType.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
/** Base interface for an unlockable content type. */ /** Base interface for an unlockable content type. */
public abstract class UnlockableContent extends MappableContent{ public abstract class UnlockableContent extends MappableContent{
/** Stat storage for this content. Initialized on demand. */
public Stats stats = new Stats();
/** Localized, formal name. Never null. Set to internal name if not found in bundle. */ /** Localized, formal name. Never null. Set to internal name if not found in bundle. */
public String localizedName; public String localizedName;
/** Localized description. May be null. */ /** Localized description. May be null. */
@@ -38,6 +41,18 @@ public abstract class UnlockableContent extends MappableContent{
return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName()); return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName());
} }
/** Checks stat initialization state. Call before displaying stats. */
public void checkStats(){
if(!stats.intialized){
setStats();
stats.intialized = true;
}
}
/** Intializes stats on demand. Should only be called once. Only called before something is displayed. */
public void setStats(){
}
/** Generate any special icons for this content. Called asynchronously.*/ /** Generate any special icons for this content. Called asynchronously.*/
@CallSuper @CallSuper
public void createIcons(MultiPacker packer){ public void createIcons(MultiPacker packer){
@@ -73,7 +88,9 @@ public abstract class UnlockableContent extends MappableContent{
} }
/** This should show all necessary info about this content in the specified table. */ /** This should show all necessary info about this content in the specified table. */
public abstract void displayInfo(Table table); public void display(Table table){
}
/** Called when this content is unlocked. Use this to unlock other related content. */ /** Called when this content is unlocked. Use this to unlock other related content. */
public void onUnlock(){ public void onUnlock(){

View File

@@ -98,7 +98,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
boolean onLiquid = tile.floor().isLiquid; boolean onLiquid = tile.floor().isLiquid;
float f = Mathf.clamp(amount / (maxLiquid / 1.5f)); float f = Mathf.clamp(amount / (maxLiquid / 1.5f));
float smag = onLiquid ? 0.8f : 0f; float smag = onLiquid ? 0.8f : 0f;
float sscl = 20f; float sscl = 25f;
Draw.color(tmp.set(liquid.color).shiftValue(-0.05f)); Draw.color(tmp.set(liquid.color).shiftValue(-0.05f));
Fill.circle(x + Mathf.sin(Time.time() + seeds * 532, sscl, smag), y + Mathf.sin(Time.time() + seeds * 53, sscl, smag), f * 8f); Fill.circle(x + Mathf.sin(Time.time() + seeds * 532, sscl, smag), y + Mathf.sin(Time.time() + seeds * 53, sscl, smag), f * 8f);

View File

@@ -89,7 +89,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
case rotation -> rotation; case rotation -> rotation;
case health -> health; case health -> health;
case maxHealth -> maxHealth; case maxHealth -> maxHealth;
case ammo -> state.rules.unitAmmo ? type.ammoCapacity : ammo; case ammo -> !state.rules.unitAmmo ? type.ammoCapacity : ammo;
case ammoCapacity -> type.ammoCapacity; case ammoCapacity -> type.ammoCapacity;
case x -> World.conv(x); case x -> World.conv(x);
case y -> World.conv(y); case y -> World.conv(y);

View File

@@ -6,7 +6,7 @@ import mindustry.type.*;
//TODO more stats: //TODO more stats:
//- units constructed //- units constructed
public class Stats{ public class GameStats{
/** Total items delivered to global resoure counter. Campaign only. */ /** Total items delivered to global resoure counter. Campaign only. */
public ObjectIntMap<Item> itemsDelivered = new ObjectIntMap<>(); public ObjectIntMap<Item> itemsDelivered = new ObjectIntMap<>();
/** Enemy (red team) units destroyed. */ /** Enemy (red team) units destroyed. */

View File

@@ -187,7 +187,7 @@ public class Universe{
} }
//add production, making sure that it's capped //add production, making sure that it's capped
sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * seconds * scl), sector.info.storageCapacity - sector.info.items.get(item)))); sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item))));
sector.saveInfo(); sector.saveInfo();
} }

View File

@@ -352,6 +352,8 @@ public class DesktopInput extends InputHandler{
table.button(Icon.map, Styles.clearPartiali, () -> { table.button(Icon.map, Styles.clearPartiali, () -> {
ui.planet.show(); ui.planet.show();
}).visible(() -> state.isCampaign()).tooltip("@planetmap"); }).visible(() -> state.isCampaign()).tooltip("@planetmap");
table.add();
} }
void pollInput(){ void pollInput(){

View File

@@ -105,7 +105,7 @@ public abstract class SaveVersion extends SaveFileReader{
state.wave = map.getInt("wave"); state.wave = map.getInt("wave");
state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing); state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing);
state.stats = JsonIO.read(Stats.class, map.get("stats", "{}")); state.stats = JsonIO.read(GameStats.class, map.get("stats", "{}"));
state.rules = JsonIO.read(Rules.class, map.get("rules", "{}")); state.rules = JsonIO.read(Rules.class, map.get("rules", "{}"));
if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get(); if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get();
lastReadBuild = map.getInt("build", -1); lastReadBuild = map.getInt("build", -1);

View File

@@ -190,6 +190,7 @@ public class ContentParser{
"mindustry.world.blocks.defense", "mindustry.world.blocks.defense",
"mindustry.world.blocks.defense.turrets", "mindustry.world.blocks.defense.turrets",
"mindustry.world.blocks.distribution", "mindustry.world.blocks.distribution",
"mindustry.world.blocks.environment",
"mindustry.world.blocks.liquid", "mindustry.world.blocks.liquid",
"mindustry.world.blocks.logic", "mindustry.world.blocks.logic",
"mindustry.world.blocks.power", "mindustry.world.blocks.power",
@@ -302,6 +303,20 @@ public class ContentParser{
return unit; return unit;
}, },
ContentType.weather, (TypeParser<Weather>)(mod, name, value) -> {
Weather item;
if(locate(ContentType.weather, name) != null){
item = locate(ContentType.weather, name);
readBundle(ContentType.weather, name, value);
}else{
readBundle(ContentType.weather, name, value);
Class<? extends Weather> type = resolve(getType(value), "mindustry.type.weather");
item = make(type);
}
currentContent = item;
read(() -> readFields(item, value));
return item;
},
ContentType.item, parser(ContentType.item, Item::new), ContentType.item, parser(ContentType.item, Item::new),
ContentType.liquid, parser(ContentType.liquid, Liquid::new) ContentType.liquid, parser(ContentType.liquid, Liquid::new)
//ContentType.sector, parser(ContentType.sector, SectorPreset::new) //ContentType.sector, parser(ContentType.sector, SectorPreset::new)

View File

@@ -41,7 +41,7 @@ public class AmmoTypes implements ContentList{
@Override @Override
public void resupply(Unit unit){ public void resupply(Unit unit){
float range = unit.hitSize + 60f; float range = unit.hitSize + 60f;
Tile closest = Vars.indexer.findClosestFlag(unit.x, unit.y, unit.team, BlockFlag.powerRes); Tile closest = Vars.indexer.findClosestFlag(unit.x, unit.y, unit.team, BlockFlag.battery);
if(closest != null && closest.build != null && unit.within(closest.build, range) && closest.build.power != null){ if(closest != null && closest.build != null && unit.within(closest.build, range) && closest.build.power != null){
var build = closest.build; var build = closest.build;

View File

@@ -1,16 +1,15 @@
package mindustry.type; package mindustry.type;
import arc.graphics.*; import arc.graphics.*;
import arc.scene.ui.layout.*;
import arc.struct.*; import arc.struct.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.ui.*;
import mindustry.world.blocks.environment.*; import mindustry.world.blocks.environment.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class Item extends UnlockableContent{ public class Item extends UnlockableContent{
public final Color color; public Color color;
/** how explosive this item is. */ /** how explosive this item is. */
public float explosiveness = 0f; public float explosiveness = 0f;
@@ -36,8 +35,10 @@ public class Item extends UnlockableContent{
} }
@Override @Override
public void displayInfo(Table table){ public void setStats(){
ContentDisplay.displayItem(table, this); stats.addPercent(Stat.explosiveness, explosiveness);
stats.addPercent(Stat.flammability, flammability);
stats.addPercent(Stat.radioactivity, radioactivity);
} }
@Override @Override

View File

@@ -1,15 +1,14 @@
package mindustry.type; package mindustry.type;
import arc.graphics.*; import arc.graphics.*;
import arc.scene.ui.layout.*;
import arc.util.*; import arc.util.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.ui.*; import mindustry.world.meta.*;
public class Liquid extends UnlockableContent{ public class Liquid extends UnlockableContent{
/** Color used in pipes and on the ground. */ /** Color used in pipes and on the ground. */
public final Color color; public Color color;
/** Color used in bars. */ /** Color used in bars. */
public @Nullable Color barColor; public @Nullable Color barColor;
/** Color used to draw lights. Note that the alpha channel is used to dictate brightness. */ /** Color used to draw lights. Note that the alpha channel is used to dictate brightness. */
@@ -46,8 +45,12 @@ public class Liquid extends UnlockableContent{
} }
@Override @Override
public void displayInfo(Table table){ public void setStats(){
ContentDisplay.displayLiquid(table, this); stats.addPercent(Stat.explosiveness, explosiveness);
stats.addPercent(Stat.flammability, flammability);
stats.addPercent(Stat.temperature, temperature);
stats.addPercent(Stat.heatCapacity, heatCapacity);
stats.addPercent(Stat.viscosity, viscosity);
} }
@Override @Override

View File

@@ -5,7 +5,6 @@ import arc.func.*;
import arc.graphics.*; import arc.graphics.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.scene.ui.layout.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import arc.util.noise.*; import arc.util.noise.*;
@@ -259,11 +258,6 @@ public class Planet extends UnlockableContent{
return true; return true;
} }
@Override
public void displayInfo(Table table){
}
@Override @Override
public ContentType getContentType(){ public ContentType getContentType(){
return ContentType.planet; return ContentType.planet;

View File

@@ -2,7 +2,6 @@ package mindustry.type;
import arc.func.*; import arc.func.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.scene.ui.layout.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.gen.*; import mindustry.gen.*;
@@ -39,11 +38,6 @@ public class SectorPreset extends UnlockableContent{
return true; return true;
} }
//neither of these are implemented, as zones are not displayed in a normal fashion... yet
@Override
public void displayInfo(Table table){
}
@Override @Override
public ContentType getContentType(){ public ContentType getContentType(){
return ContentType.sector; return ContentType.sector;

View File

@@ -28,6 +28,8 @@ import mindustry.world.blocks.environment.*;
import mindustry.world.blocks.payloads.*; import mindustry.world.blocks.payloads.*;
import mindustry.world.blocks.units.*; import mindustry.world.blocks.units.*;
import mindustry.world.consumers.*; import mindustry.world.consumers.*;
import mindustry.world.meta.*;
import mindustry.world.meta.values.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -41,7 +43,7 @@ public class UnitType extends UnlockableContent{
public Prov<? extends UnitController> defaultController = () -> !flying ? new GroundAI() : new FlyingAI(); public Prov<? extends UnitController> defaultController = () -> !flying ? new GroundAI() : new FlyingAI();
public float speed = 1.1f, boostMultiplier = 1f, rotateSpeed = 5f, baseRotateSpeed = 5f; public float speed = 1.1f, boostMultiplier = 1f, rotateSpeed = 5f, baseRotateSpeed = 5f;
public float drag = 0.3f, accel = 0.5f, landShake = 0f, rippleScale = 1f, fallSpeed = 0.018f; public float drag = 0.3f, accel = 0.5f, landShake = 0f, rippleScale = 1f, fallSpeed = 0.018f;
public float health = 200f, range = -1, armor = 0f; public float health = 200f, range = -1, armor = 0f, maxRange = -1f;
public float crashDamageMultiplier = 1f; public float crashDamageMultiplier = 1f;
public boolean targetAir = true, targetGround = true; public boolean targetAir = true, targetGround = true;
public boolean faceTarget = true, rotateShooting = true, isCounted = true, lowAltitude = false; public boolean faceTarget = true, rotateShooting = true, isCounted = true, lowAltitude = false;
@@ -58,6 +60,7 @@ public class UnitType extends UnlockableContent{
public Effect fallEffect = Fx.fallSmoke; public Effect fallEffect = Fx.fallSmoke;
public Effect fallThrusterEffect = Fx.fallSmoke; public Effect fallThrusterEffect = Fx.fallSmoke;
public Seq<Ability> abilities = new Seq<>(); public Seq<Ability> abilities = new Seq<>();
public BlockFlag targetFlag = BlockFlag.generator;
public int legCount = 4, legGroupSize = 2; public int legCount = 4, legGroupSize = 2;
public float legLength = 10f, legSpeed = 0.1f, legTrns = 1f, legBaseOffset = 0f, legMoveSpace = 1f, legExtension = 0, legPairOffset = 0, legLengthScl = 1f, kinematicScl = 1f, maxStretch = 1.75f; public float legLength = 10f, legSpeed = 0.1f, legTrns = 1f, legBaseOffset = 0f, legMoveSpace = 1f, legExtension = 0, legPairOffset = 0, legLengthScl = 1f, kinematicScl = 1f, maxStretch = 1.75f;
@@ -156,11 +159,11 @@ public class UnitType extends UnlockableContent{
table.table(bars -> { table.table(bars -> {
bars.defaults().growX().height(20f).pad(4); bars.defaults().growX().height(20f).pad(4);
bars.add(new Bar("blocks.health", Pal.health, unit::healthf).blink(Color.white)); bars.add(new Bar("stat.health", Pal.health, unit::healthf).blink(Color.white));
bars.row(); bars.row();
if(state.rules.unitAmmo){ if(state.rules.unitAmmo){
bars.add(new Bar(ammoType.icon + " " + Core.bundle.get("blocks.ammo"), ammoType.barColor, () -> unit.ammo / ammoCapacity)); bars.add(new Bar(ammoType.icon + " " + Core.bundle.get("stat.ammo"), ammoType.barColor, () -> unit.ammo / ammoCapacity));
bars.row(); bars.row();
} }
}).growX(); }).growX();
@@ -188,10 +191,21 @@ public class UnitType extends UnlockableContent{
} }
} }
@Override @Override
public void displayInfo(Table table){ public void setStats(){
ContentDisplay.displayUnit(table, this); Unit inst = constructor.get();
stats.add(Stat.health, health);
stats.add(Stat.speed, speed);
stats.add(Stat.itemCapacity, health);
stats.add(Stat.range, (int)(maxRange / tilesize), StatUnit.blocks);
//TODO abilities, maybe try something like DPS
if(inst instanceof Minerc && mineTier >= 1){
stats.addPercent(Stat.mineSpeed, mineSpeed);
stats.add(Stat.mineTier, new BlockFilterValue(b -> b instanceof Floor f && f.itemDrop != null && f.itemDrop.hardness <= mineTier && !f.playerUnmineable));
}
if(inst instanceof Builderc) stats.addPercent(Stat.buildSpeed, buildSpeed);
} }
@CallSuper @CallSuper
@@ -217,8 +231,10 @@ public class UnitType extends UnlockableContent{
//set up default range //set up default range
if(range < 0){ if(range < 0){
range = Float.MAX_VALUE; range = Float.MAX_VALUE;
maxRange = 0f;
for(Weapon weapon : weapons){ for(Weapon weapon : weapons){
range = Math.min(range, weapon.bullet.range() + hitSize /2f); range = Math.min(range, weapon.bullet.range() + hitSize /2f);
maxRange = Math.max(maxRange, weapon.bullet.range() + hitSize /2f);
} }
} }
@@ -322,7 +338,7 @@ public class UnitType extends UnlockableContent{
if(stacks != null){ if(stacks != null){
ItemStack[] out = new ItemStack[stacks.length]; ItemStack[] out = new ItemStack[stacks.length];
for(int i = 0; i < out.length; i++){ for(int i = 0; i < out.length; i++){
out[i] = new ItemStack(stacks[i].item, UI.roundAmount((int)(Math.pow(stacks[i].amount, 1.1) * 50))); out[i] = new ItemStack(stacks[i].item, UI.roundAmount((int)(Math.pow(stacks[i].amount, 1) * 50)));
} }
return out; return out;

View File

@@ -1,16 +1,18 @@
package mindustry.type; package mindustry.type;
import arc.*;
import arc.func.*; import arc.func.*;
import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.scene.ui.layout.*;
import arc.util.*; import arc.util.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.world.*;
import mindustry.world.blocks.*; import mindustry.world.blocks.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -91,9 +93,136 @@ public abstract class Weather extends UnlockableContent{
} }
@Override public void drawParticles(TextureRegion region, Color color,
public void displayInfo(Table table){ float sizeMin, float sizeMax,
//do not float density, float intensity, float opacity,
float windx, float windy,
float minAlpha, float maxAlpha,
float sinSclMin, float sinSclMax, float sinMagMin, float sinMagMax){
rand.setSeed(0);
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(sizeMax * 1.5f);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * intensity);
Draw.color(color, opacity);
for(int i = 0; i < total; i++){
float scl = rand.random(0.5f, 1f);
float scl2 = rand.random(0.5f, 1f);
float size = rand.random(sizeMin, sizeMax);
float x = (rand.random(0f, world.unitWidth()) + Time.time() * windx * scl2);
float y = (rand.random(0f, world.unitHeight()) + Time.time() * windy * scl);
float alpha = rand.random(minAlpha, maxAlpha);
x += Mathf.sin(y, rand.random(sinSclMin, sinSclMax), rand.random(sinMagMin, sinMagMax));
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size).overlaps(Tmp.r2)){
Draw.alpha(alpha * opacity);
Draw.rect(region, x, y, size, size);
}
}
}
public void drawRain(float sizeMin, float sizeMax, float xspeed, float yspeed, float density, float intensity, float stroke, Color color){
float padding = sizeMax*0.9f;
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * intensity);
Lines.stroke(stroke);
float alpha = Draw.getColor().a;
Draw.color(color);
for(int i = 0; i < total; i++){
float scl = rand.random(0.5f, 1f);
float scl2 = rand.random(0.5f, 1f);
float size = rand.random(sizeMin, sizeMax);
float x = (rand.random(0f, world.unitWidth()) + Time.time() * xspeed * scl2);
float y = (rand.random(0f, world.unitHeight()) - Time.time() * yspeed * scl);
float tint = rand.random(1f) * alpha;
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, size).overlaps(Tmp.r2)){
Draw.alpha(tint);
Lines.lineAngle(x, y, Angles.angle(xspeed * scl2, - yspeed * scl), size/2f);
}
}
}
public void drawSplashes(TextureRegion[] splashes, float padding, float density, float intensity, float opacity, float timeScale, float stroke, Color color, Liquid splasher){
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * intensity) / 2;
Lines.stroke(stroke);
float t = Time.time() / timeScale;
for(int i = 0; i < total; i++){
float offset = rand.random(0f, 1f);
float time = t + offset;
int pos = (int)((time));
float life = time % 1f;
float x = (rand.random(0f, world.unitWidth()) + pos*953);
float y = (rand.random(0f, world.unitHeight()) - pos*453);
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, life * 4f).overlaps(Tmp.r2)){
Tile tile = world.tileWorld(x, y);
//only create splashes on specific liquid.
if(tile != null && tile.floor().liquidDrop == splasher){
Draw.color(Tmp.c1.set(tile.floor().mapColor).mul(1.5f).a(opacity));
Draw.rect(splashes[(int)(life * (splashes.length - 1))], x, y);
}else if(tile != null && tile.floor().liquidDrop == null && !tile.floor().solid){
Draw.color(color);
Draw.alpha(Mathf.slope(life) * opacity);
float space = 45f;
for(int j : new int[]{-1, 1}){
Tmp.v1.trns(90f + j*space, 1f + 5f * life);
Lines.lineAngle(x + Tmp.v1.x, y + Tmp.v1.y, 90f + j*space, 3f * (1f - life));
}
}
}
}
}
public void drawNoise(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy, float offset){
Draw.alpha(opacity);
Draw.tint(color);
float speed = baseSpeed * intensity;
float windx = vwindx * speed, windy = vwindy * speed;
float scale = 1f / noisescl;
float scroll = Time.time() * scale + offset;
Tmp.tr1.texture = noise;
Core.camera.bounds(Tmp.r1);
Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale);
Tmp.tr1.scroll(-windx * scroll, -windy * scroll);
Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
} }
@Override @Override

View File

@@ -0,0 +1,90 @@
package mindustry.type.weather;
import arc.*;
import arc.graphics.*;
import arc.graphics.Texture.*;
import arc.graphics.g2d.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.type.*;
public class ParticleWeather extends Weather{
public String particleRegion = "circle-shadow";
public Color color = Color.white.cpy();
public TextureRegion region;
public float yspeed = -2f, xspeed = 0.25f, padding = 16f, sizeMin = 2.4f, sizeMax = 12f, density = 1200f, minAlpha = 1f, maxAlpha = 1f, force = 0, noiseScale = 2000f, baseSpeed = 6.1f;
public float sinSclMin = 30f, sinSclMax = 80f, sinMagMin = 1f, sinMagMax = 7f;
public Color noiseColor = color;
public boolean drawNoise = false, drawParticles = true, useWindVector = false;
public int noiseLayers = 1;
public float noiseLayerSpeedM = 1.1f, noiseLayerAlphaM = 0.8f, noiseLayerSclM = 0.99f, noiseLayerColorM = 1f;
public String noisePath = "noiseAlpha";
public @Nullable Texture noise;
public ParticleWeather(String name){
super(name);
}
@Override
public void load(){
super.load();
region = Core.atlas.find(particleRegion);
//load noise texture
//TODO mod support
if(drawNoise){
Core.assets.load("sprites/" + noisePath + ".png", Texture.class);
}
}
@Override
public void update(WeatherState state){
float speed = force * state.intensity;
if(speed > 0.001f){
float windx = state.windVector.x * speed, windy = state.windVector.y * speed;
for(Unit unit : Groups.unit){
unit.impulse(windx, windy);
}
}
}
@Override
public void drawOver(WeatherState state){
float windx, windy;
if(useWindVector){
float speed = baseSpeed * state.intensity;
windx = state.windVector.x * speed;
windy = state.windVector.y * speed;
}else{
windx = this.xspeed;
windy = this.yspeed;
}
if(drawNoise){
if(noise == null){
noise = Core.assets.get("sprites/" + noisePath + ".png", Texture.class);
noise.setWrap(TextureWrap.repeat);
noise.setFilter(TextureFilter.linear);
}
float sspeed = 1f, sscl = 1f, salpha = 1f, offset = 0f;
Color col = Tmp.c1.set(noiseColor);
for(int i = 0; i < noiseLayers; i++){
drawNoise(noise, noiseColor, noiseScale * sscl, state.opacity * salpha * opacityMultiplier, baseSpeed * sspeed, state.intensity, windx, windy, offset);
sspeed *= noiseLayerSpeedM;
salpha *= noiseLayerAlphaM;
sscl *= noiseLayerSclM;
offset += 0.29f;
col.mul(noiseLayerColorM);
}
}
if(drawParticles){
drawParticles(region, color, sizeMin, sizeMax, density, state.intensity, state.opacity, windx, windy, minAlpha, maxAlpha, sinSclMin, sinSclMax, sinMagMin, sinMagMax);
}
}
}

View File

@@ -0,0 +1,38 @@
package mindustry.type.weather;
import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import mindustry.content.*;
import mindustry.gen.*;
import mindustry.type.*;
public class RainWeather extends Weather{
public float yspeed = 5f, xspeed = 1.5f, padding = 16f, density = 1200f, stroke = 0.75f, sizeMin = 8f, sizeMax = 40f, splashTimeScale = 22f;
public Liquid liquid = Liquids.water;
public TextureRegion[] splashes = new TextureRegion[12];
public Color color = Color.valueOf("7a95eaff");
public RainWeather(String name){
super(name);
}
@Override
public void load(){
super.load();
for(int i = 0; i < splashes.length; i++){
splashes[i] = Core.atlas.find("splash-" + i);
}
}
@Override
public void drawOver(WeatherState state){
drawRain(sizeMin, sizeMax, xspeed, yspeed, density, state.intensity, stroke, color);
}
@Override
public void drawUnder(WeatherState state){
drawSplashes(splashes, sizeMax, density, state.intensity, state.opacity, splashTimeScale, stroke, color, liquid);
}
}

View File

@@ -1,165 +0,0 @@
package mindustry.ui;
import arc.*;
import arc.graphics.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.meta.*;
public class ContentDisplay{
public static void displayBlock(Table table, Block block){
table.table(title -> {
int size = 8 * 6;
title.image(block.icon(Cicon.xlarge)).size(size);
title.add("[accent]" + block.localizedName).padLeft(5);
});
table.row();
table.image().height(3).color(Color.lightGray).pad(8).padLeft(0).padRight(0).fillX();
table.row();
if(block.description != null){
table.add(block.displayDescription()).padLeft(5).padRight(5).width(400f).wrap().fillX();
table.row();
table.image().height(3).color(Color.lightGray).pad(8).padLeft(0).padRight(0).fillX();
table.row();
}
BlockStats stats = block.stats;
for(StatCategory cat : stats.toMap().keys()){
OrderedMap<BlockStat, Seq<StatValue>> map = stats.toMap().get(cat);
if(map.size == 0) continue;
table.add("@category." + cat.name()).color(Pal.accent).fillX();
table.row();
for(BlockStat stat : map.keys()){
table.table(inset -> {
inset.left();
inset.add("[lightgray]" + stat.localized() + ":[] ").left();
Seq<StatValue> arr = map.get(stat);
for(StatValue value : arr){
value.display(inset);
inset.add().size(10f);
}
}).fillX().padLeft(10);
table.row();
}
}
}
public static void displayItem(Table table, Item item){
table.table(title -> {
title.image(item.icon(Cicon.xlarge)).size(8 * 6);
title.add("[accent]" + item.localizedName).padLeft(5);
});
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
if(item.description != null){
table.add(item.displayDescription()).padLeft(5).padRight(5).width(400f).wrap().fillX();
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
}
table.left().defaults().fillX();
table.add(Core.bundle.format("item.explosiveness", (int)(item.explosiveness * 100)));
table.row();
table.add(Core.bundle.format("item.flammability", (int)(item.flammability * 100)));
table.row();
table.add(Core.bundle.format("item.radioactivity", (int)(item.radioactivity * 100)));
table.row();
}
public static void displayLiquid(Table table, Liquid liquid){
table.table(title -> {
title.image(liquid.icon(Cicon.xlarge)).size(8 * 6);
title.add("[accent]" + liquid.localizedName).padLeft(5);
});
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
if(liquid.description != null){
table.add(liquid.displayDescription()).padLeft(5).padRight(5).width(400f).wrap().fillX();
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
}
table.left().defaults().fillX();
table.add(Core.bundle.format("item.explosiveness", (int)(liquid.explosiveness * 100)));
table.row();
table.add(Core.bundle.format("item.flammability", (int)(liquid.flammability * 100)));
table.row();
table.add(Core.bundle.format("liquid.heatcapacity", (int)(liquid.heatCapacity * 100)));
table.row();
table.add(Core.bundle.format("liquid.temperature", (int)(liquid.temperature * 100)));
table.row();
table.add(Core.bundle.format("liquid.viscosity", (int)(liquid.viscosity * 100)));
table.row();
}
public static void displayUnit(Table table, UnitType unit){
table.table(title -> {
title.image(unit.icon(Cicon.xlarge)).size(8 * 6).scaling(Scaling.fit);
title.add("[accent]" + unit.localizedName).padLeft(5);
});
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
if(unit.description != null){
table.add(unit.displayDescription()).padLeft(5).padRight(5).width(400f).wrap().fillX();
table.row();
table.image().height(3).color(Color.lightGray).pad(15).padLeft(0).padRight(0).fillX();
table.row();
}
table.left().defaults().fillX();
Unit inst = unit.constructor.get();
//TODO more stats
table.add(Core.bundle.format("unit.health", unit.health)).row();
table.add(Core.bundle.format("unit.speed", Strings.fixed(unit.speed, 1))).row();
table.add(Core.bundle.format("unit.itemcapacity", unit.itemCapacity)).row();
if(inst instanceof Minerc) table.add(Core.bundle.format("unit.minespeed", (int)(unit.mineSpeed * 100f))).row();
if(inst instanceof Builderc) table.add(Core.bundle.format("unit.buildspeed", (int)(unit.buildSpeed * 100f))).row();
table.row();
}
}

View File

@@ -1,8 +1,14 @@
package mindustry.ui.dialogs; package mindustry.ui.dialogs;
import arc.graphics.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import mindustry.world.meta.*;
public class ContentInfoDialog extends BaseDialog{ public class ContentInfoDialog extends BaseDialog{
@@ -18,11 +24,62 @@ public class ContentInfoDialog extends BaseDialog{
Table table = new Table(); Table table = new Table();
table.margin(10); table.margin(10);
content.displayInfo(table); //initialize stats if they haven't been yet
content.checkStats();
table.table(title1 -> {
int size = 8 * 6;
title1.image(content.icon(Cicon.xlarge)).size(size).scaling(Scaling.fit);
title1.add("[accent]" + content.localizedName).padLeft(5);
});
table.row();
table.image().height(3).color(Color.lightGray).pad(8).padLeft(0).padRight(0).fillX();
table.row();
if(content.description != null){
table.add(content.displayDescription()).padLeft(5).padRight(5).width(400f).wrap().fillX();
table.row();
table.image().height(3).color(Color.lightGray).pad(8).padLeft(0).padRight(0).fillX();
table.row();
}
Stats stats = content.stats;
for(StatCat cat : stats.toMap().keys()){
OrderedMap<Stat, Seq<StatValue>> map = stats.toMap().get(cat);
if(map.size == 0) continue;
//TODO check
if(stats.useCategories){
table.add("@category." + cat.name()).color(Pal.accent).fillX();
table.row();
}
for(Stat stat : map.keys()){
table.table(inset -> {
inset.left();
inset.add("[lightgray]" + stat.localized() + ":[] ").left();
Seq<StatValue> arr = map.get(stat);
for(StatValue value : arr){
value.display(inset);
inset.add().size(10f);
}
}).fillX().padLeft(10);
table.row();
}
}
ScrollPane pane = new ScrollPane(table); ScrollPane pane = new ScrollPane(table);
cont.add(pane); cont.add(pane);
show(); show();
} }
} }

View File

@@ -2,7 +2,7 @@ package mindustry.ui.dialogs;
import arc.*; import arc.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.game.Stats.*; import mindustry.game.GameStats.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;

View File

@@ -457,18 +457,23 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
if(mode == look && !sector.hasBase()){ if(mode == look && !sector.hasBase()){
shouldHide = false; shouldHide = false;
Sector from = findLauncher(sector); Sector from = findLauncher(sector);
CoreBlock block = from.info.bestCoreType instanceof CoreBlock b ? b : (CoreBlock)Blocks.coreShard; if(from == null){
//free launch.
control.playSector(sector);
}else{
CoreBlock block = from.info.bestCoreType instanceof CoreBlock b ? b : (CoreBlock)Blocks.coreShard;
loadouts.show(block, from, () -> { loadouts.show(block, from, () -> {
from.removeItems(universe.getLastLoadout().requirements()); from.removeItems(universe.getLastLoadout().requirements());
from.removeItems(universe.getLaunchResources()); from.removeItems(universe.getLaunchResources());
launching = true; launching = true;
zoom = 0.5f; zoom = 0.5f;
ui.hudfrag.showLaunchDirect(); ui.hudfrag.showLaunchDirect();
Time.runTask(launchDuration, () -> control.playSector(from, sector)); Time.runTask(launchDuration, () -> control.playSector(from, sector));
}); });
}
}else if(mode == select){ }else if(mode == select){
listener.get(sector); listener.get(sector);
}else{ }else{

View File

@@ -51,7 +51,6 @@ public class Block extends UnlockableContent{
public float liquidCapacity = 10f; public float liquidCapacity = 10f;
public float liquidPressure = 1f; public float liquidPressure = 1f;
public final BlockStats stats = new BlockStats();
public final BlockBars bars = new BlockBars(); public final BlockBars bars = new BlockBars();
public final Consumers consumes = new Consumers(); public final Consumers consumes = new Consumers();
@@ -321,27 +320,30 @@ public class Block extends UnlockableContent{
return update || destructible; return update || destructible;
} }
@Override
public void setStats(){ public void setStats(){
stats.add(BlockStat.size, "@x@", size, size); super.setStats();
stats.add(BlockStat.health, health, StatUnit.none);
stats.add(Stat.size, "@x@", size, size);
stats.add(Stat.health, health, StatUnit.none);
if(canBeBuilt()){ if(canBeBuilt()){
stats.add(BlockStat.buildTime, buildCost / 60, StatUnit.seconds); stats.add(Stat.buildTime, buildCost / 60, StatUnit.seconds);
stats.add(BlockStat.buildCost, new ItemListValue(false, requirements)); stats.add(Stat.buildCost, new ItemListValue(false, requirements));
} }
if(instantTransfer){ if(instantTransfer){
stats.add(BlockStat.maxConsecutive, 2, StatUnit.none); stats.add(Stat.maxConsecutive, 2, StatUnit.none);
} }
consumes.display(stats); consumes.display(stats);
// Note: Power stats are added by the consumers. //Note: Power stats are added by the consumers.
if(hasLiquids) stats.add(BlockStat.liquidCapacity, liquidCapacity, StatUnit.liquidUnits); if(hasLiquids) stats.add(Stat.liquidCapacity, liquidCapacity, StatUnit.liquidUnits);
if(hasItems && itemCapacity > 0) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items); if(hasItems && itemCapacity > 0) stats.add(Stat.itemCapacity, itemCapacity, StatUnit.items);
} }
public void setBars(){ public void setBars(){
bars.add("health", entity -> new Bar("blocks.health", Pal.health, entity::healthf).blink(Color.white)); bars.add("health", entity -> new Bar("stat.health", Pal.health, entity::healthf).blink(Color.white));
if(hasLiquids){ if(hasLiquids){
Func<Building, Liquid> current; Func<Building, Liquid> current;
@@ -634,11 +636,6 @@ public class Block extends UnlockableContent{
} }
} }
@Override
public void displayInfo(Table table){
ContentDisplay.displayBlock(table, this);
}
@Override @Override
public ContentType getContentType(){ public ContentType getContentType(){
return ContentType.block; return ContentType.block;
@@ -669,9 +666,10 @@ public class Block extends UnlockableContent{
if(consumes.has(ConsumeType.item)) hasItems = true; if(consumes.has(ConsumeType.item)) hasItems = true;
if(consumes.has(ConsumeType.liquid)) hasLiquids = true; if(consumes.has(ConsumeType.liquid)) hasLiquids = true;
setStats();
setBars(); setBars();
stats.useCategories = true;
consumes.init(); consumes.init();
if(!outputsPower && consumes.hasPower() && consumes.getPower().buffered){ if(!outputsPower && consumes.hasPower() && consumes.getPower().buffered){

View File

@@ -42,7 +42,7 @@ public class LaunchPad extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.launchTime, launchTime / 60f, StatUnit.seconds); stats.add(Stat.launchTime, launchTime / 60f, StatUnit.seconds);
} }
@Override @Override

View File

@@ -61,11 +61,11 @@ public class ForceProjector extends Block{
@Override @Override
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.shieldHealth, breakage, StatUnit.none); stats.add(Stat.shieldHealth, breakage, StatUnit.none);
stats.add(BlockStat.cooldownTime, (int) (breakage / cooldownBrokenBase / 60f), StatUnit.seconds); stats.add(Stat.cooldownTime, (int) (breakage / cooldownBrokenBase / 60f), StatUnit.seconds);
stats.add(BlockStat.powerUse, basePowerDraw * 60f, StatUnit.powerSecond); stats.add(Stat.powerUse, basePowerDraw * 60f, StatUnit.powerSecond);
stats.add(BlockStat.boostEffect, phaseRadiusBoost / tilesize, StatUnit.blocks); stats.add(Stat.boostEffect, phaseRadiusBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, phaseShieldBoost, StatUnit.shieldHealth); stats.add(Stat.boostEffect, phaseShieldBoost, StatUnit.shieldHealth);
} }
@Override @Override

View File

@@ -44,11 +44,11 @@ public class MendProjector extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds); stats.add(Stat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds);
stats.add(BlockStat.range, range / tilesize, StatUnit.blocks); stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks); stats.add(Stat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (phaseBoost + healPercent) / healPercent, StatUnit.timesSpeed); stats.add(Stat.boostEffect, (phaseBoost + healPercent) / healPercent, StatUnit.timesSpeed);
} }
@Override @Override

View File

@@ -51,13 +51,13 @@ public class OverdriveProjector extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.speedIncrease, (int)(100f * speedBoost), StatUnit.percent); stats.add(Stat.speedIncrease, (int)(100f * speedBoost), StatUnit.percent);
stats.add(BlockStat.range, range / tilesize, StatUnit.blocks); stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(BlockStat.productionTime, useTime / 60f, StatUnit.seconds); stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds);
if(hasBoost){ if(hasBoost){
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks); stats.add(Stat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent); stats.add(Stat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
} }
} }

View File

@@ -0,0 +1,67 @@
package mindustry.world.blocks.defense.turrets;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.logic.*;
import mindustry.world.*;
import mindustry.world.consumers.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
public abstract class BaseTurret extends Block{
public float range = 80f;
public float rotateSpeed = 5;
public boolean acceptCoolant = true;
/** Effect displayed when coolant is used. */
public Effect coolEffect = Fx.fuelburn;
/** How much reload is lowered by for each unit of liquid of heat capacity. */
public float coolantMultiplier = 5f;
public BaseTurret(String name){
super(name);
update = true;
solid = true;
outlineIcon = true;
}
@Override
public void init(){
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
hasLiquids = true;
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.2f)).update(false).boost();
}
super.init();
}
@Override
public void drawPlace(int x, int y, int rotation, boolean valid){
Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.placing);
}
@Override
public void setStats(){
super.setStats();
stats.add(Stat.shootRange, range / tilesize, StatUnit.blocks);
}
public class BaseTurretBuild extends Building implements Ranged{
public float rotation = 90;
@Override
public float range(){
return range;
}
@Override
public void drawSelect(){
Drawf.dashCircle(x, y, range, team.color);
}
}
}

View File

@@ -35,8 +35,8 @@ public class ItemTurret extends Turret{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.remove(BlockStat.itemCapacity); stats.remove(Stat.itemCapacity);
stats.add(BlockStat.ammo, new AmmoListValue<>(ammoTypes)); stats.add(Stat.ammo, new AmmoListValue<>(ammoTypes));
consumes.add(new ConsumeItemFilter(i -> ammoTypes.containsKey(i)){ consumes.add(new ConsumeItemFilter(i -> ammoTypes.containsKey(i)){
@Override @Override
public void build(Building tile, Table table){ public void build(Building tile, Table table){
@@ -54,7 +54,7 @@ public class ItemTurret extends Turret{
} }
@Override @Override
public void display(BlockStats stats){ public void display(Stats stats){
//don't display //don't display
} }
}); });

View File

@@ -33,11 +33,11 @@ public class LaserTurret extends PowerTurret{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.remove(BlockStat.booster); stats.remove(Stat.booster);
stats.add(BlockStat.input, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, false, l -> consumes.liquidfilters.get(l.id))); stats.add(Stat.input, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, false, l -> consumes.liquidfilters.get(l.id)));
stats.remove(BlockStat.damage); stats.remove(Stat.damage);
//damages every 5 ticks, at least in meltdown's case //damages every 5 ticks, at least in meltdown's case
stats.add(BlockStat.damage, shootType.damage * 60f / 5f, StatUnit.perSecond); stats.add(Stat.damage, shootType.damage * 60f / 5f, StatUnit.perSecond);
} }
public class LaserTurretBuild extends PowerTurretBuild{ public class LaserTurretBuild extends PowerTurretBuild{

View File

@@ -36,7 +36,7 @@ public class LiquidTurret extends Turret{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.ammo, new AmmoListValue<>(ammoTypes)); stats.add(Stat.ammo, new AmmoListValue<>(ammoTypes));
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){ consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
@Override @Override
public boolean valid(Building entity){ public boolean valid(Building entity){
@@ -49,7 +49,7 @@ public class LiquidTurret extends Turret{
} }
@Override @Override
public void display(BlockStats stats){ public void display(Stats stats){
} }
}); });

View File

@@ -1,4 +1,4 @@
package mindustry.world.blocks.defense; package mindustry.world.blocks.defense.turrets;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
@@ -11,12 +11,9 @@ import mindustry.content.*;
import mindustry.entities.*; import mindustry.entities.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.world.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import static mindustry.Vars.*; public class PointDefenseTurret extends ReloadTurret{
public class PointDefenseTurret extends Block{
public final int timerTarget = timers++; public final int timerTarget = timers++;
public float retargetTime = 5f; public float retargetTime = 5f;
@@ -27,9 +24,6 @@ public class PointDefenseTurret extends Block{
public Effect hitEffect = Fx.pointHit; public Effect hitEffect = Fx.pointHit;
public Effect shootEffect = Fx.sparkShoot; public Effect shootEffect = Fx.sparkShoot;
public float range = 80f;
public float reloadTime = 30f;
public float rotateSpeed = 20;
public float shootCone = 5f; public float shootCone = 5f;
public float bulletDamage = 10f; public float bulletDamage = 10f;
public float shootLength = 3f; public float shootLength = 3f;
@@ -37,13 +31,12 @@ public class PointDefenseTurret extends Block{
public PointDefenseTurret(String name){ public PointDefenseTurret(String name){
super(name); super(name);
outlineIcon = true; rotateSpeed = 20f;
update = true; reloadTime = 30f;
}
@Override coolantMultiplier = 2f;
public void drawPlace(int x, int y, int rotation, boolean valid){ //disabled due to version mismatch problems
Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); acceptCoolant = false;
} }
@Override @Override
@@ -55,12 +48,10 @@ public class PointDefenseTurret extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.shootRange, range / tilesize, StatUnit.blocks); stats.add(Stat.reload, 60f / reloadTime, StatUnit.none);
stats.add(BlockStat.reload, 60f / reloadTime, StatUnit.none);
} }
public class PointDefenseBuild extends Building{ public class PointDefenseBuild extends ReloadTurretBuild{
public float rotation = 90, reload;
public @Nullable Bullet target; public @Nullable Bullet target;
@Override @Override
@@ -76,14 +67,18 @@ public class PointDefenseTurret extends Block{
target = null; target = null;
} }
if(acceptCoolant){
updateCooling();
}
//look at target //look at target
if(target != null && target.within(this, range) && target.team != team && target.type() != null && target.type().hittable){ if(target != null && target.within(this, range) && target.team != team && target.type() != null && target.type().hittable){
float dest = angleTo(target); float dest = angleTo(target);
rotation = Angles.moveToward(rotation, dest, rotateSpeed * edelta()); rotation = Angles.moveToward(rotation, dest, rotateSpeed * edelta());
reload -= edelta(); reload += edelta();
//shoot when possible //shoot when possible
if(Angles.within(rotation, dest, shootCone) && reload <= 0f){ if(Angles.within(rotation, dest, shootCone) && reload >= reloadTime){
if(target.damage() > bulletDamage){ if(target.damage() > bulletDamage){
target.damage(target.damage() - bulletDamage); target.damage(target.damage() - bulletDamage);
}else{ }else{
@@ -95,18 +90,13 @@ public class PointDefenseTurret extends Block{
beamEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, color, new Vec2().set(target)); beamEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, color, new Vec2().set(target));
shootEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, color); shootEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, color);
hitEffect.at(target.x, target.y, color); hitEffect.at(target.x, target.y, color);
reload = reloadTime; reload = 0;
} }
}else{ }else{
target = null; target = null;
} }
} }
@Override
public void drawSelect(){
Drawf.dashCircle(x, y, range, Pal.accent);
}
@Override @Override
public void draw(){ public void draw(){
Draw.rect(baseRegion, x, y); Draw.rect(baseRegion, x, y);

View File

@@ -16,7 +16,7 @@ public class PowerTurret extends Turret{
@Override @Override
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.damage, shootType.damage, StatUnit.none); stats.add(Stat.damage, shootType.damage, StatUnit.none);
} }
@Override @Override

View File

@@ -0,0 +1,49 @@
package mindustry.world.blocks.defense.turrets;
import arc.math.*;
import arc.util.*;
import mindustry.type.*;
import mindustry.world.consumers.*;
import mindustry.world.meta.*;
import mindustry.world.meta.values.*;
import static mindustry.Vars.*;
public abstract class ReloadTurret extends BaseTurret{
public float reloadTime = 10f;
public ReloadTurret(String name){
super(name);
}
@Override
public void setStats(){
super.setStats();
if(acceptCoolant){
stats.add(Stat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
}
}
public class ReloadTurretBuild extends BaseTurretBuild{
public float reload;
protected void updateCooling(){
float maxUsed = consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount;
Liquid liquid = liquids.current();
float used = Math.min(Math.min(liquids.get(liquid), maxUsed * Time.delta), Math.max(0, ((reloadTime - reload) / coolantMultiplier) / liquid.heatCapacity)) * baseReloadSpeed();
reload += used * liquid.heatCapacity * coolantMultiplier;
liquids.remove(liquid, used);
if(Mathf.chance(0.06 * used)){
coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f));
}
}
protected float baseReloadSpeed(){
return efficiency();
}
}
}

View File

@@ -1,4 +1,4 @@
package mindustry.world.blocks.defense; package mindustry.world.blocks.defense.turrets;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
@@ -9,12 +9,13 @@ import mindustry.annotations.Annotations.*;
import mindustry.entities.*; import mindustry.entities.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.world.*; import mindustry.type.*;
import mindustry.world.consumers.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class TractorBeamTurret extends Block{ public class TractorBeamTurret extends BaseTurret{
public final int timerTarget = timers++; public final int timerTarget = timers++;
public float retargetTime = 5f; public float retargetTime = 5f;
@@ -22,8 +23,6 @@ public class TractorBeamTurret extends Block{
public @Load("@-laser") TextureRegion laser; public @Load("@-laser") TextureRegion laser;
public @Load("@-laser-end") TextureRegion laserEnd; public @Load("@-laser-end") TextureRegion laserEnd;
public float range = 80f;
public float rotateSpeed = 10;
public float shootCone = 6f; public float shootCone = 6f;
public float laserWidth = 0.6f; public float laserWidth = 0.6f;
public float force = 0.3f; public float force = 0.3f;
@@ -35,14 +34,11 @@ public class TractorBeamTurret extends Block{
public TractorBeamTurret(String name){ public TractorBeamTurret(String name){
super(name); super(name);
update = true; rotateSpeed = 10f;
solid = true; coolantMultiplier = 1f;
outlineIcon = true;
}
@Override //disabled due to version mismatch problems
public void drawPlace(int x, int y, int rotation, boolean valid){ acceptCoolant = false;
Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent);
} }
@Override @Override
@@ -54,17 +50,16 @@ public class TractorBeamTurret extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.shootRange, range / tilesize, StatUnit.blocks); stats.add(Stat.targetsAir, targetAir);
stats.add(BlockStat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround);
stats.add(BlockStat.targetsGround, targetGround); stats.add(Stat.damage, damage * 60f, StatUnit.perSecond);
stats.add(BlockStat.damage, damage * 60f, StatUnit.perSecond);
} }
public class TractorBeamBuild extends Building{ public class TractorBeamBuild extends BaseTurretBuild{
public float rotation = 90;
public @Nullable Unit target; public @Nullable Unit target;
public float lastX, lastY, strength; public float lastX, lastY, strength;
public boolean any; public boolean any;
public float coolant = 1f;
@Override @Override
public void updateTile(){ public void updateTile(){
@@ -74,6 +69,23 @@ public class TractorBeamTurret extends Block{
target = Units.closestEnemy(team, x, y, range, u -> u.checkTarget(targetAir, targetGround)); target = Units.closestEnemy(team, x, y, range, u -> u.checkTarget(targetAir, targetGround));
} }
//consume coolant
if(target != null && acceptCoolant){
float maxUsed = consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount;
Liquid liquid = liquids.current();
float used = Math.min(Math.min(liquids.get(liquid), maxUsed * Time.delta), Math.max(0, (1f / coolantMultiplier) / liquid.heatCapacity));
liquids.remove(liquid, used);
if(Mathf.chance(0.06 * used)){
coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f));
}
coolant = 1f + (used * liquid.heatCapacity * coolantMultiplier);
}
//look at target //look at target
if(target != null && target.within(this, range) && target.team() != team && target.type.flying && efficiency() > 0.01f){ if(target != null && target.within(this, range) && target.team() != team && target.type.flying && efficiency() > 0.01f){
any = true; any = true;
@@ -98,8 +110,8 @@ public class TractorBeamTurret extends Block{
} }
@Override @Override
public void drawSelect(){ public float efficiency() {
Drawf.dashCircle(x, y, range, Pal.accent); return super.efficiency() * coolant;
} }
@Override @Override

View File

@@ -21,7 +21,6 @@ import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.logic.*; import mindustry.logic.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.blocks.*; import mindustry.world.blocks.*;
import mindustry.world.consumers.*; import mindustry.world.consumers.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
@@ -29,7 +28,7 @@ import mindustry.world.meta.values.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public abstract class Turret extends Block{ public abstract class Turret extends ReloadTurret{
//after being logic-controlled and this amount of time passes, the turret will resume normal AI //after being logic-controlled and this amount of time passes, the turret will resume normal AI
public final static float logicControlCooldown = 60 * 2; public final static float logicControlCooldown = 60 * 2;
@@ -45,8 +44,6 @@ public abstract class Turret extends Block{
public int maxAmmo = 30; public int maxAmmo = 30;
public int ammoPerShot = 1; public int ammoPerShot = 1;
public float ammoEjectBack = 1f; public float ammoEjectBack = 1f;
public float range = 50f;
public float reloadTime = 10f;
public float inaccuracy = 0f; public float inaccuracy = 0f;
public float velocityInaccuracy = 0f; public float velocityInaccuracy = 0f;
public int shots = 1; public int shots = 1;
@@ -54,7 +51,6 @@ public abstract class Turret extends Block{
public float recoilAmount = 1f; public float recoilAmount = 1f;
public float restitution = 0.02f; public float restitution = 0.02f;
public float cooldown = 0.02f; public float cooldown = 0.02f;
public float rotateSpeed = 5f; //in degrees per tick
public float shootCone = 8f; public float shootCone = 8f;
public float shootShake = 0f; public float shootShake = 0f;
public float xRand = 0f; public float xRand = 0f;
@@ -65,10 +61,7 @@ public abstract class Turret extends Block{
public boolean targetAir = true; public boolean targetAir = true;
public boolean targetGround = true; public boolean targetGround = true;
public boolean acceptCoolant = true; public boolean acceptCoolant = true;
/** How much reload is lowered by for each unit of liquid of heat capacity. */
public float coolantMultiplier = 5f;
/** Effect displayed when coolant is used. */
public Effect coolEffect = Fx.fuelburn;
public Sortf unitSort = Unit::dst2; public Sortf unitSort = Unit::dst2;
protected Vec2 tr = new Vec2(); protected Vec2 tr = new Vec2();
@@ -108,14 +101,13 @@ public abstract class Turret extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.shootRange, range / tilesize, StatUnit.blocks); stats.add(Stat.inaccuracy, (int)inaccuracy, StatUnit.degrees);
stats.add(BlockStat.inaccuracy, (int)inaccuracy, StatUnit.degrees); stats.add(Stat.reload, 60f / reloadTime * shots, StatUnit.none);
stats.add(BlockStat.reload, 60f / reloadTime * shots, StatUnit.none); stats.add(Stat.targetsAir, targetAir);
stats.add(BlockStat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround);
stats.add(BlockStat.targetsGround, targetGround);
if(acceptCoolant){ if(acceptCoolant){
stats.add(BlockStat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id))); stats.add(Stat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
} }
} }
@@ -134,32 +126,22 @@ public abstract class Turret extends Block{
return new TextureRegion[]{baseRegion, region}; return new TextureRegion[]{baseRegion, region};
} }
@Override
public void drawPlace(int x, int y, int rotation, boolean valid){
Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.placing);
}
public static abstract class AmmoEntry{ public static abstract class AmmoEntry{
public int amount; public int amount;
public abstract BulletType type(); public abstract BulletType type();
} }
public class TurretBuild extends Building implements ControlBlock, Ranged{ public class TurretBuild extends ReloadTurretBuild implements ControlBlock{
public Seq<AmmoEntry> ammo = new Seq<>(); public Seq<AmmoEntry> ammo = new Seq<>();
public int totalAmmo; public int totalAmmo;
public float reload, rotation = 90, recoil, heat, logicControlTime = -1; public float recoil, heat, logicControlTime = -1;
public int shotCounter; public int shotCounter;
public boolean logicShooting = false; public boolean logicShooting = false;
public @Nullable Posc target; public @Nullable Posc target;
public Vec2 targetPos = new Vec2(); public Vec2 targetPos = new Vec2();
public BlockUnitc unit = Nulls.blockUnit; public BlockUnitc unit = Nulls.blockUnit;
@Override
public float range(){
return range;
}
@Override @Override
public void created(){ public void created(){
unit = (BlockUnitc)UnitTypes.block.create(team); unit = (BlockUnitc)UnitTypes.block.create(team);
@@ -197,8 +179,8 @@ public abstract class Turret extends Block{
case ammo -> totalAmmo; case ammo -> totalAmmo;
case ammoCapacity -> maxAmmo; case ammoCapacity -> maxAmmo;
case rotation -> rotation; case rotation -> rotation;
case shootX -> targetPos.x; case shootX -> World.conv(targetPos.x);
case shootY -> targetPos.y; case shootY -> World.conv(targetPos.y);
case shooting -> (isControlled() ? unit.isShooting() : logicControlled() ? logicShooting : validateTarget()) ? 1 : 0; case shooting -> (isControlled() ? unit.isShooting() : logicControlled() ? logicShooting : validateTarget()) ? 1 : 0;
default -> super.sense(sensor); default -> super.sense(sensor);
}; };
@@ -301,11 +283,6 @@ public abstract class Turret extends Block{
} }
} }
@Override
public void drawSelect(){
Drawf.dashCircle(x, y, range, team.color);
}
@Override @Override
public void handleLiquid(Building source, Liquid liquid, float amount){ public void handleLiquid(Building source, Liquid liquid, float amount){
if(acceptCoolant && liquids.currentAmount() <= 0.001f){ if(acceptCoolant && liquids.currentAmount() <= 0.001f){
@@ -315,20 +292,6 @@ public abstract class Turret extends Block{
super.handleLiquid(source, liquid, amount); super.handleLiquid(source, liquid, amount);
} }
protected void updateCooling(){
float maxUsed = consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount;
Liquid liquid = liquids.current();
float used = Math.min(Math.min(liquids.get(liquid), maxUsed * Time.delta), Math.max(0, ((reloadTime - reload) / coolantMultiplier) / liquid.heatCapacity)) * baseReloadSpeed();
reload += used * liquid.heatCapacity * coolantMultiplier;
liquids.remove(liquid, used);
if(Mathf.chance(0.06 * used)){
coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f));
}
}
protected boolean validateTarget(){ protected boolean validateTarget(){
return !Units.invalidateTarget(target, team, x, y) || isControlled() || logicControlled(); return !Units.invalidateTarget(target, team, x, y) || isControlled() || logicControlled();
} }
@@ -453,10 +416,6 @@ public abstract class Turret extends Block{
ammoUseEffect.at(x - Angles.trnsx(rotation, ammoEjectBack), y - Angles.trnsy(rotation, ammoEjectBack), rotation); ammoUseEffect.at(x - Angles.trnsx(rotation, ammoEjectBack), y - Angles.trnsy(rotation, ammoEjectBack), rotation);
} }
protected float baseReloadSpeed(){
return efficiency();
}
@Override @Override
public void write(Writes write){ public void write(Writes write){
super.write(write); super.write(write);

View File

@@ -52,7 +52,7 @@ public class Conveyor extends Block implements Autotiler{
super.setStats(); super.setStats();
//have to add a custom calculated speed, since the actual movement speed is apparently not linear //have to add a custom calculated speed, since the actual movement speed is apparently not linear
stats.add(BlockStat.itemsMoved, displayedSpeed, StatUnit.itemsSecond); stats.add(Stat.itemsMoved, displayedSpeed, StatUnit.itemsSecond);
} }
@Override @Override

View File

@@ -336,16 +336,18 @@ public class ItemBridge extends Block{
Tile other = world.tile(link); Tile other = world.tile(link);
if(items.total() >= itemCapacity) return false;
if(linked(source)) return true;
if(linkValid(tile, other)){ if(linkValid(tile, other)){
int rel = relativeTo(other); int rel = relativeTo(other);
int rel2 = relativeTo(Edges.getFacingEdge(source, this)); int rel2 = relativeTo(Edges.getFacingEdge(source, this));
if(rel == rel2) return false; return rel != rel2;
}else{
return linked(source) && items.total() < itemCapacity;
} }
return items.total() < itemCapacity; return false;
} }
@Override @Override
@@ -359,16 +361,18 @@ public class ItemBridge extends Block{
Tile other = world.tile(link); Tile other = world.tile(link);
if(!(liquids.current() == liquid || liquids.get(liquids.current()) < 0.2f)) return false;
if(linked(source)) return true;
if(linkValid(tile, other)){ if(linkValid(tile, other)){
int rel = relativeTo(other.x, other.y); int rel = relativeTo(other.x, other.y);
int rel2 = relativeTo(Edges.getFacingEdge(source, this)); int rel2 = relativeTo(Edges.getFacingEdge(source, this));
if(rel == rel2) return false; return rel != rel2;
}else if(!(linked(source))){
return false;
} }
return (liquids.current() == liquid || liquids.get(liquids.current()) < 0.2f); return false;
} }
protected boolean linked(Building source){ protected boolean linked(Building source){

View File

@@ -53,7 +53,7 @@ public class StackConveyor extends Block implements Autotiler{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.itemsMoved, Mathf.round(itemCapacity * speed * 60), StatUnit.itemsSecond); stats.add(Stat.itemsMoved, Mathf.round(itemCapacity * speed * 60), StatUnit.itemsSecond);
} }
@Override @Override

View File

@@ -14,7 +14,7 @@ public class LiquidJunction extends LiquidBlock{
@Override @Override
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.remove(BlockStat.liquidCapacity); stats.remove(Stat.liquidCapacity);
} }
@Override @Override

View File

@@ -117,8 +117,8 @@ public class LogicBlock extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.linkRange, range / 8, StatUnit.blocks); stats.add(Stat.linkRange, range / 8, StatUnit.blocks);
stats.add(BlockStat.instructions, instructionsPerTick * 60, StatUnit.perSecond); stats.add(Stat.instructions, instructionsPerTick * 60, StatUnit.perSecond);
} }
@Override @Override

View File

@@ -38,7 +38,7 @@ public class LogicDisplay extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.displaySize, "@x@", displaySize, displaySize); stats.add(Stat.displaySize, "@x@", displaySize, displaySize);
} }
public class LogicDisplayBuild extends Building{ public class LogicDisplayBuild extends Building{

View File

@@ -18,7 +18,7 @@ public class MemoryBlock extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.memoryCapacity, memoryCapacity, StatUnit.none); stats.add(Stat.memoryCapacity, memoryCapacity, StatUnit.none);
} }
public class MemoryBuild extends Building{ public class MemoryBuild extends Building{

View File

@@ -20,7 +20,7 @@ public class Battery extends PowerDistributor{
super(name); super(name);
outputsPower = true; outputsPower = true;
consumesPower = true; consumesPower = true;
flags = EnumSet.of(BlockFlag.powerRes); flags = EnumSet.of(BlockFlag.battery);
} }
public class BatteryBuild extends Building{ public class BatteryBuild extends Building{

View File

@@ -55,7 +55,7 @@ public class ImpactReactor extends PowerGenerator{
super.setStats(); super.setStats();
if(hasItems){ if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds); stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
} }
} }

View File

@@ -72,7 +72,7 @@ public class ItemLiquidGenerator extends PowerGenerator{
super.setStats(); super.setStats();
if(hasItems){ if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds); stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
} }
} }

View File

@@ -5,6 +5,7 @@ import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*;
import arc.util.*; import arc.util.*;
import arc.util.io.*; import arc.util.io.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
@@ -47,6 +48,7 @@ public class NuclearReactor extends PowerGenerator{
hasItems = true; hasItems = true;
hasLiquids = true; hasLiquids = true;
rebuildable = false; rebuildable = false;
flags = EnumSet.of(BlockFlag.reactor);
} }
@Override @Override
@@ -54,7 +56,7 @@ public class NuclearReactor extends PowerGenerator{
super.setStats(); super.setStats();
if(hasItems){ if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds); stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
} }
} }

View File

@@ -12,13 +12,13 @@ import mindustry.world.meta.*;
public class PowerGenerator extends PowerDistributor{ public class PowerGenerator extends PowerDistributor{
/** The amount of power produced per tick in case of an efficiency of 1.0, which represents 100%. */ /** The amount of power produced per tick in case of an efficiency of 1.0, which represents 100%. */
public float powerProduction; public float powerProduction;
public BlockStat generationType = BlockStat.basePowerGeneration; public Stat generationType = Stat.basePowerGeneration;
public PowerGenerator(String name){ public PowerGenerator(String name){
super(name); super(name);
sync = true; sync = true;
baseExplosiveness = 5f; baseExplosiveness = 5f;
flags = EnumSet.of(BlockFlag.producer); flags = EnumSet.of(BlockFlag.generator);
} }
@Override @Override

View File

@@ -124,8 +124,8 @@ public class PowerNode extends PowerBlock{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.powerRange, laserRange, StatUnit.blocks); stats.add(Stat.powerRange, laserRange, StatUnit.blocks);
stats.add(BlockStat.powerConnections, maxNodes, StatUnit.none); stats.add(Stat.powerConnections, maxNodes, StatUnit.none);
} }
@Override @Override

View File

@@ -22,7 +22,7 @@ public class ThermalGenerator extends PowerGenerator{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.tiles, attribute, floating); stats.add(Stat.tiles, attribute, floating);
} }
@Override @Override

View File

@@ -37,7 +37,7 @@ public class AttributeSmelter extends GenericSmelter{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.affinities, attribute, boostScale); stats.add(Stat.affinities, attribute, boostScale);
} }
public class AttributeSmelterBuild extends SmelterBuild{ public class AttributeSmelterBuild extends SmelterBuild{

View File

@@ -42,7 +42,7 @@ public class Cultivator extends GenericCrafter{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.affinities, attribute); stats.add(Stat.affinities, attribute);
} }
@Override @Override

View File

@@ -16,7 +16,9 @@ import mindustry.graphics.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.ui.*; import mindustry.ui.*;
import mindustry.world.*; import mindustry.world.*;
import mindustry.world.blocks.environment.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import mindustry.world.meta.values.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -135,29 +137,11 @@ public class Drill extends Block{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.drillTier, table -> { stats.add(Stat.drillTier, new BlockFilterValue(b -> b instanceof Floor f && f.itemDrop != null && f.itemDrop.hardness <= tier));
Seq<Block> list = content.blocks().select(b -> b.isFloor() && b.asFloor().itemDrop != null && b.asFloor().itemDrop.hardness <= tier);
table.table(l -> { stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond);
l.left();
for(int i = 0; i < list.size; i++){
Block item = list.get(i);
l.image(item.icon(Cicon.small)).size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3);
l.add(item.localizedName).left().padLeft(1).padRight(4);
if(i % 5 == 4){
l.row();
}
}
});
});
stats.add(BlockStat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond);
if(liquidBoostIntensity != 1){ if(liquidBoostIntensity != 1){
stats.add(BlockStat.boostEffect, liquidBoostIntensity * liquidBoostIntensity, StatUnit.timesSpeed); stats.add(Stat.boostEffect, liquidBoostIntensity * liquidBoostIntensity, StatUnit.timesSpeed);
} }
} }

View File

@@ -21,7 +21,7 @@ public class Fracker extends SolidPump{
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.productionTime, itemUseTime / 60f, StatUnit.seconds); stats.add(Stat.productionTime, itemUseTime / 60f, StatUnit.seconds);
} }
@Override @Override

View File

@@ -2,6 +2,7 @@ package mindustry.world.blocks.production;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.math.*; import arc.math.*;
import arc.struct.*;
import arc.util.io.*; import arc.util.io.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.entities.*; import mindustry.entities.*;
@@ -23,9 +24,6 @@ public class GenericCrafter extends Block{
public DrawBlock drawer = new DrawBlock(); public DrawBlock drawer = new DrawBlock();
//public Cons<GenericCrafterEntity> drawer = null;
//public Prov<TextureRegion[]> drawIcons = null;
public GenericCrafter(String name){ public GenericCrafter(String name){
super(name); super(name);
update = true; update = true;
@@ -34,6 +32,7 @@ public class GenericCrafter extends Block{
idleSound = Sounds.machine; idleSound = Sounds.machine;
sync = true; sync = true;
idleSoundVolume = 0.03f; idleSoundVolume = 0.03f;
flags = EnumSet.of(BlockFlag.factory);
} }
@Override @Override
@@ -44,14 +43,14 @@ public class GenericCrafter extends Block{
} }
super.setStats(); super.setStats();
stats.add(BlockStat.productionTime, craftTime / 60f, StatUnit.seconds); stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
if(outputItem != null){ if(outputItem != null){
stats.add(BlockStat.output, outputItem); stats.add(Stat.output, outputItem);
} }
if(outputLiquid != null){ if(outputLiquid != null){
stats.add(BlockStat.output, outputLiquid.liquid, outputLiquid.amount, false); stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount, false);
} }
} }

View File

@@ -26,8 +26,8 @@ public class LiquidConverter extends GenericCrafter{
@Override @Override
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.remove(BlockStat.output); stats.remove(Stat.output);
stats.add(BlockStat.output, outputLiquid.liquid, outputLiquid.amount * craftTime, false); stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount * craftTime, false);
} }
public class LiquidConverterBuild extends GenericCrafterBuild{ public class LiquidConverterBuild extends GenericCrafterBuild{

View File

@@ -26,7 +26,7 @@ public class Pump extends LiquidBlock{
@Override @Override
public void setStats(){ public void setStats(){
super.setStats(); super.setStats();
stats.add(BlockStat.output, 60f * pumpAmount * size * size, StatUnit.liquidSecond); stats.add(Stat.output, 60f * pumpAmount * size * size, StatUnit.liquidSecond);
} }
@Override @Override

Some files were not shown because too many files have changed in this diff Show More