Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a6791ab43 | ||
|
|
3a142507d1 | ||
|
|
78f2a21a92 | ||
|
|
b8e245f945 | ||
|
|
b1be360180 | ||
|
|
679e6bd27b | ||
|
|
f21cea225b | ||
|
|
e12aee6961 | ||
|
|
6abb549b18 | ||
|
|
161bb87eb8 | ||
|
|
7e0a6b985c | ||
|
|
d1f7fce7f9 | ||
|
|
cef2778d43 | ||
|
|
993f3973d2 | ||
|
|
4c0664c068 | ||
|
|
ebb37f4abe | ||
|
|
696d5e77ca | ||
|
|
74839a7f8d | ||
|
|
5c353b1807 | ||
|
|
3e6c54069d | ||
|
|
34a83de3cf | ||
|
|
1624bb4502 | ||
|
|
ff115ee376 | ||
|
|
5a44bf6023 | ||
|
|
7f37b97861 | ||
|
|
d5bea214cb | ||
|
|
bc2664994e | ||
|
|
aef18b8696 |
|
Before Width: | Height: | Size: 341 B After Width: | Height: | Size: 341 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 887 B After Width: | Height: | Size: 912 B |
|
Before Width: | Height: | Size: 889 B After Width: | Height: | Size: 881 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 899 B |
@@ -155,7 +155,7 @@ mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is
|
|||||||
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
||||||
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
||||||
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
||||||
mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them.
|
mod.erroredcontent.details = This mod caused errors when loading. Ask the mod author to fix them.
|
||||||
|
|
||||||
mod.errors = Errors have occurred loading content.
|
mod.errors = Errors have occurred loading content.
|
||||||
mod.noerrorplay = [red]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
|
mod.noerrorplay = [red]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
|
||||||
@@ -645,7 +645,7 @@ objective.destroycore = [accent]Destroy Enemy Core
|
|||||||
objective.command = [accent]Command Units
|
objective.command = [accent]Command Units
|
||||||
objective.nuclearlaunch = [accent]\u26A0 Nuclear launch detected: [lightgray]{0}
|
objective.nuclearlaunch = [accent]\u26A0 Nuclear launch detected: [lightgray]{0}
|
||||||
|
|
||||||
announce.nuclearstrike = [red]\u26A0 NUCLEAR STRIKE INBOUND \u26A0
|
announce.nuclearstrike = [red]\u26A0 NUCLEAR STRIKE INBOUND \u26A0\n[lightgray]construct backup cores immediately
|
||||||
|
|
||||||
loadout = Loadout
|
loadout = Loadout
|
||||||
resources = Resources
|
resources = Resources
|
||||||
@@ -934,6 +934,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
|
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
@@ -1771,7 +1772,7 @@ hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a pay
|
|||||||
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
||||||
hint.generator = \uF879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uF87F [accent]Power Nodes[].
|
hint.generator = \uF879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uF87F [accent]Power Nodes[].
|
||||||
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uF835 [accent]Graphite[] \uF861Duo/\uF859Salvo ammunition to take Guardians down.
|
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uF835 [accent]Graphite[] \uF861Duo/\uF859Salvo ammunition to take Guardians down.
|
||||||
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a \u00EF\u00A1\u00A8 [accent]Foundation[] core over the \u00EF\u00A1\u00A9 [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a \uf868 [accent]Foundation[] core over the \uf869 [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
||||||
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
||||||
hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation.
|
hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation.
|
||||||
hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[].
|
hint.coreIncinerate = After the core is filled to capacity with an item, any extra items of that type it receives will be [accent]incinerated[].
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -921,6 +921,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Възстановяващо броня Поле
|
ability.shieldregenfield = Възстановяващо броня Поле
|
||||||
ability.movelightning = Подвижна светкавица
|
ability.movelightning = Подвижна светкавица
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -926,6 +926,7 @@ ability.unitspawn = Fàbrica de {0}
|
|||||||
ability.shieldregenfield = Regenerador de camps de força
|
ability.shieldregenfield = Regenerador de camps de força
|
||||||
ability.movelightning = Moviment llampec
|
ability.movelightning = Moviment llampec
|
||||||
ability.shieldarc = Escut de descàrregues
|
ability.shieldarc = Escut de descàrregues
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Camp de força: [accent]{0}[] de dany ~ [accent]{1}[] blocs / [accent]{2}[] objectius
|
ability.energyfield = Camp de força: [accent]{0}[] de dany ~ [accent]{1}[] blocs / [accent]{2}[] objectius
|
||||||
|
|
||||||
bar.onlycoredeposit = Només es permet depositar al nucli.
|
bar.onlycoredeposit = Només es permet depositar al nucli.
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = {0} továrna
|
|||||||
ability.shieldregenfield = Silově opravné pole
|
ability.shieldregenfield = Silově opravné pole
|
||||||
ability.movelightning = Pohybující se blesk
|
ability.movelightning = Pohybující se blesk
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energetické pole: [accent]{0}[] poškození ~ [accent]{1}[] dlaždic / [accent]{2}[] cílu
|
ability.energyfield = Energetické pole: [accent]{0}[] poškození ~ [accent]{1}[] dlaždic / [accent]{2}[] cílu
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Fabrik
|
|||||||
ability.shieldregenfield = Skjold-regenereringsfelt
|
ability.shieldregenfield = Skjold-regenereringsfelt
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -926,6 +926,7 @@ ability.unitspawn = {0} Fabrik
|
|||||||
ability.shieldregenfield = Schild-regenerations-Feld
|
ability.shieldregenfield = Schild-regenerations-Feld
|
||||||
ability.movelightning = Bewegungsblitze
|
ability.movelightning = Bewegungsblitze
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele
|
ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -932,6 +932,7 @@ ability.unitspawn = Fábrica de {0}
|
|||||||
ability.shieldregenfield = Área de Regeneración de Armaduras
|
ability.shieldregenfield = Área de Regeneración de Armaduras
|
||||||
ability.movelightning = Movimiento Relámpago
|
ability.movelightning = Movimiento Relámpago
|
||||||
ability.shieldarc = Sector de Escudo
|
ability.shieldarc = Sector de Escudo
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Campo de Energía: [accent]{0}[] daño ~ [accent]{1}[] bloques / [accent]{2}[] objetivos
|
ability.energyfield = Campo de Energía: [accent]{0}[] daño ~ [accent]{1}[] bloques / [accent]{2}[] objetivos
|
||||||
|
|
||||||
bar.onlycoredeposit = Sólo se permite depositar en el Núcleo
|
bar.onlycoredeposit = Sólo se permite depositar en el Núcleo
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -12,19 +12,19 @@ link.itch.io.description = PC deskargen itch.io orria
|
|||||||
link.google-play.description = Google Play dendako sarrera
|
link.google-play.description = Google Play dendako sarrera
|
||||||
link.f-droid.description = F-Droid catalogue listing
|
link.f-droid.description = F-Droid catalogue listing
|
||||||
link.wiki.description = Mindustry wiki ofiziala
|
link.wiki.description = Mindustry wiki ofiziala
|
||||||
link.suggestions.description = Suggest new features
|
link.suggestions.description = Proposatu ezaugarri berriak
|
||||||
link.bug.description = Found one? Report it here
|
link.bug.description = Akatsen bat aurkitu duzu? Eman berri hemen
|
||||||
linkopen = This server has sent you a link. Are you sure you want to open it?\n\n[sky]{0}
|
linkopen = Zerbitzari honek esteka bat bidali dizu. Ziur ireki nahi duzula?\n\n[sky]{0}
|
||||||
linkfail = Huts egin du esteka irekitzean!\nURL-a zure arbelera kopiatu da.
|
linkfail = Huts egin du esteka irekitzean!\nURL-a zure arbelera kopiatu da.
|
||||||
screenshot = Pantaila-argazkia {0} helbidean gorde da
|
screenshot = Pantaila-argazkia {0} helbidean gorde da
|
||||||
screenshot.invalid = Mapa handiegia, baliteke pantaila-argazkirako memoria nahiko ez egotea.
|
screenshot.invalid = Mapa handiegia, baliteke pantaila-argazkirako memoria nahiko ez egotea.
|
||||||
gameover = Partida amaitu da
|
gameover = Partida amaitu da
|
||||||
gameover.disconnect = Disconnect
|
gameover.disconnect = Deskonektatu
|
||||||
gameover.pvp = [accent] {0}[] taldeak irabazi du!
|
gameover.pvp = [accent] {0}[] taldeak irabazi du!
|
||||||
gameover.waiting = [accent]Waiting for next map...
|
gameover.waiting = [accent]Hurrengo maparen zain...
|
||||||
highscore = [accent]Marka berria!
|
highscore = [accent]Marka berria!
|
||||||
copied = Kopiatuta.
|
copied = Kopiatuta.
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = Jolasaren atal hau ez dago prest
|
||||||
|
|
||||||
load.sound = Soinuak
|
load.sound = Soinuak
|
||||||
load.map = Mapak
|
load.map = Mapak
|
||||||
@@ -32,32 +32,32 @@ load.image = Irudiak
|
|||||||
load.content = Edukia
|
load.content = Edukia
|
||||||
load.system = Sistema
|
load.system = Sistema
|
||||||
load.mod = Mod-ak
|
load.mod = Mod-ak
|
||||||
load.scripts = Scripts
|
load.scripts = Scriptak
|
||||||
|
|
||||||
be.update = A new Bleeding Edge build is available:
|
be.update = Konpilazio berri bat eskuragarri dago:
|
||||||
be.update.confirm = Download it and restart now?
|
be.update.confirm = Deskargatu eta berrabiarazi orain?
|
||||||
be.updating = Updating...
|
be.updating = Eguneratzen...
|
||||||
be.ignore = Ignore
|
be.ignore = Ezikusi
|
||||||
be.noupdates = No updates found.
|
be.noupdates = Ez da eguneratzerik aurkitu.
|
||||||
be.check = Check for updates
|
be.check = Egiaztatu eguneratzeak
|
||||||
mods.browser = Mod Browser
|
mods.browser = Mod arakatzailea
|
||||||
mods.browser.selected = Selected mod
|
mods.browser.selected = Hautatutako mod-a
|
||||||
mods.browser.add = Install
|
mods.browser.add = Instalatu
|
||||||
mods.browser.reinstall = Reinstall
|
mods.browser.reinstall = Berrinstalatu
|
||||||
mods.browser.view-releases = View Releases
|
mods.browser.view-releases = Ikusi bertsioak
|
||||||
mods.browser.noreleases = [scarlet]No Releases Found\n[accent]Couldn't find any releases for this mod. Check if the mod's repository has any releases published.
|
mods.browser.noreleases = [scarlet]Ez da bertsiorik aurkitu\n[accent]Ez da mod honen bertsiorik aurkitu. Egiaztatu mod-aren biltegian bertsiorik argitaratu ote den.
|
||||||
mods.browser.latest = <Latest>
|
mods.browser.latest = <Azkena>
|
||||||
mods.browser.releases = Releases
|
mods.browser.releases = Bersioak
|
||||||
mods.github.open = Repo
|
mods.github.open = Biltegia
|
||||||
mods.github.open-release = Release Page
|
mods.github.open-release = Bertsioaren orria
|
||||||
mods.browser.sortdate = Sort by recent
|
mods.browser.sortdate = Ordenatu dataren arabera
|
||||||
mods.browser.sortstars = Sort by stars
|
mods.browser.sortstars = Ordenatu izarren arabera
|
||||||
|
|
||||||
schematic = Eskama
|
schematic = Eskema
|
||||||
schematic.add = Gorde eskema...
|
schematic.add = Gorde eskema...
|
||||||
schematics = Eskemak
|
schematics = Eskemak
|
||||||
schematic.replace = Badago izen bereko eskema bat. Ordeztu nahi duzu?
|
schematic.replace = Badago izen bereko eskema bat. Ordeztu nahi duzu?
|
||||||
schematic.exists = A schematic by that name already exists.
|
schematic.exists = Badago izen bereko eskema bat.
|
||||||
schematic.import = Inportatu eskema...
|
schematic.import = Inportatu eskema...
|
||||||
schematic.exportfile = Esportatu fitxategia
|
schematic.exportfile = Esportatu fitxategia
|
||||||
schematic.importfile = Inportatu fitxategia
|
schematic.importfile = Inportatu fitxategia
|
||||||
@@ -70,25 +70,25 @@ schematic.saved = Eskema gordeta.
|
|||||||
schematic.delete.confirm = Eskema hau behin betiko suntsituko da.
|
schematic.delete.confirm = Eskema hau behin betiko suntsituko da.
|
||||||
schematic.rename = Aldatu izena eskemari
|
schematic.rename = Aldatu izena eskemari
|
||||||
schematic.info = {0}x{1}, {2} bloke
|
schematic.info = {0}x{1}, {2} bloke
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Eskemak desgaituta[]\nEz duzu eskemak erabiltzeko baimenik [accent]mapa[] edo [accent]zerbitzari[] honetan.
|
||||||
schematic.tags = Tags:
|
schematic.tags = Etiketak:
|
||||||
schematic.edittags = Edit Tags
|
schematic.edittags = Editatu etiketak
|
||||||
schematic.addtag = Add Tag
|
schematic.addtag = Gehitu etiketa
|
||||||
schematic.texttag = Text Tag
|
schematic.texttag = Etiketaren testua
|
||||||
schematic.icontag = Icon Tag
|
schematic.icontag = Etiketaren ikonoa
|
||||||
schematic.renametag = Rename Tag
|
schematic.renametag = Aldatu etiketaren izena
|
||||||
schematic.tagdelconfirm = Delete this tag completely?
|
schematic.tagdelconfirm = Ezabatu etiketa hau erabat?
|
||||||
schematic.tagexists = That tag already exists.
|
schematic.tagexists = Etiketa badago aurretik.
|
||||||
stats = Stats
|
stats = Estatistikak
|
||||||
stats.wave = Waves Defeated
|
stats.wave = Gainditutako boladak
|
||||||
stats.unitsCreated = Units Created
|
stats.unitsCreated = Sortutako unitateak
|
||||||
stats.enemiesDestroyed = Enemies Destroyed
|
stats.enemiesDestroyed = Suntsitutako etsaiak
|
||||||
stats.built = Buildings Built
|
stats.built = Eraikitako eraikinak
|
||||||
stats.destroyed = Buildings Destroyed
|
stats.destroyed = Suntsitutako eraikinak
|
||||||
stats.deconstructed = Buildings Deconstructed
|
stats.deconstructed = Deseraikitako eraikinak
|
||||||
stats.playtime = Time Played
|
stats.playtime = Jolastutako denbora
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Elementu globalak
|
||||||
map.delete = Ziur al zaude "[accent]{0}[]" mapa ezabatu nahi duzula?
|
map.delete = Ziur al zaude "[accent]{0}[]" mapa ezabatu nahi duzula?
|
||||||
level.highscore = Marka: [accent]{0}
|
level.highscore = Marka: [accent]{0}
|
||||||
level.select = Maila hautaketa
|
level.select = Maila hautaketa
|
||||||
@@ -103,8 +103,8 @@ joingame = Batu partidara
|
|||||||
customgame = Partida pertsonalizatua
|
customgame = Partida pertsonalizatua
|
||||||
newgame = Partida berria
|
newgame = Partida berria
|
||||||
none = <bat ere ez>
|
none = <bat ere ez>
|
||||||
none.found = [lightgray]<none found>
|
none.found = [lightgray]<ez da aurkitu>
|
||||||
none.inmap = [lightgray]<none in map>
|
none.inmap = [lightgray]<ez da aurkitu mapan>
|
||||||
minimap = Mapatxoa
|
minimap = Mapatxoa
|
||||||
position = Posizioa
|
position = Posizioa
|
||||||
close = Itxi
|
close = Itxi
|
||||||
@@ -116,7 +116,7 @@ maps.browse = Arakatu mapak
|
|||||||
continue = Jarraitu
|
continue = Jarraitu
|
||||||
maps.none = [lightgray]Ez da maparik aurkitu!
|
maps.none = [lightgray]Ez da maparik aurkitu!
|
||||||
invalid = Baliogabea
|
invalid = Baliogabea
|
||||||
pickcolor = Pick Color
|
pickcolor = Hautatu kolorea
|
||||||
preparingconfig = Konfigurazioa prestatzen
|
preparingconfig = Konfigurazioa prestatzen
|
||||||
preparingcontent = Edukia prestatzen
|
preparingcontent = Edukia prestatzen
|
||||||
uploadingcontent = Edukia igotzen
|
uploadingcontent = Edukia igotzen
|
||||||
@@ -124,80 +124,82 @@ uploadingpreviewfile = Aurrebista fitxategia igotzen
|
|||||||
committingchanges = Aldaketak aplikatzen
|
committingchanges = Aldaketak aplikatzen
|
||||||
done = Egina
|
done = Egina
|
||||||
feature.unsupported = Zure gailuak ez du ezaugarri hau onartzen.
|
feature.unsupported = Zure gailuak ez du ezaugarri hau onartzen.
|
||||||
mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[]
|
mods.initfailed = [red]⚠[] Aurreko Mindustry instantziak ezin izan du abiatu. Ziur aski mod-en erruz.\n\nEtengabeko kraskatzean ekiditeko, [red]mod guztiak desgaitu dira.[]
|
||||||
mods = Mod-ak
|
mods = Mod-ak
|
||||||
mods.none = [lightgray]Ez da mod-ik aurkitu!
|
mods.none = [lightgray]Ez da mod-ik aurkitu!
|
||||||
mods.guide = Mod-ak sortzeko gida
|
mods.guide = Mod-ak sortzeko gida
|
||||||
mods.report = Eman akatsaren berri
|
mods.report = Eman akatsaren berri
|
||||||
mods.openfolder = Ireki Mod-en karpeta
|
mods.openfolder = Ireki Mod-en karpeta
|
||||||
mods.viewcontent = View Content
|
mods.viewcontent = Ikusi edukia
|
||||||
mods.reload = Reload
|
mods.reload = Birkargatu
|
||||||
mods.reloadexit = The game will now exit, to reload mods.
|
mods.reloadexit = Jolsa irten egingo da, mod-ak birkargatzeko.
|
||||||
mod.installed = [[Installed]
|
mod.installed = [[Instalatuta]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Gaituta
|
mod.enabled = [lightgray]Gaituta
|
||||||
mod.disabled = [scarlet]Desgaituta
|
mod.disabled = [scarlet]Desgaituta
|
||||||
mod.multiplayer.compatible = [gray]Multiplayer Compatible
|
mod.multiplayer.compatible = [gray]Hainbat jokalariekin bateragarria
|
||||||
mod.disable = Desgaitu
|
mod.disable = Desgaitu
|
||||||
mod.content = Content:
|
mod.content = Edukia:
|
||||||
mod.delete.error = Ezin izan da mod-a ezabatu. Agian fitxategia erabilia izaten ari da.
|
mod.delete.error = Ezin izan da mod-a ezabatu. Agian fitxategia erabilia izaten ari da.
|
||||||
mod.incompatiblegame = [red]Outdated Game
|
mod.incompatiblegame = [red]Outdated Game
|
||||||
mod.incompatiblemod = [red]Incompatible
|
mod.incompatiblemod = [red]Incompatible
|
||||||
mod.blacklisted = [red]Unsupported
|
mod.blacklisted = [red]Unsupported
|
||||||
mod.unmetdependencies = [red]Unmet Dependencies
|
mod.unmetdependencies = [red]Unmet Dependencies
|
||||||
mod.erroredcontent = [scarlet]Content Errors
|
mod.erroredcontent = [scarlet]Edukiaren erroreak
|
||||||
mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function.
|
mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function.
|
||||||
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
||||||
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
||||||
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
||||||
mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them.
|
mod.erroredcontent.details = This mod caused errors when loading. Ask the mod author to fix them.
|
||||||
mod.errors = Errors have occurred loading content.
|
mod.errors = Erroreak gertatu dira edukia kargatzean.
|
||||||
mod.noerrorplay = [scarlet]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
|
mod.noerrorplay = [scarlet]Erroreak dituzten mod-ak dituzu.[] Desgaitu kaltetutako mod-ak edo konpondu erroreak jolastu aurretik.
|
||||||
mod.nowdisabled = [scarlet]'{0}' mod-ak menpekotasunak ditu faltan:[accent] {1}\n[lightgray]Aurretik beste mod hauek deskargatu behar dira.\nMod hau automatikoki desgaituko da.
|
mod.nowdisabled = [scarlet]'{0}' mod-ak menpekotasunak ditu faltan:[accent] {1}\n[lightgray]Aurretik beste mod hauek deskargatu behar dira.\nMod hau automatikoki desgaituko da.
|
||||||
mod.enable = Gaitu
|
mod.enable = Gaitu
|
||||||
mod.requiresrestart = Jolasa itxi egingo da mod-aren aldaketak aplikatzeko.
|
mod.requiresrestart = Jolasa itxi egingo da mod-aren aldaketak aplikatzeko.
|
||||||
mod.reloadrequired = [scarlet]Birkargatu behar da
|
mod.reloadrequired = [scarlet]Birkargatu behar da
|
||||||
mod.import = Importatu Mod-a
|
mod.import = Inportatu Mod-a
|
||||||
mod.import.file = Import File
|
mod.import.file = Inportatu fitxategia
|
||||||
mod.import.github = Inportatu GitHub Mod-a
|
mod.import.github = Inportatu GitHub Mod-a
|
||||||
mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source!
|
mod.jarwarn = [scarlet]JAR mod-ak ez-ziurrak dira berez.[]\nEgiaztatu konfidantzako itur batetik inportatzen duzula!
|
||||||
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod.
|
mod.item.remove = Hau[accent] '{0}'[] mod-aren parte da. Kentzeko, desinstalatu mod-a.
|
||||||
mod.remove.confirm = Mod hau ezabatuko da.
|
mod.remove.confirm = Mod hau ezabatuko da.
|
||||||
mod.author = [lightgray]Egilea:[] {0}
|
mod.author = [lightgray]Egilea:[] {0}
|
||||||
mod.missing = Gordetako partida honek eguneratu dituzun edo jada instalatuta ez dituzun mod-ak ditu. Gordetako partida izorratu daiteke. Ziur kargatu nahi duzula?\n[lightgray]Mod-ak:\n{0}
|
mod.missing = Gordetako partida honek eguneratu dituzun edo jada instalatuta ez dituzun mod-ak ditu. Gordetako partida izorratu daiteke. Ziur kargatu nahi duzula?\n[lightgray]Mod-ak:\n{0}
|
||||||
mod.preview.missing = Mod hau tailerrean argitaratu aurretik, aurrebista bat gehitu behar diozu.\nKokatu[accent] preview.png[] izeneko irudi bat mod-aren karpetan eta saiatu berriro.
|
mod.preview.missing = Mod hau tailerrean argitaratu aurretik, aurrebista bat gehitu behar diozu.\nKokatu[accent] preview.png[] izeneko irudi bat mod-aren karpetan eta saiatu berriro.
|
||||||
mod.folder.missing = Karpeta formatuko mod-ak besterik ezin dira argitaratu tailerrean.\nEdozein mod karpetara bihurtzeko, deskopnrimitu fitxategia eta ezabatu zip zaharra, gero berrabiarazi jolasa edo birkargatu zure mod-ak.
|
mod.folder.missing = Karpeta formatuko mod-ak besterik ezin dira argitaratu tailerrean.\nEdozein mod karpetara bihurtzeko, deskopnrimitu fitxategia eta ezabatu zip zaharra, gero berrabiarazi jolasa edo birkargatu zure mod-ak.
|
||||||
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game.
|
mod.scripts.disable = Zure gailuak ez ditu scrit-ak dituzten mod-ak onartzen. Mod hauek desgaitu behar dituzu jolasteko.
|
||||||
|
|
||||||
about.button = Honi buruz
|
about.button = Honi buruz
|
||||||
name = Izena:
|
name = Izena:
|
||||||
noname = Hautatu[accent] jokalari-izena[] aurretik.
|
noname = Hautatu[accent] jokalari-izena[] aurretik.
|
||||||
search = Search:
|
search = Bilatu:
|
||||||
planetmap = Planet Map
|
planetmap = Planeta-mapa
|
||||||
launchcore = Launch Core
|
launchcore = Egotzi muina
|
||||||
filename = Fitxategi-izena:
|
filename = Fitxategi-izena:
|
||||||
unlocked = Eduki berria desblokeatuta!
|
unlocked = Eduki berria desblokeatuta!
|
||||||
available = New research available!
|
available = Ikerketa berria eskuragarri!
|
||||||
unlock.incampaign = < Unlock in campaign for details >
|
unlock.incampaign = < Desblokeatu kanpainan xehetasunetarako >
|
||||||
campaign.select = Select Starting Campaign
|
campaign.select = Hautatu hasierako kanpaina
|
||||||
campaign.none = [lightgray]Select a planet to start on.\nThis can be switched at any time.
|
campaign.none = [lightgray]hautatu hasteko planeta.\nHau edonoiz aldatu daiteke.
|
||||||
campaign.erekir = Newer, more polished content. Mostly linear campaign progression.\n\nHigher quality maps and overall experience.
|
campaign.erekir = [accent]Jokalari berrientzak aholkatua.[]\n\nEduki berriagoa eta landuagoa. Kanpaina aurreratze lineala.\n\nKalitate hobeko mapak eta esperientzia orokorra.
|
||||||
campaign.serpulo = Older content; the classic experience. More open-ended.\n\nPotentially unbalanced maps and campaign mechanics. Less polished.
|
campaign.serpulo = [scarlet]Ez aholkatua jokalari berrientzat.[]\n\nEduki zaharra; esperientzia klasikoa. Irekiagoa.\n\nAgian desorekatuak dauden mapak eta kanpainaren mekanikak. Ez horren landua.
|
||||||
|
|
||||||
|
|
||||||
completed = [accent]Ikertua
|
completed = [accent]Ikertua
|
||||||
techtree = Teknologia zuhaitza
|
techtree = Teknologia zuhaitza
|
||||||
techtree.select = Tech Tree Selection
|
techtree.select = Teknologia zuhaitzeko hautaketa
|
||||||
techtree.serpulo = Serpulo
|
techtree.serpulo = Serpulo
|
||||||
techtree.erekir = Erekir
|
techtree.erekir = Erekir
|
||||||
research.load = Load
|
research.load = Kargatu
|
||||||
research.discard = Discard
|
research.discard = Baztertu
|
||||||
research.list = [lightgray]Ikertu:
|
research.list = [lightgray]Ikertu:
|
||||||
research = Ikertu
|
research = Ikertu
|
||||||
researched = [lightgray]{0} ikertuta.
|
researched = [lightgray]{0} ikertuta.
|
||||||
research.progress = {0}% complete
|
research.progress = {0}% osatuta
|
||||||
players = {0} jokalari konektatuta
|
players = {0} jokalari konektatuta
|
||||||
players.single = Jokalari {0} konektatuta
|
players.single = Jokalari {0} konektatuta
|
||||||
players.search = search
|
players.search = bilatu
|
||||||
players.notfound = [gray]no players found
|
players.notfound = [gray]ez da jokalaririk aurkitu
|
||||||
server.closing = [accent]Zerbitzaria ixten...
|
server.closing = [accent]Zerbitzaria ixten...
|
||||||
server.kicked.kick = Zerbitzaritik kanporatu zaituzte!
|
server.kicked.kick = Zerbitzaritik kanporatu zaituzte!
|
||||||
server.kicked.whitelist = Ez zaude hemengo zerrenda zurian.
|
server.kicked.whitelist = Ez zaude hemengo zerrenda zurian.
|
||||||
@@ -214,7 +216,7 @@ server.kicked.nameEmpty = Aukeratu duzun izena baliogabea da.
|
|||||||
server.kicked.idInUse = Bazaude zerbitzari honetan! Ezin zara bi kontu desberdinekin konektatu.
|
server.kicked.idInUse = Bazaude zerbitzari honetan! Ezin zara bi kontu desberdinekin konektatu.
|
||||||
server.kicked.customClient = Zerbitzari honek ez ditu konpilazio pertsonalizatuak onartzen. Deskargatu bertsio ofizial bat.
|
server.kicked.customClient = Zerbitzari honek ez ditu konpilazio pertsonalizatuak onartzen. Deskargatu bertsio ofizial bat.
|
||||||
server.kicked.gameover = Partida amaitu da!
|
server.kicked.gameover = Partida amaitu da!
|
||||||
server.kicked.serverRestarting = The server is restarting.
|
server.kicked.serverRestarting = Zerbitzaria berrabiaratzen ari da.
|
||||||
server.versions = Zure bertsioa:[accent] {0}[]\nZerbitzariaren bertsioa:[accent] {1}[]
|
server.versions = Zure bertsioa:[accent] {0}[]\nZerbitzariaren bertsioa:[accent] {1}[]
|
||||||
host.info = [accent]Ostalaria[] botoiak zerbitzari bat abiatzen du [scarlet]6567[] atakan.\n[lightgray]wifi edo sare lokal[] berean dagoen edonor zure zerbitzaria ikusi ahal beharko luke.\n\nJendea edonondik IP-a erabilita konektatu ahal izatea nahi baduzu, [accent]ataka birbidaltzea[] ezinbestekoa da.\n\n[lightgray]Oharra: Inork zure sare lokalean partidara elkartzeko arazoak baditu, egiaztatu Mindustry-k baimena duela sare lokalera elkartzeko suebakiaren ezarpenetan. Kontuan izan sare publiko batzuk ez dutela zerbitzarien bilaketa baimentzen.
|
host.info = [accent]Ostalaria[] botoiak zerbitzari bat abiatzen du [scarlet]6567[] atakan.\n[lightgray]wifi edo sare lokal[] berean dagoen edonor zure zerbitzaria ikusi ahal beharko luke.\n\nJendea edonondik IP-a erabilita konektatu ahal izatea nahi baduzu, [accent]ataka birbidaltzea[] ezinbestekoa da.\n\n[lightgray]Oharra: Inork zure sare lokalean partidara elkartzeko arazoak baditu, egiaztatu Mindustry-k baimena duela sare lokalera elkartzeko suebakiaren ezarpenetan. Kontuan izan sare publiko batzuk ez dutela zerbitzarien bilaketa baimentzen.
|
||||||
join.info = Hemen, konektatzeko [accent]zerbitzari baten IP-a[] sartu dezakezu konektatzeko, edo [accent]sare lokaleko[] zerbitzariak bilatu.\nLAN zein WAN sareetan onartzen dira hainbat jokalarien partidak .\n\n[lightgray]Oharra: Ez dago zerbitzarien zerrenda global automatikorik, beste inorekin IP bidez konektatu nahi baduzu, ostalariari bere IP helbidea eskatu beharko diozu.
|
join.info = Hemen, konektatzeko [accent]zerbitzari baten IP-a[] sartu dezakezu konektatzeko, edo [accent]sare lokaleko[] zerbitzariak bilatu.\nLAN zein WAN sareetan onartzen dira hainbat jokalarien partidak .\n\n[lightgray]Oharra: Ez dago zerbitzarien zerrenda global automatikorik, beste inorekin IP bidez konektatu nahi baduzu, ostalariari bere IP helbidea eskatu beharko diozu.
|
||||||
@@ -230,14 +232,14 @@ server.refreshing = Zerbitzaria freskatzen
|
|||||||
hosts.none = [lightgray]Ez da partida lokalik aurkitu!
|
hosts.none = [lightgray]Ez da partida lokalik aurkitu!
|
||||||
host.invalid = [scarlet]Ezin da ostalarira konektatu.
|
host.invalid = [scarlet]Ezin da ostalarira konektatu.
|
||||||
|
|
||||||
servers.local = Local Servers
|
servers.local = Zerbitzari lokalak
|
||||||
servers.local.steam = Open Games & Local Servers
|
servers.local.steam = Ireki partidak eta zerbitzari lokalak
|
||||||
servers.remote = Remote Servers
|
servers.remote = Urruneko zerbitzariak
|
||||||
servers.global = Community Servers
|
servers.global = Komunitatearen zerbitzariak
|
||||||
servers.disclaimer = Community servers are [accent]not[] owned or controlled by the developer.\n\nServers may contain user-generated content that is not appropriate for all ages.
|
servers.disclaimer = Komunitatearen zerbitzariak [accent]ez[] ditu garatzaileak kontrolatzen.\n\nZerbitzari hauek erabiltzaileek sortutako edukia izan dezakete, eta ez du zertan adin guztientzat egokia izan behar.
|
||||||
servers.showhidden = Show Hidden Servers
|
servers.showhidden = Erakutsi ezkutatutako zerbitzariak
|
||||||
server.shown = Shown
|
server.shown = Erakutsita
|
||||||
server.hidden = Hidden
|
server.hidden = Ezkutatuta
|
||||||
viewplayer = Viewing Player: [accent]{0}
|
viewplayer = Viewing Player: [accent]{0}
|
||||||
|
|
||||||
trace = Trazatu jokalaria
|
trace = Trazatu jokalaria
|
||||||
@@ -911,6 +913,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Tehdas
|
|||||||
ability.shieldregenfield = Kilvenvahvistuskenttä
|
ability.shieldregenfield = Kilvenvahvistuskenttä
|
||||||
ability.movelightning = Salamointi liikkuessa
|
ability.movelightning = Salamointi liikkuessa
|
||||||
ability.shieldarc = Kilpikaari
|
ability.shieldarc = Kilpikaari
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energiakenttä: [accent]{0}[] vahinko ~ [accent]{1}[] palikkaa / [accent]{2}[] kohdetta
|
ability.energyfield = Energiakenttä: [accent]{0}[] vahinko ~ [accent]{1}[] palikkaa / [accent]{2}[] kohdetta
|
||||||
bar.onlycoredeposit = Sijoittaminen sallittua vain ytimeen
|
bar.onlycoredeposit = Sijoittaminen sallittua vain ytimeen
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -931,6 +931,7 @@ ability.unitspawn = Usine de {0}
|
|||||||
ability.shieldregenfield = Champ de régénération de bouclier
|
ability.shieldregenfield = Champ de régénération de bouclier
|
||||||
ability.movelightning = Déplacement éclair
|
ability.movelightning = Déplacement éclair
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Champ d'énergie: [accent]{0}[] dégâts ~ [accent]{1}[] blocs / [accent]{2}[] cibles
|
ability.energyfield = Champ d'énergie: [accent]{0}[] dégâts ~ [accent]{1}[] blocs / [accent]{2}[] cibles
|
||||||
|
|
||||||
bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé
|
bar.onlycoredeposit = Seul le dépôt de ressources dans le Noyau est autorisé
|
||||||
|
|||||||
@@ -920,6 +920,7 @@ ability.unitspawn = {0} Gyár
|
|||||||
ability.shieldregenfield = Pajzsos regeneráló mező
|
ability.shieldregenfield = Pajzsos regeneráló mező
|
||||||
ability.movelightning = Világítás
|
ability.movelightning = Világítás
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -931,6 +931,7 @@ ability.unitspawn = {0} Pabrik
|
|||||||
ability.shieldregenfield = Bidang Regenerasi Perisai
|
ability.shieldregenfield = Bidang Regenerasi Perisai
|
||||||
ability.movelightning = Pergerakan Petir
|
ability.movelightning = Pergerakan Petir
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Bidang Tenaga: [accent]{0}[] kerusakan ~ [accent]{1}[] blok / [accent]{2}[] target
|
ability.energyfield = Bidang Tenaga: [accent]{0}[] kerusakan ~ [accent]{1}[] blok / [accent]{2}[] target
|
||||||
|
|
||||||
bar.onlycoredeposit = Hanya Penyetoran Inti yang Diizinkan
|
bar.onlycoredeposit = Hanya Penyetoran Inti yang Diizinkan
|
||||||
|
|||||||
@@ -918,6 +918,7 @@ ability.unitspawn = {0} Fabbrica
|
|||||||
ability.shieldregenfield = Campo di Rigenerazione Scudo
|
ability.shieldregenfield = Campo di Rigenerazione Scudo
|
||||||
ability.movelightning = Movimento Fulminante
|
ability.movelightning = Movimento Fulminante
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Campo energetico: [accent]{0}[] danno ~ [accent]{1}[] blocchi / [accent]{2}[] obbiettivi
|
ability.energyfield = Campo energetico: [accent]{0}[] danno ~ [accent]{1}[] blocchi / [accent]{2}[] obbiettivi
|
||||||
bar.onlycoredeposit = Concesso solo il deposito al nucleo
|
bar.onlycoredeposit = Concesso solo il deposito al nucleo
|
||||||
|
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = {0} 生産
|
|||||||
ability.shieldregenfield = シールドリペアフィールド
|
ability.shieldregenfield = シールドリペアフィールド
|
||||||
ability.movelightning = ムーブメントライトニング
|
ability.movelightning = ムーブメントライトニング
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = エネルギー範囲: [accent]{0}[] ダメージ ~ [accent]{1}[] ブロック / [accent]{2}[] ターゲット
|
ability.energyfield = エネルギー範囲: [accent]{0}[] ダメージ ~ [accent]{1}[] ブロック / [accent]{2}[] ターゲット
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -144,16 +144,16 @@ mod.multiplayer.compatible = [gray]멀티플레이어 호환 가능
|
|||||||
mod.disable = 비활성화
|
mod.disable = 비활성화
|
||||||
mod.content = 콘텐츠:
|
mod.content = 콘텐츠:
|
||||||
mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다.
|
mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다.
|
||||||
mod.incompatiblegame = [red]Outdated Game
|
mod.incompatiblegame = [red]구버전 게임
|
||||||
mod.incompatiblemod = [red]Incompatible
|
mod.incompatiblemod = [red]호환되지 않음
|
||||||
mod.blacklisted = [red]Unsupported
|
mod.blacklisted = [red]지원하지 않음
|
||||||
mod.unmetdependencies = [red]Unmet Dependencies
|
mod.unmetdependencies = [red]충촉되지 않은 종속성
|
||||||
mod.erroredcontent = [scarlet]콘텐츠 오류
|
mod.erroredcontent = [scarlet]콘텐츠 오류
|
||||||
mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function.
|
mod.requiresversion.details = 게임 버전 요구: [accent]{0}[]\n당신의 게임은 구버전입니다. 이 모드가 작동하려면 최신 버전의 게임이 필요합니다. (베타/알파 릴리즈일 가능성이 있음).
|
||||||
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
mod.outdatedv7.details = 이 모드는 최신 버전의 게임과 호환되지 않습니다. 반드시 작성자가 업데이트해야 하고, [accent]mod.json[] 파일에 [accent]최소게임버전: 136[]을 추가해야 합니다.
|
||||||
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
mod.blacklisted.details = 이 모드는 이 버전의 게임에서 충돌 또는 기타 문제를 일으키는 것으로 인해 수동으로 블랙리스트에 올라와 있습니다. 사용하지 마세요.
|
||||||
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
mod.missingdependencies.details = 이 모드에는 종속성이 없음: {0}
|
||||||
mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them.
|
mod.erroredcontent.details = 이 게임은 로딩하는 동안 오류가 발생했습니다. 모드 작성자에게 수정하도록 요청하세요.
|
||||||
mod.errors = 콘텐츠를 불러오는 중에 오류가 발생함
|
mod.errors = 콘텐츠를 불러오는 중에 오류가 발생함
|
||||||
mod.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화하거나 플레이하기 전에 오류를 수정하세요.
|
mod.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화하거나 플레이하기 전에 오류를 수정하세요.
|
||||||
mod.nowdisabled = [scarlet]모드 '{0}'에 필요한 종속성이 없습니다:[accent] {1}\n[lightgray]이 모드를 먼저 내려받아야 합니다.\n이 모드는 자동으로 비활성화됩니다.
|
mod.nowdisabled = [scarlet]모드 '{0}'에 필요한 종속성이 없습니다:[accent] {1}\n[lightgray]이 모드를 먼저 내려받아야 합니다.\n이 모드는 자동으로 비활성화됩니다.
|
||||||
@@ -767,12 +767,12 @@ sector.marsh.name = 습지
|
|||||||
sector.peaks.name = 산봉우리
|
sector.peaks.name = 산봉우리
|
||||||
sector.ravine.name = 협곡
|
sector.ravine.name = 협곡
|
||||||
sector.caldera-erekir.name = 칼데라
|
sector.caldera-erekir.name = 칼데라
|
||||||
sector.stronghold.name = Stronghold
|
sector.stronghold.name = 거점
|
||||||
sector.crevice.name = Crevice
|
sector.crevice.name = 틈새
|
||||||
sector.siege.name = Siege
|
sector.siege.name = 포위
|
||||||
sector.crossroads.name = Crossroads
|
sector.crossroads.name = 교차로
|
||||||
sector.karst.name = Karst
|
sector.karst.name = 카르스트
|
||||||
sector.origin.name = Origin
|
sector.origin.name = 근원
|
||||||
sector.onset.description = 튜토리얼 지역. 아직 목표가 만들어지지 않았습니다. 정보를 더 기다리십시오.
|
sector.onset.description = 튜토리얼 지역. 아직 목표가 만들어지지 않았습니다. 정보를 더 기다리십시오.
|
||||||
sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으십시오. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하십시오.
|
sector.aegis.description = 적은 방어막으로 보호받고 있습니다. 이 구역에서 실험적인 방어막 차단기 모듈이 감지되었습니다.\n이 구조물을 찾으십시오. 텅스텐을 공급해 방어막 차단기를 가동하고 적의 기지를 파괴하십시오.
|
||||||
sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버 유닛이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하십시오.
|
sector.lake.description = 이 지역의 광재 호수는 기체의 활동범위를 크게 제한시킵니다. 호버 유닛이 유일한 선택지입니다.\n[accent]함선 재구성기[]를 연구하고 [accent]일루드[]를 가능한 한 빨리 생산하십시오.
|
||||||
@@ -924,6 +924,7 @@ ability.unitspawn = {0} 공장
|
|||||||
ability.shieldregenfield = 방어막 복구 필드
|
ability.shieldregenfield = 방어막 복구 필드
|
||||||
ability.movelightning = 가속 전격
|
ability.movelightning = 가속 전격
|
||||||
ability.shieldarc = 방어막 아크
|
ability.shieldarc = 방어막 아크
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = 에너지 필드: [accent]{1}[]타일 내 [accent]{2}[]개 목표물에게 [accent]{0}[]피해량
|
ability.energyfield = 에너지 필드: [accent]{1}[]타일 내 [accent]{2}[]개 목표물에게 [accent]{0}[]피해량
|
||||||
|
|
||||||
bar.onlycoredeposit = 코어에만 투입할 수 있습니다
|
bar.onlycoredeposit = 코어에만 투입할 수 있습니다
|
||||||
@@ -1104,7 +1105,7 @@ keybind.mouse_move.name = 커서를 따라서 이동
|
|||||||
keybind.pan.name = 팬 보기
|
keybind.pan.name = 팬 보기
|
||||||
keybind.boost.name = 이륙
|
keybind.boost.name = 이륙
|
||||||
keybind.command_mode.name = 명령 모드
|
keybind.command_mode.name = 명령 모드
|
||||||
keybind.rebuild_select.name = Rebuild Region
|
keybind.rebuild_select.name = 지역 재건
|
||||||
keybind.schematic_select.name = 영역 설정
|
keybind.schematic_select.name = 영역 설정
|
||||||
keybind.schematic_menu.name = 설계도 메뉴
|
keybind.schematic_menu.name = 설계도 메뉴
|
||||||
keybind.schematic_flip_x.name = 설계도 X축 뒤집기
|
keybind.schematic_flip_x.name = 설계도 X축 뒤집기
|
||||||
@@ -1130,7 +1131,7 @@ keybind.select.name = 선택/공격
|
|||||||
keybind.diagonal_placement.name = 대각선 설치
|
keybind.diagonal_placement.name = 대각선 설치
|
||||||
keybind.pick.name = 블록 선택
|
keybind.pick.name = 블록 선택
|
||||||
keybind.break_block.name = 블록 파괴
|
keybind.break_block.name = 블록 파괴
|
||||||
keybind.select_all_units = Select All Units
|
keybind.select_all_units = 전체 기체 선택
|
||||||
keybind.deselect.name = 선택해제
|
keybind.deselect.name = 선택해제
|
||||||
keybind.pickupCargo.name = 화물 집기
|
keybind.pickupCargo.name = 화물 집기
|
||||||
keybind.dropCargo.name = 화물 내려놓기
|
keybind.dropCargo.name = 화물 내려놓기
|
||||||
@@ -1442,8 +1443,8 @@ block.distributor.name = 대형 분배기
|
|||||||
block.sorter.name = 필터
|
block.sorter.name = 필터
|
||||||
block.inverted-sorter.name = 반전 필터
|
block.inverted-sorter.name = 반전 필터
|
||||||
block.message.name = 메모 블록
|
block.message.name = 메모 블록
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = 보강된 메모 블록
|
||||||
block.world-message.name = World Message
|
block.world-message.name = 세계 메모 블록
|
||||||
block.illuminator.name = 조명
|
block.illuminator.name = 조명
|
||||||
block.overflow-gate.name = 포화 필터
|
block.overflow-gate.name = 포화 필터
|
||||||
block.underflow-gate.name = 불포화 필터
|
block.underflow-gate.name = 불포화 필터
|
||||||
@@ -1540,7 +1541,7 @@ block.payload-router.name = 화물 분배기
|
|||||||
block.duct.name = 도관
|
block.duct.name = 도관
|
||||||
block.duct-router.name = 도관 분배기
|
block.duct-router.name = 도관 분배기
|
||||||
block.duct-bridge.name = 도관 다리
|
block.duct-bridge.name = 도관 다리
|
||||||
block.large-payload-mass-driver.name = Large Payload Mass Driver
|
block.large-payload-mass-driver.name = 대형 화물 매스 드라이버
|
||||||
block.payload-void.name = 화물 소멸기
|
block.payload-void.name = 화물 소멸기
|
||||||
block.payload-source.name = 화물 공급기
|
block.payload-source.name = 화물 공급기
|
||||||
block.disassembler.name = 광재 분해기
|
block.disassembler.name = 광재 분해기
|
||||||
@@ -1620,7 +1621,7 @@ block.electric-heater.name = 전기 가열기
|
|||||||
block.slag-heater.name = 광재 가열기
|
block.slag-heater.name = 광재 가열기
|
||||||
block.phase-heater.name = 메타 가열기
|
block.phase-heater.name = 메타 가열기
|
||||||
block.heat-redirector.name = 열 전송기
|
block.heat-redirector.name = 열 전송기
|
||||||
block.heat-router.name = Heat Router
|
block.heat-router.name = 열 분배기
|
||||||
block.slag-incinerator.name = 광재 소각로
|
block.slag-incinerator.name = 광재 소각로
|
||||||
block.carbide-crucible.name = 탄화물 도가니
|
block.carbide-crucible.name = 탄화물 도가니
|
||||||
block.slag-centrifuge.name = 광재 원심분리기
|
block.slag-centrifuge.name = 광재 원심분리기
|
||||||
@@ -1696,7 +1697,7 @@ block.payload-mass-driver.name = 화물 매스 드라이버
|
|||||||
block.small-deconstructor.name = 소형 화물 분해기
|
block.small-deconstructor.name = 소형 화물 분해기
|
||||||
block.canvas.name = 도화지
|
block.canvas.name = 도화지
|
||||||
block.world-processor.name = 월드 프로세서
|
block.world-processor.name = 월드 프로세서
|
||||||
block.world-cell.name = 월드 셀
|
block.world-cell.name = 세계 셀
|
||||||
block.tank-fabricator.name = 전차 조립기
|
block.tank-fabricator.name = 전차 조립기
|
||||||
block.mech-fabricator.name = 기계 조립기
|
block.mech-fabricator.name = 기계 조립기
|
||||||
block.ship-fabricator.name = 함선 조립기
|
block.ship-fabricator.name = 함선 조립기
|
||||||
@@ -1740,8 +1741,8 @@ hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을
|
|||||||
hint.research.mobile = 새 기술을 연구하려면 \ue88c [accent]메뉴[] 아래의 \ue875 [accent]연구[]버튼을 누르십시오.
|
hint.research.mobile = 새 기술을 연구하려면 \ue88c [accent]메뉴[] 아래의 \ue875 [accent]연구[]버튼을 누르십시오.
|
||||||
hint.unitControl = 아군 기체와 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른 채로 [accent]클릭[] 하십시오.
|
hint.unitControl = 아군 기체와 포탑을 조종하려면 [accent][[왼쪽 ctrl][]을 누른 채로 [accent]클릭[] 하십시오.
|
||||||
hint.unitControl.mobile = 아군 기체와 포탑을 조종하려면 해당 개체를 [accent]빠르게 두 번 누르십시오[].
|
hint.unitControl.mobile = 아군 기체와 포탑을 조종하려면 해당 개체를 [accent]빠르게 두 번 누르십시오[].
|
||||||
hint.unitSelectControl = To control units, enter [accent]command mode[] by holding [accent]L-shift.[]\nWhile in command mode, click and drag to select units. [accent]Right-click[] a location or target to command units there.
|
hint.unitSelectControl = 기체를 조종하려면, [accent]왼쪽 shift[]를 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 누르거나 끌어서 기체를 선택합니다. [accent]우클릭[]으로 기체에게 이동과 공격을 명령할 수 있습니다.
|
||||||
hint.unitSelectControl.mobile = To control units, enter [accent]command mode[] by pressing the [accent]command[] button in the bottom left.\nWhile in command mode, long-press and drag to select units. Tap a location or target to command units there.
|
hint.unitSelectControl.mobile = 기체를 조종하려면, 왼쪽 아래에 있는 [accent]명령[]을 눌러 [accent]명령 모드[]를 활성화하시오.\n명령 모드가 활성화되어 있을 때 길게 누르거나 끌어서 기체를 선택합니다. 눌러서 기체에게 이동과 공격을 명령할 수 있습니다.
|
||||||
hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다.
|
hint.launch = 충분한 자원을 모았으면, 오른쪽 아래의 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다.
|
||||||
hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다.
|
hint.launch.mobile = 충분한 자원을 모았으면, 오른쪽 아래의 \ue88c [accent]메뉴[]에 있는 \ue827 [accent]지도[]에서 주변 지역을 선택해서 [accent]출격[]할 수 있습니다.
|
||||||
hint.schematicSelect = [accent][[F][]를 누른 채로 끌어서 복사하고 붙여넣을 블록을 선택하십시오. \n\n [accent][[마우스 휠][]을 누르면 한 개의 블록만 복사할 수 있습니다.
|
hint.schematicSelect = [accent][[F][]를 누른 채로 끌어서 복사하고 붙여넣을 블록을 선택하십시오. \n\n [accent][[마우스 휠][]을 누르면 한 개의 블록만 복사할 수 있습니다.
|
||||||
@@ -1761,52 +1762,52 @@ hint.presetDifficulty = 이 지역은 [scarlet]위험도가 높은[] 지역입
|
|||||||
hint.coreIncinerate = 코어가 자원으로 가득 찬 후에 받는 모든 자원들은 [accent]소각[]될 것입니다.
|
hint.coreIncinerate = 코어가 자원으로 가득 찬 후에 받는 모든 자원들은 [accent]소각[]될 것입니다.
|
||||||
hint.factoryControl = 기체 공장의 [accent]출력 방향[]을 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 마우스 오른쪽 버튼으로 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다.
|
hint.factoryControl = 기체 공장의 [accent]출력 방향[]을 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 마우스 오른쪽 버튼으로 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다.
|
||||||
hint.factoryControl.mobile = 기체 공장의 [accent]출력 방향[]을 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 눌러서 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다.
|
hint.factoryControl.mobile = 기체 공장의 [accent]출력 방향[]을 설정하려면, 명령 모드에서 공장 블록을 클릭한 다음, 눌러서 위치를 지정합니다.\n생산된 유닛은 자동으로 그곳으로 이동합니다.
|
||||||
gz.mine = Move near the \uf8c4 [accent]copper ore[] on the ground and click to begin mining.
|
gz.mine = 주변 바닥에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 눌러서 채굴을 시작하세요.
|
||||||
gz.mine.mobile = Move near the \uf8c4 [accent]copper ore[] on the ground and tap it to begin mining.
|
gz.mine.mobile = 주변 바닥에 있는 \uf8c4 [accent]구리 광석[]으로 이동하고, 광석을 눌러서 채굴을 시작하세요.
|
||||||
gz.research = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nClick on a copper patch to place it.
|
gz.research = \ue875 연구 기록을 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 오른쪽 아래에 있는 메뉴에서 선택하세요.\n구리조각 위를 눌러서 배치합니다.
|
||||||
gz.research.mobile = Open the \ue875 tech tree.\nResearch the \uf870 [accent]Mechanical Drill[], then select it from the menu in the bottom right.\nTap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm.
|
gz.research.mobile = \ue875 연구 기록을 여세요.\n\uf870 [accent]기계식 드릴[]을 연구하고, 그 후 오른쪽 아래에 있는 메뉴에서 선택하세요.\n구리조각 위를 눌러서 배치합니다.\n\n오른쪽 아래에서 \ue800 [accent]체크마크[]를 눌러 확정지으세요.
|
||||||
gz.conveyors = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate.
|
gz.conveyors = \uf896 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n클릭하고 끌어서 컨베이어를 길게 배치하세요.\n[accent]스크롤[]해서 방향을 회전할 수 있습니다.
|
||||||
gz.conveyors.mobile = Research and place \uf896 [accent]conveyors[] to move the mined resources\nfrom drills to the core.\n\nHold down your finger for a second and drag to place multiple conveyors.
|
gz.conveyors.mobile = \uf896 [accent]컨베이어[]를 연구하고 배치하여 채굴된 자원을 운반하세요.\n드릴에서 코어로 말이죠.\n\n손가락을 길게 누르고 끌어서 컨베이어를 길게 배치하세요.
|
||||||
gz.drills = Expand the mining operation.\nPlace more Mechanical Drills.\nMine 100 copper.
|
gz.drills = 채굴 작업을 확장하세요.\n기계식 드릴을 더 배치하세요.\n구리 100개 채굴하기.
|
||||||
gz.lead = \uf837 [accent]Lead[] is another commonly used resource.\nSet up drills to mine lead.
|
gz.lead = \uf837 [accent]납[]은 일반적으로 사용되는 또 다른 자원입니다.\n납을 채굴하기 위한 드릴을 설치하세요.
|
||||||
gz.moveup = \ue804 Move up for further objectives.
|
gz.moveup = \ue804 추가 목표를 위해 위로 이동하세요.
|
||||||
gz.turrets = Research and place 2 \uf861 [accent]Duo[] turrets to defend the core.\nDuo turrets require \uf838 [accent]ammo[] from conveyors.
|
gz.turrets = 코어를 보호하기 위해 \uf861 [accent]듀오[] 포탑을 연구하고 2개를 설치하세요.\n듀오 포탑은 컨베이어로부터 \uf838 [accent]탄약[]을 공급받아야 합니다.
|
||||||
gz.duoammo = Supply the Duo turrets with [accent]copper[], using conveyors.
|
gz.duoammo = 컨베이어를 활용하여, 듀오 포탑에 [accent]구리[]를 공급하세요.
|
||||||
gz.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace \uf8ae [accent]copper walls[] around the turrets.
|
gz.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf8ae [accent]구리 벽[]을 배치하세요.
|
||||||
gz.defend = Enemy incoming, prepare to defend.
|
gz.defend = 적이 다가옵니다, 방어 태세를 갖추세요.
|
||||||
gz.aa = Flying units cannot easily be dispatched with standard turrets.\n\uf860 [accent]Scatter[] turrets provide excellent anti-air, but require \uf837 [accent]lead[] as ammo.
|
gz.aa = 비행 기체는 기본 포탑으로는 쉽게 처리할 수 없습니다.\n\uf860 [accent]스캐터[] 포탑은 훌륭한 대공 방어를 자랑하지만, 탄환으로 \uf837 [accent]납[]이 필요합니다.
|
||||||
gz.scatterammo = Supply the Scatter turret with [accent]lead[], using conveyors.
|
gz.scatterammo = 컨베이어를 활용하여,스캐터 포탑에 [accent]납[]을 공급하세요.
|
||||||
gz.supplyturret = [accent]Supply Turret
|
gz.supplyturret = [accent]보급 포탑
|
||||||
gz.zone1 = This is the enemy drop zone.
|
gz.zone1 = 이건 적의 착륙 지점입니다.
|
||||||
gz.zone2 = Anything built in the radius is destroyed when a wave starts.
|
gz.zone2 = 반경에 세워진 모든 것은 단계가 시작되면 파괴됩니다.
|
||||||
gz.zone3 = A wave will begin now.\nGet ready.
|
gz.zone3 = 단계가 지금 시작됩니다.\n준비하세요.
|
||||||
gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[].
|
gz.finish = 포탑을 더 건설하고, 자원을 더 채굴하고,\n그리고 모든 단계를 막아내어 [accent]지역을 점령[]하세요.
|
||||||
onset.mine = Click to mine \uf748 [accent]beryllium[] from walls.\n\nUse [accent][[WASD] to move.
|
onset.mine = 벽에 붙어있는 \uf748 [accent]베릴륨[]을 클릭하여 채굴하세요.\n\n[accent][[WASD]로 움직이세요.
|
||||||
onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls.
|
onset.mine.mobile = Tap to mine \uf748 [accent]beryllium[] from walls.
|
||||||
onset.research = Open the \ue875 tech tree.\nResearch, then place a \uf73e [accent]turbine condenser[] on the vent.\nThis will generate [accent]power[].
|
onset.research = \ue875 연구 기록을 여세요.\n \uf73e [accent]터빈 응결기[]를 연구하고, 구덩이 위에 배치하세요.\n[accent]전력[]을 생산합니다.
|
||||||
onset.bore = Research and place a \uf741 [accent]plasma bore[].\nThis automatically mines resources from walls.
|
onset.bore = \uf741 [accent]플라즈마 채광기[]를 연구하고 배치하세요.\n벽으로부터 자동으로 자원을 채굴합니다.
|
||||||
onset.power = To [accent]power[] the plasma bore, research and place a \uf73d [accent]beam node[].\nConnect the turbine condenser to the plasma bore.
|
onset.power = [accent]전력[]을 플라즈마 채광기로 전달하기 위해선, \uf73d [accent]빔 노드[]를 연구하고 배치하세요.\n터빈 응결기와 플라즈마 채광기를 연결하세요.
|
||||||
onset.ducts = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\nClick and drag to place multiple ducts.\n[accent]Scroll[] to rotate.
|
onset.ducts = \uf799 [accent]도관[]을 연구하고 배치하여 플라즈마 채광기에서 채굴한 자원을 코어로 운반하세요.\n클릭하고 끌어서 도관을 길게 연결하세요.\n[accent]스크롤해서[]해서 방향을 회전할 수 있습니다.
|
||||||
onset.ducts.mobile = Research and place \uf799 [accent]ducts[] to move the mined resources from the plasma bore to the core.\n\nHold down your finger for a second and drag to place multiple ducts.
|
onset.ducts.mobile = \uf799 [accent]도관[]을 연구하고 배치하여 플라즈마 채광기에서 채굴한 자원을 코어로 운반하세요.\n손가락을 길게 누르고 끌어서 도관을 길게 연결하세요.
|
||||||
onset.moremine = Expand the mining operation.\nPlace more Plasma Bores and use beam nodes and ducts to support them.\nMine 200 beryllium.
|
onset.moremine = 채굴 작업을 확장하세요.\n더 많은 플라즈마 채광기를 배치하고 빔 노드와 덕트를 사용하여 보조하세요.\n베릴륨 200개 채굴하기.
|
||||||
onset.graphite = More complex blocks require \uf835 [accent]graphite[].\nSet up plasma bores to mine graphite.
|
onset.graphite = 더 복잡한 건물은 \uf835 [accent]흑연[]이 필요합니다.\n흑연을 채굴하는 플라즈마 채광기를 배치하세요.
|
||||||
onset.research2 = Begin researching [accent]factories[].\nResearch the \uf74d [accent]cliff crusher[] and \uf779 [accent]silicon arc furnace[].
|
onset.research2 = [accent]공장[]을 연구할 시간입니다.\n \uf74d [accent]벽 분쇄기[]와 \uf779 [accent]실리콘 아크 화로[]를 연구하세요.
|
||||||
onset.arcfurnace = The arc furnace needs \uf834 [accent]sand[] and \uf835 [accent]graphite[] to create \uf82f [accent]silicon[].\n[accent]Power[] is also required.
|
onset.arcfurnace = 아크 화로는 \uf834 [accent]모래[]와 \uf835 [accent]흑연[]을 가공하여 \uf82f [accent]실리콘[]을 생산합니다.\n[accent]전력[] 또한 필수입니다.
|
||||||
onset.crusher = Use \uf74d [accent]cliff crushers[] to mine sand.
|
onset.crusher = \uf74d [accent]벽 분쇄기[]를 사용하여 모래를 채굴하세요.
|
||||||
onset.fabricator = Use [accent]units[] to explore the map, defend buildings, and attack the enemy. Research and place a \uf6a2 [accent]tank fabricator[].
|
onset.fabricator = [accent]기체[]는 지도를 정찰하거나, 건물을 보호하거나, 적을 공격할 때 활용할 수 있습니다. \uf6a2 [accent]전차 재조립기[]를 연구하고 배치하세요.
|
||||||
onset.makeunit = Produce a unit.\nUse the "?" button to see selected factory requirements.
|
onset.makeunit = 기체를 생산하세요.\n"?" 버튼을 눌러 선택한 공장의 요구사항을 확인할 수 있습니다.
|
||||||
onset.turrets = Units are effective, but [accent]turrets[] provide better defensive capabilities if used effectively.\nPlace a \uf6eb [accent]Breach[] turret.\nTurrets require \uf748 [accent]ammo[].
|
onset.turrets = 기체는 유용하지만, [accent]포탑[]은 사용하기에 따라 더 나은 방어 성능을 보여줍니다.\n \uf6eb [accent]브리치[] 포탑을 배치하세요.\n포탑은 \uf748 [accent]탄약[]이 필요합니다.
|
||||||
onset.turretammo = Supply the turret with [accent]beryllium ammo.[]
|
onset.turretammo = Supply the turret with [accent]beryllium ammo.[]
|
||||||
onset.walls = [accent]Walls[] can prevent oncoming damage from reaching buildings.\nPlace some \uf6ee [accent]beryllium walls[] around the turret.
|
onset.walls = [accent]벽[]은 건물로 날아오는 공격을 막을 수 있습니다. \n포탑 주변에 \uf6ee [accent]베릴륨 벽[]을 배치하세요.
|
||||||
onset.enemies = Enemy incoming, prepare to defend.
|
onset.enemies = 적이 다가옵니다, 방어 태세를 갖추세요.
|
||||||
onset.attack = The enemy is vulnerable. Counter-attack.
|
onset.attack = 적은 취약한 상태입니다. 반격하세요.
|
||||||
onset.cores = New cores can be placed on [accent]core tiles[].\nNew cores function as forward bases and share a resource inventory with other cores.\nPlace a \uf725 core.
|
onset.cores = 새로운 코어는 [accent]코어 타일[]위에 배치할 수 있습니다.\n새로운 코어는 전진기지 역할을 하며 다른 코어와 저장된 자원을 공유합니다.\n \uf725 코어를 배치하세요.
|
||||||
onset.detect = The enemy will be able to detect you in 2 minutes.\nSet up defenses, mining, and production.
|
onset.detect = 적은 2분 이내에 당신을 탐지할 것입니다.\n생산, 채굴, 방어시설을 구성하세요.
|
||||||
split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [ and ] to pick up and drop)
|
split.pickup = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(화물을 집어올리거나 내리는 기본 키는 [ 그리고 ]입니다)
|
||||||
split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.)
|
split.pickup.mobile = 일부 블록은 코어 기체로 집어올릴 수 있습니다.\n이 [accent]컨테이너[]를 집어올리고 [accent]화물 로더[] 속에 내려놓으세요.\n(무언가를 집어올리거나 내려놓으려면, 길게 누르세요.)
|
||||||
split.acquire = You must acquire some tungsten to build units.
|
split.acquire = 기체를 제조하려면 텅스텐을 습득해야 합니다.
|
||||||
split.build = Units must be transported to the other side of the wall.\nPlace two [accent]Payload Mass Drivers[], one on each side of the wall.\nSet up the link by pressing one of them, then selecting the other.
|
split.build = 기체를 벽의 반대편으로 운반해야 합니다.\n두 개의 [accent]회물 매스 드라이버[]를 각 벽면에 하나씩 배치하세요.\n둘 중 하나를 누른 다음 다른 하나를 선택하여 연결을 설정합니다.
|
||||||
split.container = Similar to the container, units can also be transported using a [accent]Payload Mass Driver[].\nPlace a unit fabricator adjacent to a mass driver to load them, then send them across the wall to attack the enemy base.
|
split.container = 컨테이너와 마찬가지로, 기체도 [accent]화물 매스 드라이버[]를 사용하여 운송할 수 있습니다.\n기체 조립대를 매스 드라이버 근처에 배치하여 기체를 적재한 후, 벽을 가로질러 보내 적 기지를 공격합니다.
|
||||||
|
|
||||||
item.copper.description = 모든 종류의 구조물 및 탄약으로 사용하는 기본 자원입니다.
|
item.copper.description = 모든 종류의 구조물 및 탄약으로 사용하는 기본 자원입니다.
|
||||||
item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포함. 보강되지 않는 한 구조적으로 약함.
|
item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포함. 보강되지 않는 한 구조적으로 약함.
|
||||||
@@ -1850,8 +1851,8 @@ block.derelict = \ue815 [lightgray]잔해
|
|||||||
block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다.
|
block.armored-conveyor.description = 자원을 앞으로 운반합니다. 측면에서 자원을 받아들이지 않습니다.
|
||||||
block.illuminator.description = 발광합니다.
|
block.illuminator.description = 발광합니다.
|
||||||
block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다.
|
block.message.description = 아군 간의 소통을 위한 메시지를 저장합니다.
|
||||||
block.reinforced-message.description = Stores a message for communication between allies.
|
block.reinforced-message.description = 동맹 간의 소통을 위한 메시지를 저장합니다.
|
||||||
block.world-message.description = A message block for use in mapmaking. Cannot be destroyed.
|
block.world-message.description = 지도 작성에 사용되는 메시지 블록. 파괴할 수 없습니다.
|
||||||
block.graphite-press.description = 석탄을 흑연으로 압축합니다.
|
block.graphite-press.description = 석탄을 흑연으로 압축합니다.
|
||||||
block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각수로 물이 필요합니다.
|
block.multi-press.description = 석탄을 흑연으로 압축합니다. 냉각수로 물이 필요합니다.
|
||||||
block.silicon-smelter.description = 석탄과 모래에서 실리콘을 정제합니다.
|
block.silicon-smelter.description = 석탄과 모래에서 실리콘을 정제합니다.
|
||||||
@@ -2003,7 +2004,7 @@ block.core-acropolis.description = 기지의 핵심입니다. 매우 튼튼합
|
|||||||
block.breach.description = 적 대상에게 관통하는 베릴륨 또는 텅스텐 탄환을 발사합니다.
|
block.breach.description = 적 대상에게 관통하는 베릴륨 또는 텅스텐 탄환을 발사합니다.
|
||||||
block.diffuse.description = 넓은 원뿔 모양으로 탄환을 발사합니다. 적 대상을 뒤로 밀어냅니다.
|
block.diffuse.description = 넓은 원뿔 모양으로 탄환을 발사합니다. 적 대상을 뒤로 밀어냅니다.
|
||||||
block.sublimate.description = 적 대상에게 화염을 연속 분사합니다. 장갑을 관통합니다.
|
block.sublimate.description = 적 대상에게 화염을 연속 분사합니다. 장갑을 관통합니다.
|
||||||
block.titan.description = 지상 목표물을 향해 거대한 폭발 포탄을 발사합니다. 하이드로겐이 필요합니다.
|
block.titan.description = 지상 목표물을 향해 거대한 폭발 포탄을 발사합니다. 수소가 필요합니다.
|
||||||
block.afflict.description = 대전된 거대한 조각덩어리 구체를 발사합니다. 열이 필요합니다.
|
block.afflict.description = 대전된 거대한 조각덩어리 구체를 발사합니다. 열이 필요합니다.
|
||||||
block.disperse.description = 공중 목표물을 향해 파편 폭격을 가합니다.
|
block.disperse.description = 공중 목표물을 향해 파편 폭격을 가합니다.
|
||||||
block.lustre.description = 적 대상에게 느리게 움직이는 단일 표적 레이저를 발사합니다.
|
block.lustre.description = 적 대상에게 느리게 움직이는 단일 표적 레이저를 발사합니다.
|
||||||
@@ -2016,7 +2017,7 @@ block.electric-heater.description = 블록에 열을 가합니다. 많은 양의
|
|||||||
block.slag-heater.description = 블록에 열을 가합니다. 광재가 필요합니다.
|
block.slag-heater.description = 블록에 열을 가합니다. 광재가 필요합니다.
|
||||||
block.phase-heater.description = 블록에 열을 가합니다. 메타가 필요합니다.
|
block.phase-heater.description = 블록에 열을 가합니다. 메타가 필요합니다.
|
||||||
block.heat-redirector.description = 누적된 열을 다른 블록으로 전달합니다.
|
block.heat-redirector.description = 누적된 열을 다른 블록으로 전달합니다.
|
||||||
block.heat-router.description = Spreads accumulated heat in three output directions.
|
block.heat-router.description = 축적된 열을 세 가지 출력 방향으로 분산시킵니다.
|
||||||
block.electrolyzer.description = 물을 수소와 오존 가스로 변환합니다.
|
block.electrolyzer.description = 물을 수소와 오존 가스로 변환합니다.
|
||||||
block.atmospheric-concentrator.description = 대기에서 질소를 농축합니다. 열이 필요합니다.
|
block.atmospheric-concentrator.description = 대기에서 질소를 농축합니다. 열이 필요합니다.
|
||||||
block.surge-crucible.description = 광재와 실리콘으로 설금을 형성합니다. 열이 필요합니다.
|
block.surge-crucible.description = 광재와 실리콘으로 설금을 형성합니다. 열이 필요합니다.
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -922,6 +922,7 @@ ability.unitspawn = Fabryka Jednostek {0}
|
|||||||
ability.shieldregenfield = Strefa Tarczy Regenerującej
|
ability.shieldregenfield = Strefa Tarczy Regenerującej
|
||||||
ability.movelightning = Pioruny Poruszania
|
ability.movelightning = Pioruny Poruszania
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Pole Energii: [accent]{0}[] obrażenia ~ [accent]{1}[] bloki / [accent]{2}[] cele
|
ability.energyfield = Pole Energii: [accent]{0}[] obrażenia ~ [accent]{1}[] bloki / [accent]{2}[] cele
|
||||||
bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia
|
bar.onlycoredeposit = Dozwolone jest tylko przeniesienie z rdzenia
|
||||||
|
|
||||||
|
|||||||
@@ -933,6 +933,7 @@ ability.unitspawn = Fábrica de {0}
|
|||||||
ability.shieldregenfield = Raio de Regeneração do Escudo
|
ability.shieldregenfield = Raio de Regeneração do Escudo
|
||||||
ability.movelightning = Raio de Movimento
|
ability.movelightning = Raio de Movimento
|
||||||
ability.shieldarc = Arco do Escudo
|
ability.shieldarc = Arco do Escudo
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[]
|
ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[]
|
||||||
|
|
||||||
bar.onlycoredeposit = Somente depósito no núcleo permitido
|
bar.onlycoredeposit = Somente depósito no núcleo permitido
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = Fabrică de {0}
|
|||||||
ability.shieldregenfield = Câmp Regenerare Scut
|
ability.shieldregenfield = Câmp Regenerare Scut
|
||||||
ability.movelightning = Mișcare Fulger
|
ability.movelightning = Mișcare Fulger
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte
|
ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -922,6 +922,7 @@ ability.unitspawn = Завод единиц «{0}»
|
|||||||
ability.shieldregenfield = Поле восстановления щита
|
ability.shieldregenfield = Поле восстановления щита
|
||||||
ability.movelightning = Молнии при движении
|
ability.movelightning = Молнии при движении
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Энергетическое поле: [accent]{0}[] урона ~ [accent]{1}[] блоков / [accent]{2}[] целей
|
ability.energyfield = Энергетическое поле: [accent]{0}[] урона ~ [accent]{1}[] блоков / [accent]{2}[] целей
|
||||||
bar.onlycoredeposit = Доступен перенос только в ядро
|
bar.onlycoredeposit = Доступен перенос только в ядро
|
||||||
|
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = {0} Fabrika
|
|||||||
ability.shieldregenfield = Brzina obnove štita
|
ability.shieldregenfield = Brzina obnove štita
|
||||||
ability.movelightning = Munje pri kretanju
|
ability.movelightning = Munje pri kretanju
|
||||||
ability.shieldarc = Elektrolučni Štit
|
ability.shieldarc = Elektrolučni Štit
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energetsko Polje: [accent]{0}[] štete ~ [accent]{1}[] polja / [accent]{2}[] maksimalnih meta
|
ability.energyfield = Energetsko Polje: [accent]{0}[] štete ~ [accent]{1}[] polja / [accent]{2}[] maksimalnih meta
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -924,6 +924,7 @@ ability.unitspawn = โรงงาน'{0}
|
|||||||
ability.shieldregenfield = สนามรักษาโล่
|
ability.shieldregenfield = สนามรักษาโล่
|
||||||
ability.movelightning = ปล่อยสายฟ้าเมื่อเคลื่อนที่
|
ability.movelightning = ปล่อยสายฟ้าเมื่อเคลื่อนที่
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = สนามพลังงาน: [accent]{0}[] ดาเมจ ~ [accent]{1}[] บล็อก / [accent]{2}[] เป้าหมาย
|
ability.energyfield = สนามพลังงาน: [accent]{0}[] ดาเมจ ~ [accent]{1}[] บล็อก / [accent]{2}[] เป้าหมาย
|
||||||
bar.onlycoredeposit = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น
|
bar.onlycoredeposit = ขนย้ายทรัพยากรลงแกนกลางได้เท่านั้น
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@ ability.unitspawn = {0} Factory
|
|||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Shield Regen Field
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = {0} Birliği Fabrikası
|
|||||||
ability.shieldregenfield = Kalkan Yenileme Alanı
|
ability.shieldregenfield = Kalkan Yenileme Alanı
|
||||||
ability.movelightning = Hareket Enerjisi
|
ability.movelightning = Hareket Enerjisi
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
|
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
|
||||||
bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün
|
bar.onlycoredeposit = Sadece Merkeze Aktarım Mümkün
|
||||||
|
|
||||||
|
|||||||
@@ -929,6 +929,7 @@ ability.unitspawn = Завод одиниць «{0}»
|
|||||||
ability.shieldregenfield = Щитовідновлювальне поле
|
ability.shieldregenfield = Щитовідновлювальне поле
|
||||||
ability.movelightning = Блискавки під час руху
|
ability.movelightning = Блискавки під час руху
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Енергетичне поле: [accent]{0}[] шкоди ~ [accent]{1}[] блоків / [accent]{2}[] цілей
|
ability.energyfield = Енергетичне поле: [accent]{0}[] шкоди ~ [accent]{1}[] блоків / [accent]{2}[] цілей
|
||||||
|
|
||||||
bar.onlycoredeposit = Передача предметів дозволена лише до ядра
|
bar.onlycoredeposit = Передача предметів дозволена лише до ядра
|
||||||
|
|||||||
@@ -923,6 +923,7 @@ ability.unitspawn = Sản xuất {0}
|
|||||||
ability.shieldregenfield = Tạo khiên nhỏ
|
ability.shieldregenfield = Tạo khiên nhỏ
|
||||||
ability.movelightning = Movement Lightning
|
ability.movelightning = Movement Lightning
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
ability.energyfield = Energy Field: [accent]{0}[] damage ~ [accent]{1}[] blocks / [accent]{2}[] targets
|
||||||
bar.onlycoredeposit = Only Core Depositing Allowed
|
bar.onlycoredeposit = Only Core Depositing Allowed
|
||||||
|
|
||||||
|
|||||||
@@ -924,6 +924,7 @@ ability.unitspawn = {0}单位工厂
|
|||||||
ability.shieldregenfield = 护盾再生场
|
ability.shieldregenfield = 护盾再生场
|
||||||
ability.movelightning = 闪电助推器
|
ability.movelightning = 闪电助推器
|
||||||
ability.shieldarc = 弧形护盾
|
ability.shieldarc = 弧形护盾
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = 能量场:[accent]{0}[]伤害~[accent]{1}[]格/[accent]{2}[]目标
|
ability.energyfield = 能量场:[accent]{0}[]伤害~[accent]{1}[]格/[accent]{2}[]目标
|
||||||
bar.onlycoredeposit = 仅核心可丢入资源
|
bar.onlycoredeposit = 仅核心可丢入资源
|
||||||
|
|
||||||
|
|||||||
@@ -931,6 +931,7 @@ ability.unitspawn = {0}工廠
|
|||||||
ability.shieldregenfield = 護盾充能力場
|
ability.shieldregenfield = 護盾充能力場
|
||||||
ability.movelightning = 移動閃電
|
ability.movelightning = 移動閃電
|
||||||
ability.shieldarc = Shield Arc
|
ability.shieldarc = Shield Arc
|
||||||
|
ability.suppressionfield = Regen Suppression Field
|
||||||
ability.energyfield = 能量場: [accent]{0}[] 傷害 ~ [accent]{1}[] 方格 / [accent]{2}[] 目標數
|
ability.energyfield = 能量場: [accent]{0}[] 傷害 ~ [accent]{1}[] 方格 / [accent]{2}[] 目標數
|
||||||
|
|
||||||
bar.onlycoredeposit = 僅允許向核心放置物品
|
bar.onlycoredeposit = 僅允許向核心放置物品
|
||||||
|
|||||||
@@ -1004,6 +1004,7 @@ public class Blocks{
|
|||||||
drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(Liquids.water), new DrawLiquidTile(Liquids.cryofluid){{drawLiquidLight = true;}}, new DrawDefault());
|
drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(Liquids.water), new DrawLiquidTile(Liquids.cryofluid){{drawLiquidLight = true;}}, new DrawDefault());
|
||||||
liquidCapacity = 24f;
|
liquidCapacity = 24f;
|
||||||
craftTime = 120;
|
craftTime = 120;
|
||||||
|
lightLiquid = Liquids.cryofluid;
|
||||||
|
|
||||||
consumePower(1f);
|
consumePower(1f);
|
||||||
consumeItem(Items.titanium);
|
consumeItem(Items.titanium);
|
||||||
@@ -1808,7 +1809,7 @@ public class Blocks{
|
|||||||
requirements(Category.effect, with(Items.silicon, 150, Items.oxide, 40, Items.thorium, 60));
|
requirements(Category.effect, with(Items.silicon, 150, Items.oxide, 40, Items.thorium, 60));
|
||||||
outlineColor = Pal.darkOutline;
|
outlineColor = Pal.darkOutline;
|
||||||
|
|
||||||
range = 180f;
|
range = 200f;
|
||||||
size = 3;
|
size = 3;
|
||||||
buildSpeed = 1.5f;
|
buildSpeed = 1.5f;
|
||||||
|
|
||||||
@@ -1863,6 +1864,8 @@ public class Blocks{
|
|||||||
size = 3;
|
size = 3;
|
||||||
consumeLiquids(LiquidStack.with(Liquids.cyanogen, 1.5f / 60f));
|
consumeLiquids(LiquidStack.with(Liquids.cyanogen, 1.5f / 60f));
|
||||||
consumePower(100f / 60f);
|
consumePower(100f / 60f);
|
||||||
|
range = 170f;
|
||||||
|
reload = 80f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//TODO 5x5??
|
//TODO 5x5??
|
||||||
@@ -2550,6 +2553,9 @@ public class Blocks{
|
|||||||
liquidCapacity = 30f;
|
liquidCapacity = 30f;
|
||||||
explosionMinWarmup = 0.5f;
|
explosionMinWarmup = 0.5f;
|
||||||
|
|
||||||
|
explosionRadius = 17;
|
||||||
|
explosionDamage = 2500;
|
||||||
|
|
||||||
ambientSound = Sounds.flux;
|
ambientSound = Sounds.flux;
|
||||||
ambientSoundVolume = 0.13f;
|
ambientSoundVolume = 0.13f;
|
||||||
|
|
||||||
@@ -2592,8 +2598,8 @@ public class Blocks{
|
|||||||
itemDuration = 60f * 3f;
|
itemDuration = 60f * 3f;
|
||||||
itemCapacity = 10;
|
itemCapacity = 10;
|
||||||
|
|
||||||
explosionRadius = 7;
|
explosionRadius = 9;
|
||||||
explosionDamage = 1000;
|
explosionDamage = 2000;
|
||||||
explodeEffect = new MultiEffect(Fx.bigShockwave, new WrapEffect(Fx.titanSmoke, Liquids.neoplasm.color), Fx.neoplasmSplat);
|
explodeEffect = new MultiEffect(Fx.bigShockwave, new WrapEffect(Fx.titanSmoke, Liquids.neoplasm.color), Fx.neoplasmSplat);
|
||||||
explodeSound = Sounds.largeExplosion;
|
explodeSound = Sounds.largeExplosion;
|
||||||
|
|
||||||
@@ -5615,7 +5621,7 @@ public class Blocks{
|
|||||||
requirements(Category.units, with(Items.silicon, 100, Items.beryllium, 150, Items.tungsten, 80));
|
requirements(Category.units, with(Items.silicon, 100, Items.beryllium, 150, Items.tungsten, 80));
|
||||||
regionSuffix = "-dark";
|
regionSuffix = "-dark";
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
buildSpeed = 0.5f;
|
buildSpeed = 0.6f;
|
||||||
consumePower(2f);
|
consumePower(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
//TODO expand this list
|
//TODO expand this list
|
||||||
@@ -5627,7 +5633,7 @@ public class Blocks{
|
|||||||
requirements(Category.units, with(Items.silicon, 150, Items.oxide, 150, Items.tungsten, 200, Items.phaseFabric, 40));
|
requirements(Category.units, with(Items.silicon, 150, Items.oxide, 150, Items.tungsten, 200, Items.phaseFabric, 40));
|
||||||
regionSuffix = "-dark";
|
regionSuffix = "-dark";
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
buildSpeed = 0.6f;
|
buildSpeed = 0.75f;
|
||||||
maxBlockSize = 4;
|
maxBlockSize = 4;
|
||||||
minBlockSize = 3;
|
minBlockSize = 3;
|
||||||
size = 5;
|
size = 5;
|
||||||
@@ -5861,6 +5867,8 @@ public class Blocks{
|
|||||||
|
|
||||||
worldMessage = new MessageBlock("world-message"){{
|
worldMessage = new MessageBlock("world-message"){{
|
||||||
requirements(Category.logic, BuildVisibility.editorOnly, with());
|
requirements(Category.logic, BuildVisibility.editorOnly, with());
|
||||||
|
|
||||||
|
targetable = false;
|
||||||
privileged = true;
|
privileged = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public class Liquids{
|
|||||||
effect = StatusEffects.wet;
|
effect = StatusEffects.wet;
|
||||||
boilPoint = 0.5f;
|
boilPoint = 0.5f;
|
||||||
gasColor = Color.grays(0.9f);
|
gasColor = Color.grays(0.9f);
|
||||||
|
alwaysUnlocked = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
slag = new Liquid("slag", Color.valueOf("ffa166")){{
|
slag = new Liquid("slag", Color.valueOf("ffa166")){{
|
||||||
@@ -72,7 +73,6 @@ public class Liquids{
|
|||||||
hidden = true;
|
hidden = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//TODO reactivity, etc
|
|
||||||
ozone = new Liquid("ozone", Color.valueOf("fc81dd")){{
|
ozone = new Liquid("ozone", Color.valueOf("fc81dd")){{
|
||||||
gas = true;
|
gas = true;
|
||||||
barColor = Color.valueOf("d699f0");
|
barColor = Color.valueOf("d699f0");
|
||||||
@@ -80,7 +80,6 @@ public class Liquids{
|
|||||||
flammability = 1f;
|
flammability = 1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//TODO combustion
|
|
||||||
hydrogen = new Liquid("hydrogen", Color.valueOf("9eabf7")){{
|
hydrogen = new Liquid("hydrogen", Color.valueOf("9eabf7")){{
|
||||||
gas = true;
|
gas = true;
|
||||||
flammability = 1f;
|
flammability = 1f;
|
||||||
|
|||||||
@@ -269,6 +269,9 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
|
|
||||||
Events.on(SaveWriteEvent.class, e -> forcePlaceAll());
|
Events.on(SaveWriteEvent.class, e -> forcePlaceAll());
|
||||||
Events.on(HostEvent.class, e -> forcePlaceAll());
|
Events.on(HostEvent.class, e -> forcePlaceAll());
|
||||||
|
Events.on(HostEvent.class, e -> {
|
||||||
|
state.set(State.playing);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void forcePlaceAll(){
|
private void forcePlaceAll(){
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ public class GameState{
|
|||||||
public boolean gameOver = false;
|
public boolean gameOver = false;
|
||||||
/** Whether the player's team won the match. */
|
/** Whether the player's team won the match. */
|
||||||
public boolean won = false;
|
public boolean won = false;
|
||||||
/** If true, the server has been put into the paused state on multiplayer. This is synced. */
|
|
||||||
public boolean serverPaused = false;
|
|
||||||
/** Server ticks/second. Only valid in multiplayer. */
|
/** Server ticks/second. Only valid in multiplayer. */
|
||||||
public int serverTps = -1;
|
public int serverTps = -1;
|
||||||
/** Map that is currently being played on. */
|
/** Map that is currently being played on. */
|
||||||
@@ -51,12 +49,8 @@ public class GameState{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set(State astate){
|
public void set(State astate){
|
||||||
//horrible horrible horrible
|
//nothing to change.
|
||||||
if(astate == State.paused && net.server() && !headless) serverPaused = true;
|
if(state == astate) return;
|
||||||
if(astate != State.paused && net.server() && !headless) serverPaused = false;
|
|
||||||
|
|
||||||
//cannot pause when in multiplayer
|
|
||||||
if(astate == State.paused && net.active()) return;
|
|
||||||
|
|
||||||
Events.fire(new StateChangeEvent(state, astate));
|
Events.fire(new StateChangeEvent(state, astate));
|
||||||
state = astate;
|
state = astate;
|
||||||
@@ -88,7 +82,7 @@ public class GameState{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPaused(){
|
public boolean isPaused(){
|
||||||
return (is(State.paused) && !net.active()) || (serverPaused && !isMenu());
|
return is(State.paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPlaying(){
|
public boolean isPlaying(){
|
||||||
|
|||||||
@@ -488,7 +488,9 @@ public class NetClient implements ApplicationListener{
|
|||||||
state.wavetime = waveTime;
|
state.wavetime = waveTime;
|
||||||
state.wave = wave;
|
state.wave = wave;
|
||||||
state.enemies = enemies;
|
state.enemies = enemies;
|
||||||
state.serverPaused = paused;
|
if(!state.isMenu()){
|
||||||
|
state.set(paused ? State.paused : State.playing);
|
||||||
|
}
|
||||||
state.serverTps = tps & 0xff;
|
state.serverTps = tps & 0xff;
|
||||||
|
|
||||||
//note that this is far from a guarantee that random state is synced - tiny changes in delta and ping can throw everything off again.
|
//note that this is far from a guarantee that random state is synced - tiny changes in delta and ping can throw everything off again.
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private boolean closing = false;
|
private boolean closing = false, pvpAutoPaused = true;
|
||||||
private Interval timer = new Interval(10);
|
private Interval timer = new Interval(10);
|
||||||
private IntSet buildHealthChanged = new IntSet();
|
private IntSet buildHealthChanged = new IntSet();
|
||||||
|
|
||||||
@@ -862,7 +862,18 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
if(state.isGame() && net.server()){
|
if(state.isGame() && net.server()){
|
||||||
if(state.rules.pvp){
|
if(state.rules.pvp){
|
||||||
state.serverPaused = isWaitingForPlayers();
|
boolean waiting = isWaitingForPlayers(), paused = state.isPaused();
|
||||||
|
if(waiting != paused){
|
||||||
|
if(waiting){
|
||||||
|
//is now waiting, enable pausing, flag it correctly
|
||||||
|
pvpAutoPaused = true;
|
||||||
|
state.set(State.paused);
|
||||||
|
}else if(pvpAutoPaused){
|
||||||
|
//no longer waiting, stop pausing
|
||||||
|
state.set(State.playing);
|
||||||
|
pvpAutoPaused = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sync();
|
sync();
|
||||||
@@ -941,7 +952,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
dataStream.close();
|
dataStream.close();
|
||||||
|
|
||||||
//write basic state data.
|
//write basic state data.
|
||||||
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, state.gameOver,
|
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.isPaused(), state.gameOver,
|
||||||
universe.seconds(), tps, GlobalVars.rand.seed0, GlobalVars.rand.seed1, syncStream.toByteArray());
|
universe.seconds(), tps, GlobalVars.rand.seed0, GlobalVars.rand.seed1, syncStream.toByteArray());
|
||||||
|
|
||||||
syncStream.reset();
|
syncStream.reset();
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public abstract class Ability implements Cloneable{
|
|||||||
|
|
||||||
/** @return localized ability name; mods should override this. */
|
/** @return localized ability name; mods should override this. */
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Core.bundle.get("ability." + getClass().getSimpleName().replace("Ability", "").toLowerCase());
|
var type = getClass();
|
||||||
|
return Core.bundle.get("ability." + (type.isAnonymousClass() ? type.getSuperclass() : type).getSimpleName().replace("Ability", "").toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -272,11 +272,13 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
//region utility methods
|
//region utility methods
|
||||||
|
|
||||||
public boolean isDiscovered(Team viewer){
|
public boolean isDiscovered(Team viewer){
|
||||||
if(state.rules.borderDarkness && world.getDarkness(tile.x, tile.y) >= 3){
|
if(state.rules.limitMapArea && world.getDarkness(tile.x, tile.y) >= 3){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(viewer == null) return true;
|
if(viewer == null || !state.rules.staticFog || !state.rules.fog){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if(block.size <= 2){
|
if(block.size <= 2){
|
||||||
return fogControl.isDiscovered(viewer, tile.x, tile.y);
|
return fogControl.isDiscovered(viewer, tile.x, tile.y);
|
||||||
}else{
|
}else{
|
||||||
@@ -1199,10 +1201,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drawLight(){
|
public void drawLight(){
|
||||||
if(block.hasLiquids && block.drawLiquidLight && liquids.current().lightColor.a > 0.001f){
|
Liquid liq = block.hasLiquids && block.lightLiquid == null ? liquids.current() : block.lightLiquid;
|
||||||
|
if(block.hasLiquids && block.drawLiquidLight && liq.lightColor.a > 0.001f){
|
||||||
//yes, I am updating in draw()... but this is purely visual anyway, better have it here than in update() where it wastes time
|
//yes, I am updating in draw()... but this is purely visual anyway, better have it here than in update() where it wastes time
|
||||||
visualLiquid = Mathf.lerpDelta(visualLiquid, liquids.currentAmount(), 0.07f);
|
visualLiquid = Mathf.lerpDelta(visualLiquid, liquids.get(liq)>= 0.01f ? 1f : 0f, 0.06f);
|
||||||
drawLiquidLight(liquids.current(), visualLiquid);
|
drawLiquidLight(liq, visualLiquid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1212,7 +1215,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
float fract = 1f;
|
float fract = 1f;
|
||||||
float opacity = color.a * fract;
|
float opacity = color.a * fract;
|
||||||
if(opacity > 0.001f){
|
if(opacity > 0.001f){
|
||||||
Drawf.light(x, y, block.size * 30f * fract, color, opacity);
|
Drawf.light(x, y, block.size * 30f * fract, color, opacity * amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1588,12 +1591,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
/** Handle a bullet collision.
|
/** Handle a bullet collision.
|
||||||
* @return whether the bullet should be removed. */
|
* @return whether the bullet should be removed. */
|
||||||
public boolean collision(Bullet other){
|
public boolean collision(Bullet other){
|
||||||
boolean wasDead = dead();
|
boolean wasDead = health <= 0;
|
||||||
|
|
||||||
damage(other.team, other.damage() * other.type().buildingDamageMultiplier);
|
damage(other.team, other.damage() * other.type().buildingDamageMultiplier);
|
||||||
Events.fire(bulletDamageEvent.set(self(), other));
|
Events.fire(bulletDamageEvent.set(self(), other));
|
||||||
|
|
||||||
if(dead() && !wasDead){
|
if(health <= 0 && !wasDead){
|
||||||
Events.fire(new BuildingBulletDestroyEvent(self(), other));
|
Events.fire(new BuildingBulletDestroyEvent(self(), other));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public class EventType{
|
|||||||
//events that occur very often
|
//events that occur very often
|
||||||
public enum Trigger{
|
public enum Trigger{
|
||||||
shock,
|
shock,
|
||||||
|
openConsole,
|
||||||
blastFreeze,
|
blastFreeze,
|
||||||
impactPower,
|
impactPower,
|
||||||
blastGenerator,
|
blastGenerator,
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public final class FogControl implements CustomChunk{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDiscovered(Team team, int x, int y){
|
public boolean isDiscovered(Team team, int x, int y){
|
||||||
if(!state.rules.staticFog || team == null || team.isAI()) return true;
|
if(!state.rules.staticFog || !state.rules.fog || team == null || team.isAI()) return true;
|
||||||
|
|
||||||
var data = getDiscovered(team);
|
var data = getDiscovered(team);
|
||||||
if(data == null) return false;
|
if(data == null) return false;
|
||||||
|
|||||||
@@ -205,9 +205,7 @@ public class Saves{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void save(){
|
public void save(){
|
||||||
long time = totalPlaytime;
|
|
||||||
long prev = totalPlaytime;
|
long prev = totalPlaytime;
|
||||||
totalPlaytime = time;
|
|
||||||
|
|
||||||
SaveIO.save(file);
|
SaveIO.save(file);
|
||||||
meta = SaveIO.getMeta(file);
|
meta = SaveIO.getMeta(file);
|
||||||
|
|||||||
@@ -116,13 +116,13 @@ public class LogicDialog extends BaseDialog{
|
|||||||
buttons.button("@variables", Icon.menu, () -> {
|
buttons.button("@variables", Icon.menu, () -> {
|
||||||
BaseDialog dialog = new BaseDialog("@variables");
|
BaseDialog dialog = new BaseDialog("@variables");
|
||||||
dialog.hidden(() -> {
|
dialog.hidden(() -> {
|
||||||
if(!wasPaused){
|
if(!wasPaused && !net.active()){
|
||||||
state.set(State.paused);
|
state.set(State.paused);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.shown(() -> {
|
dialog.shown(() -> {
|
||||||
if(!wasPaused){
|
if(!wasPaused && !net.active()){
|
||||||
state.set(State.playing);
|
state.set(State.playing);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public enum Achievement{
|
|||||||
launch30Times(SStat.timesLaunched, 30),
|
launch30Times(SStat.timesLaunched, 30),
|
||||||
captureBackground,
|
captureBackground,
|
||||||
survive100Waves(SStat.maxWavesSurvived, 100),
|
survive100Waves(SStat.maxWavesSurvived, 100),
|
||||||
researchAll, //TODO - remake/change?
|
researchAll,
|
||||||
shockWetEnemy,
|
shockWetEnemy,
|
||||||
killEnemyPhaseWall,
|
killEnemyPhaseWall,
|
||||||
researchRouter,
|
researchRouter,
|
||||||
@@ -36,7 +36,7 @@ public enum Achievement{
|
|||||||
obtainTitanium,
|
obtainTitanium,
|
||||||
suicideBomb,
|
suicideBomb,
|
||||||
buildGroundFactory,
|
buildGroundFactory,
|
||||||
issueAttackCommand, //TODO - test
|
issueAttackCommand,
|
||||||
active100Units(SStat.maxUnitActive, 100),
|
active100Units(SStat.maxUnitActive, 100),
|
||||||
build1000Units(SStat.unitsBuilt, 1000),
|
build1000Units(SStat.unitsBuilt, 1000),
|
||||||
buildAllUnits(SStat.unitTypesBuilt, 30),
|
buildAllUnits(SStat.unitTypesBuilt, 30),
|
||||||
@@ -53,71 +53,62 @@ public enum Achievement{
|
|||||||
circleConveyor,
|
circleConveyor,
|
||||||
becomeRouter,
|
becomeRouter,
|
||||||
create20Schematics(SStat.schematicsCreated, 20),
|
create20Schematics(SStat.schematicsCreated, 20),
|
||||||
create500Schematics(SStat.schematicsCreated, 500), //TODO - test
|
create500Schematics(SStat.schematicsCreated, 500),
|
||||||
survive10WavesNoBlocks,
|
survive10WavesNoBlocks,
|
||||||
captureNoBlocksBroken,
|
captureNoBlocksBroken,
|
||||||
useFlameAmmo,
|
useFlameAmmo,
|
||||||
coolTurret,
|
coolTurret,
|
||||||
enablePixelation,
|
enablePixelation,
|
||||||
openWiki,
|
openWiki,
|
||||||
|
allTransportOneMap,
|
||||||
|
buildOverdriveProjector,
|
||||||
|
buildMendProjector,
|
||||||
|
buildWexWater,
|
||||||
|
|
||||||
//TODO new ones
|
have10mItems(SStat.totalCampaignItems, 10_000_000),
|
||||||
|
killEclipseDuo,
|
||||||
|
|
||||||
allTransportOneMap, //TODO - test
|
completeErekir,
|
||||||
buildOverdriveProjector, //TODO - test
|
completeSerpulo,
|
||||||
buildMendProjector, //TODO - test
|
|
||||||
buildWexWater, //TODO - test
|
|
||||||
|
|
||||||
have10mItems(SStat.totalCampaignItems, 10_000_000), //TODO - test
|
launchCoreSchematic,
|
||||||
killEclipseDuo, //TODO - test
|
nucleusGroundZero,
|
||||||
|
|
||||||
completeErekir, //TODO - test
|
neoplasmWater,
|
||||||
completeSerpulo, //TODO - test
|
blastFrozenUnit,
|
||||||
|
|
||||||
launchCoreSchematic, //TODO - test
|
allBlocksSerpulo,
|
||||||
nucleusGroundZero, //TODO - test
|
allBlocksErekir,
|
||||||
|
|
||||||
neoplasmWater, //TODO - test
|
breakForceProjector,
|
||||||
blastFrozenUnit, //TODO - test
|
researchLogic,
|
||||||
|
|
||||||
allBlocksSerpulo, //TODO - test
|
negative10kPower,
|
||||||
allBlocksErekir, //TODO - test
|
positive100kPower,
|
||||||
|
store1milPower,
|
||||||
|
|
||||||
//TODO are these necessary?
|
blastGenerator,
|
||||||
//allTurretsSerpulo, //TODO
|
neoplasiaExplosion,
|
||||||
//allTurretsErekir, //TODO
|
|
||||||
//allTechSerpulo, //TODO
|
|
||||||
//allTechErekir, //TODO
|
|
||||||
|
|
||||||
breakForceProjector, //TODO - test
|
installMod,
|
||||||
researchLogic, //TODO - Steam - test
|
routerLanguage,
|
||||||
|
joinCommunityServer,
|
||||||
|
openConsole,
|
||||||
|
|
||||||
negative10kPower, //TODO - test
|
controlTurret,
|
||||||
positive100kPower, //TODO - test
|
dropUnitsCoreZone,
|
||||||
store1milPower, //TODO - test
|
destroyScatterFlare,
|
||||||
|
boostUnit,
|
||||||
|
boostBuildingFloor,
|
||||||
|
|
||||||
blastGenerator, //TODO - test
|
hoverUnitLiquid,
|
||||||
neoplasiaExplosion, //TODO - test
|
|
||||||
|
|
||||||
installMod, //TODO - test
|
break100Boulders(SStat.bouldersDeconstructed, 100),
|
||||||
routerLanguage, //TODO - test
|
break10000Boulders(SStat.bouldersDeconstructed, 10_000),
|
||||||
joinCommunityServer, //TODO - test
|
|
||||||
openConsole, //TODO - test
|
|
||||||
|
|
||||||
controlTurret, //TODO - test
|
shockwaveTowerUse,
|
||||||
dropUnitsCoreZone, //TODO - test
|
|
||||||
destroyScatterFlare, //TODO - test
|
|
||||||
boostUnit, //TODO - test
|
|
||||||
boostBuildingFloor, //TODO - test
|
|
||||||
|
|
||||||
hoverUnitLiquid, //TODO - test
|
useAnimdustryEmoji,
|
||||||
|
|
||||||
break100Boulders(SStat.bouldersDeconstructed, 100), //TODO - test
|
|
||||||
break10000Boulders(SStat.bouldersDeconstructed, 10_000), //TODO - test
|
|
||||||
|
|
||||||
shockwaveTowerUse, //TODO - test
|
|
||||||
|
|
||||||
useAnimdustryEmoji, //TODO - Steam - icon done
|
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -140,7 +131,7 @@ public enum Achievement{
|
|||||||
public void complete(){
|
public void complete(){
|
||||||
if(!isAchieved()){
|
if(!isAchieved()){
|
||||||
//can't complete achievements with the dev console shown.
|
//can't complete achievements with the dev console shown.
|
||||||
if(ui != null && ui.consolefrag != null && ui.consolefrag.shown() && !OS.username.equals("anuke")) return;
|
if(ui != null && ui.consolefrag != null && ui.consolefrag.shown() && !OS.username.equals("anuke") && this != openConsole) return;
|
||||||
|
|
||||||
service.completeAchievement(name());
|
service.completeAchievement(name());
|
||||||
service.storeStats();
|
service.storeStats();
|
||||||
@@ -148,6 +139,13 @@ public enum Achievement{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void uncomplete(){
|
||||||
|
if(isAchieved()){
|
||||||
|
service.clearAchievement(name());
|
||||||
|
completed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void checkCompletion(){
|
public void checkCompletion(){
|
||||||
if(!isAchieved() && stat != null && stat.get() >= statGoal){
|
if(!isAchieved() && stat != null && stat.get() >= statGoal){
|
||||||
complete();
|
complete();
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import mindustry.world.blocks.defense.turrets.Turret.*;
|
|||||||
import mindustry.world.blocks.distribution.*;
|
import mindustry.world.blocks.distribution.*;
|
||||||
import mindustry.world.blocks.production.AttributeCrafter.*;
|
import mindustry.world.blocks.production.AttributeCrafter.*;
|
||||||
import mindustry.world.blocks.production.SolidPump.*;
|
import mindustry.world.blocks.production.SolidPump.*;
|
||||||
|
import mindustry.world.blocks.storage.*;
|
||||||
import mindustry.world.meta.*;
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
@@ -54,6 +55,10 @@ public class GameService{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearAchievement(String name){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAchieved(String name){
|
public boolean isAchieved(String name){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -80,8 +85,9 @@ public class GameService{
|
|||||||
allTransportSerpulo = content.blocks().select(b -> b.category == Category.distribution && b.isVisibleOn(Planets.serpulo) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
allTransportSerpulo = content.blocks().select(b -> b.category == Category.distribution && b.isVisibleOn(Planets.serpulo) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
||||||
allTransportErekir = content.blocks().select(b -> b.category == Category.distribution && b.isVisibleOn(Planets.erekir) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
allTransportErekir = content.blocks().select(b -> b.category == Category.distribution && b.isVisibleOn(Planets.erekir) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
||||||
|
|
||||||
allSerpuloBlocks = content.blocks().select(b -> b.synthetic() && b.isVisibleOn(Planets.serpulo) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
//cores are ignored since they're upgrades and can be skipped
|
||||||
allErekirBlocks = content.blocks().select(b -> b.synthetic() && b.isVisibleOn(Planets.erekir) && b.isVanilla() && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
allSerpuloBlocks = content.blocks().select(b -> b.synthetic() && b.isVisibleOn(Planets.serpulo) && b.isVanilla() && !(b instanceof CoreBlock) && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
||||||
|
allErekirBlocks = content.blocks().select(b -> b.synthetic() && b.isVisibleOn(Planets.erekir) && b.isVanilla() && !(b instanceof CoreBlock) && b.buildVisibility == BuildVisibility.shown).toArray(Block.class);
|
||||||
|
|
||||||
unitsBuilt = Core.settings.getJson("units-built" , ObjectSet.class, String.class, ObjectSet::new);
|
unitsBuilt = Core.settings.getJson("units-built" , ObjectSet.class, String.class, ObjectSet::new);
|
||||||
blocksBuilt = Core.settings.getJson("blocks-built" , ObjectSet.class, String.class, ObjectSet::new);
|
blocksBuilt = Core.settings.getJson("blocks-built" , ObjectSet.class, String.class, ObjectSet::new);
|
||||||
@@ -117,6 +123,8 @@ public class GameService{
|
|||||||
captureAllSectors.complete();
|
captureAllSectors.complete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Events.run(Trigger.openConsole, () -> openConsole.complete());
|
||||||
|
|
||||||
Events.run(Trigger.unitCommandAttack, () -> {
|
Events.run(Trigger.unitCommandAttack, () -> {
|
||||||
if(campaign()){
|
if(campaign()){
|
||||||
issueAttackCommand.complete();
|
issueAttackCommand.complete();
|
||||||
@@ -526,18 +534,15 @@ public class GameService{
|
|||||||
|
|
||||||
for(var up : Groups.powerGraph){
|
for(var up : Groups.powerGraph){
|
||||||
var graph = up.graph();
|
var graph = up.graph();
|
||||||
if(graph.all.size > 0 && graph.all.first().team == player.team()){
|
if(graph.all.size > 1 && graph.all.first().team == player.team() && graph.hasPowerBalanceSamples()){
|
||||||
float balance = graph.getPowerBalance() * 60f;
|
float balance = graph.getPowerBalance() * 60f;
|
||||||
if(balance < 10_000) negative10kPower.complete();
|
|
||||||
|
if(balance < -10_000) negative10kPower.complete();
|
||||||
if(balance > 100_000) positive100kPower.complete();
|
if(balance > 100_000) positive100kPower.complete();
|
||||||
if(graph.getBatteryStored() > 1_000_000) store1milPower.complete();
|
if(graph.getBatteryStored() > 1_000_000) store1milPower.complete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui.consolefrag.shown()){
|
|
||||||
openConsole.complete();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void save(){
|
private void save(){
|
||||||
|
|||||||
@@ -24,10 +24,8 @@ public class BaseDialog extends Dialog{
|
|||||||
.growX().height(3f).pad(4f);
|
.growX().height(3f).pad(4f);
|
||||||
|
|
||||||
hidden(() -> {
|
hidden(() -> {
|
||||||
if(shouldPause && state.isGame() && !net.active()){
|
if(shouldPause && state.isGame() && !net.active() && !wasPaused){
|
||||||
if(!wasPaused || net.active()){
|
state.set(State.playing);
|
||||||
state.set(State.playing);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Sounds.back.play();
|
Sounds.back.play();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -501,7 +501,6 @@ public class SettingsMenuDialog extends BaseDialog{
|
|||||||
files.add(Core.settings.getSettingsFile());
|
files.add(Core.settings.getSettingsFile());
|
||||||
files.addAll(customMapDirectory.list());
|
files.addAll(customMapDirectory.list());
|
||||||
files.addAll(saveDirectory.list());
|
files.addAll(saveDirectory.list());
|
||||||
files.addAll(screenshotDirectory.list());
|
|
||||||
files.addAll(modDirectory.list());
|
files.addAll(modDirectory.list());
|
||||||
files.addAll(schematicDirectory.list());
|
files.addAll(schematicDirectory.list());
|
||||||
String base = Core.settings.getDataDirectory().path();
|
String base = Core.settings.getDataDirectory().path();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import arc.scene.ui.TextField.*;
|
|||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.input.*;
|
import mindustry.input.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
|
|
||||||
@@ -175,6 +176,7 @@ public class ConsoleFragment extends Table{
|
|||||||
public void toggle(){
|
public void toggle(){
|
||||||
|
|
||||||
if(!open){
|
if(!open){
|
||||||
|
Events.fire(Trigger.openConsole);
|
||||||
scene.setKeyboardFocus(chatfield);
|
scene.setKeyboardFocus(chatfield);
|
||||||
open = !open;
|
open = !open;
|
||||||
if(mobile){
|
if(mobile){
|
||||||
|
|||||||
@@ -166,6 +166,8 @@ public class Block extends UnlockableContent implements Senseable{
|
|||||||
public float baseExplosiveness = 0f;
|
public float baseExplosiveness = 0f;
|
||||||
/** bullet that this block spawns when destroyed */
|
/** bullet that this block spawns when destroyed */
|
||||||
public @Nullable BulletType destroyBullet = null;
|
public @Nullable BulletType destroyBullet = null;
|
||||||
|
/** liquid used for lighting */
|
||||||
|
public @Nullable Liquid lightLiquid;
|
||||||
/** whether cracks are drawn when this block is damaged */
|
/** whether cracks are drawn when this block is damaged */
|
||||||
public boolean drawCracks = true;
|
public boolean drawCracks = true;
|
||||||
/** whether rubble is created when this block is destroyed */
|
/** whether rubble is created when this block is destroyed */
|
||||||
@@ -1081,13 +1083,15 @@ public class Block extends UnlockableContent implements Senseable{
|
|||||||
for(ItemStack stack : i.items){
|
for(ItemStack stack : i.items){
|
||||||
cons.get(stack.item);
|
cons.get(stack.item);
|
||||||
}
|
}
|
||||||
}else if(c instanceof ConsumeLiquid i){
|
}
|
||||||
|
//TODO: requiring liquid dependencies is usually a bad idea, because there is no reason to pump/produce something until you actually need it.
|
||||||
|
/*else if(c instanceof ConsumeLiquid i){
|
||||||
cons.get(i.liquid);
|
cons.get(i.liquid);
|
||||||
}else if(c instanceof ConsumeLiquids i){
|
}else if(c instanceof ConsumeLiquids i){
|
||||||
for(var stack : i.liquids){
|
for(var stack : i.liquids){
|
||||||
cons.get(stack.liquid);
|
cons.get(stack.liquid);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,11 @@ public class Radar extends Block{
|
|||||||
totalProgress += efficiency * edelta();
|
totalProgress += efficiency * edelta();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPickup(){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawSelect(){
|
public void drawSelect(){
|
||||||
Drawf.dashCircle(x, y, fogRadius() * tilesize, Pal.accent);
|
Drawf.dashCircle(x, y, fogRadius() * tilesize, Pal.accent);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public class ShockwaveTower extends Block{
|
|||||||
public Sound shootSound = Sounds.bang;
|
public Sound shootSound = Sounds.bang;
|
||||||
public Color waveColor = Pal.accent, heatColor = Pal.turretHeat, shapeColor = Color.valueOf("f29c83");
|
public Color waveColor = Pal.accent, heatColor = Pal.turretHeat, shapeColor = Color.valueOf("f29c83");
|
||||||
public float cooldownMultiplier = 1f;
|
public float cooldownMultiplier = 1f;
|
||||||
|
public Effect hitEffect = Fx.hitSquaresColor;
|
||||||
public Effect waveEffect = Fx.pointShockwave;
|
public Effect waveEffect = Fx.pointShockwave;
|
||||||
|
|
||||||
//TODO switch to drawers eventually or something
|
//TODO switch to drawers eventually or something
|
||||||
@@ -90,6 +91,7 @@ public class ShockwaveTower extends Block{
|
|||||||
}else{
|
}else{
|
||||||
target.remove();
|
target.remove();
|
||||||
}
|
}
|
||||||
|
hitEffect.at(target.x, target.y, waveColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(team == state.rules.defaultTeam){
|
if(team == state.rules.defaultTeam){
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package mindustry.world.blocks.power;
|
package mindustry.world.blocks.power;
|
||||||
|
|
||||||
|
import arc.Core;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
@@ -22,8 +23,8 @@ import static mindustry.Vars.*;
|
|||||||
public class BeamNode extends PowerBlock{
|
public class BeamNode extends PowerBlock{
|
||||||
public int range = 5;
|
public int range = 5;
|
||||||
|
|
||||||
public @Load("power-beam") TextureRegion laser;
|
public @Load(value = "@-beam", fallback = "power-beam") TextureRegion laser;
|
||||||
public @Load("power-beam-end") TextureRegion laserEnd;
|
public @Load(value = "@-beam-end", fallback = "power-beam-end") TextureRegion laserEnd;
|
||||||
|
|
||||||
public Color laserColor1 = Color.white;
|
public Color laserColor1 = Color.white;
|
||||||
public Color laserColor2 = Color.valueOf("ffd9c2");
|
public Color laserColor2 = Color.valueOf("ffd9c2");
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ public class LongPowerNode extends PowerNode{
|
|||||||
public void load(){
|
public void load(){
|
||||||
super.load();
|
super.load();
|
||||||
|
|
||||||
laser = Core.atlas.find("power-beam");
|
laser = Core.atlas.find(name + "-beam", Core.atlas.find("power-beam"));
|
||||||
laserEnd = Core.atlas.find("power-beam-end");
|
laserEnd = Core.atlas.find(name + "-beam-end", Core.atlas.find("power-beam-end"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LongPowerNodeBuild extends PowerNodeBuild{
|
public class LongPowerNodeBuild extends PowerNodeBuild{
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ public class PowerGraph{
|
|||||||
return powerBalance.rawMean();
|
return powerBalance.rawMean();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPowerBalanceSamples(){
|
||||||
|
return powerBalance.hasEnoughData();
|
||||||
|
}
|
||||||
|
|
||||||
public float getLastPowerNeeded(){
|
public float getLastPowerNeeded(){
|
||||||
return lastPowerNeeded;
|
return lastPowerNeeded;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ public class PowerNode extends PowerBlock{
|
|||||||
/** The maximum range of all power nodes on the map */
|
/** The maximum range of all power nodes on the map */
|
||||||
protected static float maxRange;
|
protected static float maxRange;
|
||||||
|
|
||||||
public @Load("laser") TextureRegion laser;
|
public @Load(value = "@-laser", fallback = "laser") TextureRegion laser;
|
||||||
public @Load("laser-end") TextureRegion laserEnd;
|
public @Load(value = "@-laser-end", fallback = "laser-end") TextureRegion laserEnd;
|
||||||
public float laserRange = 6;
|
public float laserRange = 6;
|
||||||
public int maxNodes = 3;
|
public int maxNodes = 3;
|
||||||
public boolean autolink = true, drawRange = true;
|
public boolean autolink = true, drawRange = true;
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ public class UnitCargoLoader extends Block{
|
|||||||
ambientSound = Sounds.respawning;
|
ambientSound = Sounds.respawning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean outputsItems(){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBars(){
|
public void setBars(){
|
||||||
super.setBars();
|
super.setBars();
|
||||||
|
|||||||
@@ -34,11 +34,6 @@ public class UnitCargoUnloadPoint extends Block{
|
|||||||
configClear((UnitCargoUnloadPointBuild build) -> build.item = null);
|
configClear((UnitCargoUnloadPointBuild build) -> build.item = null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean outputsItems(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class UnitCargoUnloadPointBuild extends Building{
|
public class UnitCargoUnloadPointBuild extends Building{
|
||||||
public Item item;
|
public Item item;
|
||||||
public float staleTimer;
|
public float staleTimer;
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ public class UnitFactory extends UnitBlock{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(plan.unit.unlockedNow()){
|
if(plan.unit.unlockedNow()){
|
||||||
t.image(plan.unit.uiIcon).size(40).pad(10f).left();
|
t.image(plan.unit.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit);
|
||||||
t.table(info -> {
|
t.table(info -> {
|
||||||
info.add(plan.unit.localizedName).left();
|
info.add(plan.unit.localizedName).left();
|
||||||
info.row();
|
info.row();
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package mindustry.world.meta;
|
package mindustry.world.meta;
|
||||||
|
|
||||||
import arc.*;
|
import arc.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -18,7 +20,7 @@ public class StatUnit{
|
|||||||
itemsSecond = new StatUnit("itemsSecond"),
|
itemsSecond = new StatUnit("itemsSecond"),
|
||||||
liquidUnits = new StatUnit("liquidUnits"),
|
liquidUnits = new StatUnit("liquidUnits"),
|
||||||
powerUnits = new StatUnit("powerUnits"),
|
powerUnits = new StatUnit("powerUnits"),
|
||||||
heatUnits = new StatUnit("heatUnits"),
|
heatUnits = new StatUnit("heatUnits", "[red]" + Iconc.waves + "[]"),
|
||||||
degrees = new StatUnit("degrees"),
|
degrees = new StatUnit("degrees"),
|
||||||
seconds = new StatUnit("seconds"),
|
seconds = new StatUnit("seconds"),
|
||||||
minutes = new StatUnit("minutes"),
|
minutes = new StatUnit("minutes"),
|
||||||
@@ -33,6 +35,7 @@ public class StatUnit{
|
|||||||
|
|
||||||
public final boolean space;
|
public final boolean space;
|
||||||
public final String name;
|
public final String name;
|
||||||
|
public @Nullable String icon;
|
||||||
|
|
||||||
public StatUnit(String name, boolean space){
|
public StatUnit(String name, boolean space){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@@ -43,6 +46,11 @@ public class StatUnit{
|
|||||||
this(name, true);
|
this(name, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StatUnit(String name, String icon){
|
||||||
|
this(name, true);
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
public String localized(){
|
public String localized(){
|
||||||
if(this == none) return "";
|
if(this == none) return "";
|
||||||
return Core.bundle.get("unit." + name.toLowerCase(Locale.ROOT));
|
return Core.bundle.get("unit." + name.toLowerCase(Locale.ROOT));
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class StatValues{
|
|||||||
|
|
||||||
public static StatValue number(float value, StatUnit unit, boolean merge){
|
public static StatValue number(float value, StatUnit unit, boolean merge){
|
||||||
return table -> {
|
return table -> {
|
||||||
String l1 = fixValue(value), l2 = (unit.space ? " " : "") + unit.localized();
|
String l1 = (unit.icon == null ? "" : unit.icon + " ") + fixValue(value), l2 = (unit.space ? " " : "") + unit.localized();
|
||||||
|
|
||||||
if(merge){
|
if(merge){
|
||||||
table.add(l1 + l2);
|
table.add(l1 + l2);
|
||||||
|
|||||||
@@ -147,6 +147,12 @@ public class DesktopLauncher extends ClientLauncher{
|
|||||||
SVars.stats.stats.storeStats();
|
SVars.stats.stats.storeStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearAchievement(String name){
|
||||||
|
SVars.stats.stats.clearAchievement(name);
|
||||||
|
SVars.stats.stats.storeStats();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAchieved(String name){
|
public boolean isAchieved(String name){
|
||||||
return SVars.stats.stats.isAchieved(name, false);
|
return SVars.stats.stats.isAchieved(name, false);
|
||||||
|
|||||||
@@ -272,8 +272,8 @@ public class ServerControl implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.on(PlayerJoin.class, e -> {
|
Events.on(PlayerJoin.class, e -> {
|
||||||
if(state.serverPaused && autoPaused && Config.autoPause.bool()){
|
if(state.isPaused() && autoPaused && Config.autoPause.bool()){
|
||||||
state.serverPaused = false;
|
state.set(State.playing);
|
||||||
autoPaused = false;
|
autoPaused = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -281,8 +281,8 @@ public class ServerControl implements ApplicationListener{
|
|||||||
Events.on(PlayerLeave.class, e -> {
|
Events.on(PlayerLeave.class, e -> {
|
||||||
// The player list length is compared with 1 and not 0 here,
|
// The player list length is compared with 1 and not 0 here,
|
||||||
// because when PlayerLeave gets fired, the player hasn't been removed from the player list yet
|
// because when PlayerLeave gets fired, the player hasn't been removed from the player list yet
|
||||||
if(!state.serverPaused && Config.autoPause.bool() && Groups.player.size() == 1){
|
if(!state.isPaused() && Config.autoPause.bool() && Groups.player.size() == 1){
|
||||||
state.serverPaused = true;
|
state.set(State.paused);
|
||||||
autoPaused = true;
|
autoPaused = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -372,7 +372,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
netServer.openServer();
|
netServer.openServer();
|
||||||
|
|
||||||
if(Config.autoPause.bool()){
|
if(Config.autoPause.bool()){
|
||||||
state.serverPaused = true;
|
state.set(State.paused);
|
||||||
autoPaused = true;
|
autoPaused = true;
|
||||||
}
|
}
|
||||||
}catch(MapException e){
|
}catch(MapException e){
|
||||||
@@ -489,9 +489,13 @@ public class ServerControl implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
handler.register("pause", "<on/off>", "Pause or unpause the game.", arg -> {
|
handler.register("pause", "<on/off>", "Pause or unpause the game.", arg -> {
|
||||||
|
if(!state.isMenu()){
|
||||||
|
err("Cannot pause without a game running.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
boolean pause = arg[0].equals("on");
|
boolean pause = arg[0].equals("on");
|
||||||
autoPaused = false;
|
autoPaused = false;
|
||||||
state.serverPaused = pause;
|
state.set(state.isPaused() ? State.playing : State.paused);
|
||||||
info(pause ? "Game paused." : "Game unpaused.");
|
info(pause ? "Game paused." : "Game unpaused.");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mindustry.pl",
|
"name": "mindustry.pl",
|
||||||
"address": ["0.baseduser.eu.org:6966", "0.baseduser.eu.org:6666", "0.baseduser.eu.org:6000"]
|
"address": ["0.baseduser.eu.org:6966", "0.baseduser.eu.org:6666", "0.baseduser.eu.org:6000", "1.baseduser.eu.org:6966", "1.baseduser.eu.org:6666", "1.baseduser.eu.org:6000"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SynapseOS",
|
"name": "SynapseOS",
|
||||||
|
|||||||