Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
779bab0344 | ||
|
|
0639e3eedb | ||
|
|
450f651c8f | ||
|
|
13d16f1883 | ||
|
|
4cbc4a0bca | ||
|
|
99e7fcd2d2 | ||
|
|
223fb8d6f5 | ||
|
|
e1bf1a1b92 | ||
|
|
5d93362741 | ||
|
|
34180a6602 | ||
|
|
4999c25723 | ||
|
|
24810ddbf5 | ||
|
|
d16739f86a | ||
|
|
1a6d2e9dd6 | ||
|
|
1a0bcfc745 | ||
|
|
4a94d9f2b3 | ||
|
|
312f4d8462 | ||
|
|
859c2987f0 | ||
|
|
a3f4dc7d1d | ||
|
|
2e036c6efe | ||
|
|
c0d8ce2803 | ||
|
|
f1d1f935fb | ||
|
|
338f7b840c | ||
|
|
828464a449 | ||
|
|
49f35c6977 | ||
|
|
a0fbf5f00f | ||
|
|
26045904f4 | ||
|
|
fc900bec58 | ||
|
|
850a3cfb4e | ||
|
|
330ed9d390 | ||
|
|
95b6ac36fc | ||
|
|
cd5fb71b34 | ||
|
|
10f2a7b59c | ||
|
|
09f718ba3d | ||
|
|
324c19e425 | ||
|
|
be5c46beb8 | ||
|
|
c15f82297d | ||
|
|
a441c0bdcb |
@@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md).
|
|||||||
Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).
|
Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).
|
||||||
|
|
||||||
If you'd rather compile on your own, follow these instructions.
|
If you'd rather compile on your own, follow these instructions.
|
||||||
First, make sure you have [JDK 16-17](https://adoptopenjdk.net/archive.html?variant=openjdk16&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:
|
First, make sure you have [JDK 16-17](https://adoptium.net/archive.html?variant=openjdk17&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
|
|||||||
@@ -583,6 +583,8 @@ weather.sandstorm.name = Tempête de sable
|
|||||||
weather.sporestorm.name = Tempête de spores
|
weather.sporestorm.name = Tempête de spores
|
||||||
weather.fog.name = Brouillard
|
weather.fog.name = Brouillard
|
||||||
|
|
||||||
|
sectorlist = Secteurs
|
||||||
|
sectorlist.attacked = {0} pris d'assaut
|
||||||
sectors.unexplored = [lightgray]Inexploré
|
sectors.unexplored = [lightgray]Inexploré
|
||||||
sectors.resources = Ressources :
|
sectors.resources = Ressources :
|
||||||
sectors.production = Production :
|
sectors.production = Production :
|
||||||
|
|||||||
@@ -18,10 +18,12 @@ linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferênc
|
|||||||
screenshot = Screenshot salvo para {0}
|
screenshot = Screenshot salvo para {0}
|
||||||
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
|
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
|
||||||
gameover = O núcleo foi destruído.
|
gameover = O núcleo foi destruído.
|
||||||
|
gameover.disconnect = Desconectado
|
||||||
gameover.pvp = O time[accent] {0}[] ganhou!
|
gameover.pvp = O time[accent] {0}[] ganhou!
|
||||||
|
gameover.waiting = [accent]Esperando pelo próximo mapa...
|
||||||
highscore = [accent]Novo recorde!
|
highscore = [accent]Novo recorde!
|
||||||
copied = Copiado
|
copied = Copiado
|
||||||
indev.popup = [accent]v6[] está atualmente em [accent]alpha[].\n[lightgray]Isso significa:[]\n[scarlet]- A campanha está inacabada[]\n- Está faltando conteúdo\n - A maioria das [scarlet]IAs das unidades[] não funciona adequadamente\n- A maioria das unidades estão inacabadas\n- Tudo o que você ver está sujeito a mudanças ou remoção.\n\nReporte bugs ou crashes em [accent]Github[].
|
indev.campaign = [accent]Parabéns! Você chegou ao fim da campanha![]\n\nEsse é todo o conteudo do jogo até o momento. Viagem interplanetária será adicionada em futuras atualizações.
|
||||||
indev.notready = Essa parte do jogo ainda não esta pronta
|
indev.notready = Essa parte do jogo ainda não esta pronta
|
||||||
|
|
||||||
load.sound = Sons
|
load.sound = Sons
|
||||||
@@ -39,11 +41,19 @@ be.ignore = Ignorar
|
|||||||
be.noupdates = Nenhuma atualização encontrada.
|
be.noupdates = Nenhuma atualização encontrada.
|
||||||
be.check = Checar por atualizações
|
be.check = Checar por atualizações
|
||||||
|
|
||||||
|
mods.browser = Mod Browser
|
||||||
|
mods.browser.selected = Mod selecionado
|
||||||
|
mods.browser.add = Instalar
|
||||||
|
mods.browser.reinstall = Reinstalar
|
||||||
|
mods.github.open = Repo
|
||||||
|
mods.browser.sortdate = Ordenar por mais recente
|
||||||
|
mods.browser.sortstars = Ordenar por estrelas
|
||||||
|
|
||||||
schematic = Esquema
|
schematic = Esquema
|
||||||
schematic.add = Salvar esquema
|
schematic.add = Salvar esquema
|
||||||
schematics = Esquemas
|
schematics = Esquemas
|
||||||
schematic.replace = Um esquema com esse nome já existe. Substituí-lo?
|
schematic.replace = Um esquema com esse nome já existe. Substituí-lo?
|
||||||
schematic.exists = Um esquema com esse nome já existe. Substituí-lo?
|
schematic.exists = Um esquema com esse nome já existe.
|
||||||
schematic.import = Importar esquema...
|
schematic.import = Importar esquema...
|
||||||
schematic.exportfile = Exportar arquivo
|
schematic.exportfile = Exportar arquivo
|
||||||
schematic.importfile = Importar arquivo
|
schematic.importfile = Importar arquivo
|
||||||
@@ -56,7 +66,7 @@ schematic.saved = Esquema salvo.
|
|||||||
schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
||||||
schematic.rename = Renomear esquema
|
schematic.rename = Renomear esquema
|
||||||
schematic.info = {0}x{1}, {2} blocos
|
schematic.info = {0}x{1}, {2} blocos
|
||||||
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê não tem permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
||||||
schematic.tags = Tags:
|
schematic.tags = Tags:
|
||||||
schematic.edittags = Editar Tags
|
schematic.edittags = Editar Tags
|
||||||
schematic.addtag = Adicionar Tag
|
schematic.addtag = Adicionar Tag
|
||||||
@@ -66,6 +76,7 @@ schematic.renametag = Renomear Tag
|
|||||||
schematic.tagdelconfirm = Deletar essa tag completamente?
|
schematic.tagdelconfirm = Deletar essa tag completamente?
|
||||||
schematic.tagexists = Essa tag já existe.
|
schematic.tagexists = Essa tag já existe.
|
||||||
|
|
||||||
|
stats = Estatísticas
|
||||||
stat.wave = Hordas derrotadas:[accent] {0}
|
stat.wave = Hordas derrotadas:[accent] {0}
|
||||||
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
||||||
stat.built = Construções construídas:[accent] {0}
|
stat.built = Construções construídas:[accent] {0}
|
||||||
@@ -73,7 +84,6 @@ stat.destroyed = Construções destruídas:[accent] {0}
|
|||||||
stat.deconstructed = Construções desconstruídas:[accent] {0}
|
stat.deconstructed = Construções desconstruídas:[accent] {0}
|
||||||
stat.delivered = Recursos lançados:
|
stat.delivered = Recursos lançados:
|
||||||
stat.playtime = Tempo jogado:[accent] {0}
|
stat.playtime = Tempo jogado:[accent] {0}
|
||||||
stat.rank = Classificação final: [accent]{0}
|
|
||||||
|
|
||||||
globalitems = [accent]Itens Globais
|
globalitems = [accent]Itens Globais
|
||||||
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
|
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
|
||||||
@@ -82,13 +92,16 @@ level.select = Seleção de fase
|
|||||||
level.mode = Modo de jogo:
|
level.mode = Modo de jogo:
|
||||||
coreattack = < O núcleo está sob ataque! >
|
coreattack = < O núcleo está sob ataque! >
|
||||||
nearpoint = [[ [scarlet]SAIA DO PONTO DE SPAWN IMEDIATAMENTE[] ]\nANIQUILAÇÃO IMINENTE
|
nearpoint = [[ [scarlet]SAIA DO PONTO DE SPAWN IMEDIATAMENTE[] ]\nANIQUILAÇÃO IMINENTE
|
||||||
database = Banco de dados
|
database = Banco de dados do núcleo
|
||||||
|
database.button = Banco de dados
|
||||||
savegame = Salvar jogo
|
savegame = Salvar jogo
|
||||||
loadgame = Carregar jogo
|
loadgame = Carregar jogo
|
||||||
joingame = Entrar no jogo
|
joingame = Entrar no jogo
|
||||||
customgame = Jogo customi-\nzado
|
customgame = Jogo customi-\nzado
|
||||||
newgame = Novo jogo
|
newgame = Novo jogo
|
||||||
none = <nenhum>
|
none = <nenhum>
|
||||||
|
none.found = [lightgray]<nenhum encontrado>
|
||||||
|
none.inmap = [lightgray]<nenhum no mapa>
|
||||||
minimap = Mini-mapa
|
minimap = Mini-mapa
|
||||||
position = Posição
|
position = Posição
|
||||||
close = Fechar
|
close = Fechar
|
||||||
@@ -109,17 +122,20 @@ committingchanges = Enviando mudanças
|
|||||||
done = Feito
|
done = Feito
|
||||||
feature.unsupported = Seu dispositivo não suporta essa função.
|
feature.unsupported = Seu dispositivo não suporta essa função.
|
||||||
|
|
||||||
mods.alphainfo = Lembre-se que o sistema de mods está em alpha, e[scarlet] que eles talvez contenham erros e instabilidades[].\nReporte quaisquer problemas no Discord ou GitHub do Mindustry.
|
mods.initfailed = [red]⚠[] A instância anterior do Mindustry falhou ao inicializar. Provavelmente causado por mods com problema.\n\nPara previnir um loop de crash, [red]todos os mods foram desativados.[]
|
||||||
mods = Mods
|
mods = Mods
|
||||||
mods.none = [lightgray]Nenhum mod encontrado!
|
mods.none = [lightgray]Nenhum mod encontrado!
|
||||||
mods.guide = Guia de mods
|
mods.guide = Guia de mods
|
||||||
mods.report = Reportar um Bug
|
mods.report = Reportar um Bug
|
||||||
mods.openfolder = Abrir pasta de mods
|
mods.openfolder = Abrir pasta de mods
|
||||||
|
mods.viewcontent = Ver conteúdo
|
||||||
mods.reload = Recarregar
|
mods.reload = Recarregar
|
||||||
mods.reloadexit = O jogo vai fechar, para poder recarregar os mods.
|
mods.reloadexit = O jogo vai fechar, para poder recarregar os mods.
|
||||||
|
mod.installed = [[Instalado]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Ativado
|
mod.enabled = [lightgray]Ativado
|
||||||
mod.disabled = [scarlet]Desativado
|
mod.disabled = [scarlet]Desativado
|
||||||
|
mod.multiplayer.compatible = [gray]Compatível com multiplayer
|
||||||
mod.disable = Desati-\nvar
|
mod.disable = Desati-\nvar
|
||||||
mod.content = Conteúdo:
|
mod.content = Conteúdo:
|
||||||
mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso.
|
mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso.
|
||||||
@@ -152,8 +168,13 @@ planetmap = Mapa do Planeta
|
|||||||
launchcore = Lançar núcleo
|
launchcore = Lançar núcleo
|
||||||
filename = Nome do arquivo:
|
filename = Nome do arquivo:
|
||||||
unlocked = Novo bloco desbloqueado!
|
unlocked = Novo bloco desbloqueado!
|
||||||
|
available = Nova pesquisa disponível!
|
||||||
|
unlock.incampaign = < Desbloqueie na campanha para mais detalhes >
|
||||||
completed = [accent]Completado
|
completed = [accent]Completado
|
||||||
techtree = Árvore Tecnológica
|
techtree = Árvore Tecnológica
|
||||||
|
research.legacy = dados de pesquisa da versão [accent]5.0[] encontrados.\nVocê quer [accent]carregar esses dados[], ou [accent]descartar eles[] e recomeçar as pesquisas da nova campanha (recomendado)?
|
||||||
|
research.load = Carregar
|
||||||
|
research.discard = Descartar
|
||||||
research.list = [lightgray]Pesquise:
|
research.list = [lightgray]Pesquise:
|
||||||
research = Pesquisar
|
research = Pesquisar
|
||||||
researched = [lightgray]{0} Pesquisado.
|
researched = [lightgray]{0} Pesquisado.
|
||||||
@@ -188,22 +209,30 @@ hostserver.mobile = Hospedar\nJogo
|
|||||||
host = Hospedar
|
host = Hospedar
|
||||||
hosting = [accent]Abrindo servidor...
|
hosting = [accent]Abrindo servidor...
|
||||||
hosts.refresh = Recarregar
|
hosts.refresh = Recarregar
|
||||||
hosts.discovering = Descobrindo jogos em lan
|
hosts.discovering = Descobrindo jogos em LAN
|
||||||
hosts.discovering.any = Descobrindo jogos
|
hosts.discovering.any = Descobrindo jogos
|
||||||
server.refreshing = Atualizando servidor
|
server.refreshing = Atualizando servidor
|
||||||
hosts.none = [lightgray]Nenhum jogo LAN encontrado!
|
hosts.none = [lightgray]Nenhum jogo LAN encontrado!
|
||||||
host.invalid = [scarlet]Não foi possivel hospedar
|
host.invalid = [scarlet]Não foi possivel hospedar
|
||||||
|
|
||||||
servers.local = Servidores locais
|
servers.local = Servidores locais
|
||||||
|
servers.local.steam = Jogos públicos e servidores locais
|
||||||
servers.remote = Servidores remotos
|
servers.remote = Servidores remotos
|
||||||
servers.global = Servidores da comunidade
|
servers.global = Servidores da comunidade
|
||||||
|
|
||||||
|
servers.disclaimer = Servidores da comunidade [accent]não[] controlados pelo desenvolvedor.\n\nOs servidores podem conter conteúdo não apropriado para todas as idades.
|
||||||
|
servers.showhidden = Mostrar servidores escondidos
|
||||||
|
server.shown = Mostrar
|
||||||
|
server.hidden = Esconder
|
||||||
|
|
||||||
trace = Rastrear jogador
|
trace = Rastrear jogador
|
||||||
trace.playername = Nome do jogador: [accent]{0}
|
trace.playername = Nome do jogador: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = ID unico: [accent]{0}
|
trace.id = ID: [accent]{0}
|
||||||
trace.mobile = Cliente móvel: [accent]{0}
|
trace.mobile = Cliente móvel: [accent]{0}
|
||||||
trace.modclient = Cliente customizado: [accent]{0}
|
trace.modclient = Cliente customizado: [accent]{0}
|
||||||
|
trace.times.joined = Vezes que entrou: [accent]{0}
|
||||||
|
trace.times.kicked = Vezes que foi expulso: [accent]{0}
|
||||||
invalidid = ID do cliente invalido! Reporte o bug
|
invalidid = ID do cliente invalido! Reporte o bug
|
||||||
server.bans = Banidos
|
server.bans = Banidos
|
||||||
server.bans.none = Nenhum jogador banido encontrado!
|
server.bans.none = Nenhum jogador banido encontrado!
|
||||||
@@ -216,29 +245,30 @@ server.outdated = [crimson]Servidor desatualizado![]
|
|||||||
server.outdated.client = [crimson]Cliente desatualizado![]
|
server.outdated.client = [crimson]Cliente desatualizado![]
|
||||||
server.version = [lightgray]Versão: {0}
|
server.version = [lightgray]Versão: {0}
|
||||||
server.custombuild = [accent]Versão customizada
|
server.custombuild = [accent]Versão customizada
|
||||||
confirmban = Certeza que quer banir este jogador?
|
confirmban = Certeza que quer banir "{0}[white]"?
|
||||||
confirmkick = Certeza que quer expulsar o jogador?
|
confirmkick = Certeza que quer expulsar "{0}[white]"?
|
||||||
confirmvotekick = Você tem certeza de que quer votar para expulsar este jogador?
|
confirmvotekick = Você tem certeza de que quer votar para expulsar "{0}[white]"?
|
||||||
confirmunban = Certeza que quer desbanir este jogador?
|
confirmunban = Certeza que quer desbanir este jogador?
|
||||||
confirmadmin = Certeza que quer fazer este jogador um administrador?
|
confirmadmin = Certeza que quer fazer "{0}[white]" um administrador?
|
||||||
confirmunadmin = Certeza que quer remover o status de adminstrador deste jogador?
|
confirmunadmin = Certeza que quer remover o status de adminstrador do "{0}[white]"?
|
||||||
joingame.title = Entrar no jogo
|
joingame.title = Entrar no jogo
|
||||||
joingame.ip = IP:
|
joingame.ip = IP:
|
||||||
disconnect = Desconectado.
|
disconnect = Desconectado.
|
||||||
disconnect.error = Erro de conexão.
|
disconnect.error = Erro de conexão.
|
||||||
disconnect.closed = Conexão fechada.
|
disconnect.closed = Conexão fechada.
|
||||||
disconnect.timeout = Tempo esgotado.
|
disconnect.timeout = Tempo esgotado.
|
||||||
disconnect.data = Falha ao abrir os dados do mundo!
|
disconnect.data = Falha ao carregar os dados do mundo!
|
||||||
cantconnect = Impossível conectar ([accent]{0}[]).
|
cantconnect = Impossível conectar ([accent]{0}[]).
|
||||||
connecting = [accent]Conectando...
|
connecting = [accent]Conectando...
|
||||||
|
reconnecting = [accent]Reconectando...
|
||||||
connecting.data = [accent]Carregando dados do mundo...
|
connecting.data = [accent]Carregando dados do mundo...
|
||||||
server.port = Port:
|
server.port = Porta:
|
||||||
server.addressinuse = Senha em uso!
|
server.addressinuse = Porta em uso!
|
||||||
server.invalidport = Numero de port inválido!
|
server.invalidport = Numero de port inválido!
|
||||||
server.error = [crimson]Erro ao hospedar o servidor: [accent]{0}
|
server.error = [crimson]Erro ao hospedar o servidor: [accent]{0}
|
||||||
save.new = Novo save
|
save.new = Novo save
|
||||||
save.overwrite = Você tem certeza que quer sobrescrever este save?
|
save.overwrite = Você tem certeza que quer sobrescrever este save?
|
||||||
overwrite = sobrescrever
|
overwrite = Sobrescrever
|
||||||
save.none = Nenhum save encontrado!
|
save.none = Nenhum save encontrado!
|
||||||
savefail = Falha ao salvar jogo!
|
savefail = Falha ao salvar jogo!
|
||||||
save.delete.confirm = Certeza que quer deletar este save?
|
save.delete.confirm = Certeza que quer deletar este save?
|
||||||
@@ -252,12 +282,13 @@ save.newslot = Nome do save:
|
|||||||
save.rename = Renomear
|
save.rename = Renomear
|
||||||
save.rename.text = Novo jogo:
|
save.rename.text = Novo jogo:
|
||||||
selectslot = Selecione um lugar para salvar.
|
selectslot = Selecione um lugar para salvar.
|
||||||
slot = [accent]Conexões {0}
|
slot = [accent]Slot {0}
|
||||||
editmessage = Editar mensagem
|
editmessage = Editar mensagem
|
||||||
save.corrupted = [accent]Save corrompido ou inválido!
|
save.corrupted = [accent]Save corrompido ou inválido!
|
||||||
empty = <vazio>
|
empty = <vazio>
|
||||||
on = Ligado
|
on = Ligado
|
||||||
off = Desligado
|
off = Desligado
|
||||||
|
save.search = Procurando jogos salvos...
|
||||||
save.autosave = Salvar automaticamente: {0}
|
save.autosave = Salvar automaticamente: {0}
|
||||||
save.map = Mapa: {0}
|
save.map = Mapa: {0}
|
||||||
save.wave = Horda {0}
|
save.wave = Horda {0}
|
||||||
@@ -276,6 +307,7 @@ cancel = Cancelar
|
|||||||
openlink = Abrir Link
|
openlink = Abrir Link
|
||||||
copylink = Copiar link
|
copylink = Copiar link
|
||||||
back = Voltar
|
back = Voltar
|
||||||
|
max = Máximo
|
||||||
crash.export = Exportar Históricos de Crashes.
|
crash.export = Exportar Históricos de Crashes.
|
||||||
crash.none = Nenhum Histórico de Crashes Encontrado.
|
crash.none = Nenhum Histórico de Crashes Encontrado.
|
||||||
crash.exported = Históricos de Crashes Exportado.
|
crash.exported = Históricos de Crashes Exportado.
|
||||||
@@ -286,25 +318,28 @@ data.exported = Dados exportados.
|
|||||||
data.invalid = Estes dados de jogo não são válidos.
|
data.invalid = Estes dados de jogo não são válidos.
|
||||||
data.import.confirm = Importar dados externos irá deletar[scarlet] todos[] os seus dados atuais.\n[accent]Isso não pode ser desfeito![]\n\nQuando seus dados serão importados, seu jogo irá sair imediatamente.
|
data.import.confirm = Importar dados externos irá deletar[scarlet] todos[] os seus dados atuais.\n[accent]Isso não pode ser desfeito![]\n\nQuando seus dados serão importados, seu jogo irá sair imediatamente.
|
||||||
quit.confirm = Você tem certeza que quer sair?
|
quit.confirm = Você tem certeza que quer sair?
|
||||||
quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazendo?\nO tutorial pode ser refeito nas [accent] Configurações->Jogo->Refazer Tutorial.[]
|
|
||||||
loading = [accent]Carregando...
|
loading = [accent]Carregando...
|
||||||
reloading = [accent]Recarregando mods...
|
reloading = [accent]Recarregando...
|
||||||
saving = [accent]Salvando...
|
saving = [accent]Salvando...
|
||||||
respawn = [accent][[{0}][] para nascer no núcleo
|
respawn = [accent][[{0}][] para nascer no núcleo
|
||||||
cancelbuilding = [accent][[{0}][] para cancelar a construção
|
cancelbuilding = [accent][[{0}][] para cancelar a construção
|
||||||
selectschematic = [accent][[{0}][] para selecionar + copiar
|
selectschematic = [accent][[{0}][] para selecionar + copiar
|
||||||
pausebuilding = [accent][[{0}][] para parar a construção
|
pausebuilding = [accent][[{0}][] para parar a construção
|
||||||
resumebuilding = [scarlet][[{0}][] para continuar a construção
|
resumebuilding = [scarlet][[{0}][] para continuar a construção
|
||||||
|
enablebuilding = [scarlet][[{0}][] para habilitar construção
|
||||||
|
showui = Interface escondida.\nPressione [accent][[{0}][] para mostrar a interface.
|
||||||
wave = [accent]Horda {0}
|
wave = [accent]Horda {0}
|
||||||
wave.cap = [accent]Horda {0}/{1}
|
wave.cap = [accent]Horda {0}/{1}
|
||||||
wave.waiting = Proxima horda em {0}
|
wave.waiting = Proxima horda em {0}
|
||||||
wave.waveInProgress = [lightgray]Horda em progresso
|
wave.waveInProgress = [lightgray]Horda em progresso
|
||||||
waiting = Aguardando...
|
waiting = Esperando...
|
||||||
waiting.players = Esperando por jogadores...
|
waiting.players = Esperando por jogadores...
|
||||||
wave.enemies = [lightgray]{0} inimigos restantes
|
wave.enemies = [lightgray]{0} inimigos restantes
|
||||||
wave.enemy = [lightgray]{0} inimigo restante
|
wave.enemy = [lightgray]{0} inimigo restante
|
||||||
wave.guardianwarn = Guardião se aproximando em [accent]{0}[] Hordas.
|
wave.enemycores = [accent]{0}[lightgray] núcleos inimigos
|
||||||
wave.guardianwarn.one = Guardião se aproximando em [accent]{0}[] Horda.
|
wave.enemycore = [accent]{0}[lightgray] núcleo inimigo
|
||||||
|
wave.guardianwarn = Guardião se aproximando em [accent]{0}[] hordas.
|
||||||
|
wave.guardianwarn.one = Guardião se aproximando em [accent]{0}[] horda.
|
||||||
loadimage = Carregar\nimagem
|
loadimage = Carregar\nimagem
|
||||||
saveimage = Salvar\nimagem
|
saveimage = Salvar\nimagem
|
||||||
unknown = Desconhecido
|
unknown = Desconhecido
|
||||||
@@ -329,6 +364,7 @@ publish.confirm = Você tem certeza de que quer publicar isso?\n\n[lightgray]Pri
|
|||||||
publish.error = Erro publicando o item: {0}
|
publish.error = Erro publicando o item: {0}
|
||||||
steam.error = Falha em iniciar os serviços da Steam.\nErro: {0}
|
steam.error = Falha em iniciar os serviços da Steam.\nErro: {0}
|
||||||
|
|
||||||
|
editor.cliffs = Paredes para Penhascos
|
||||||
editor.brush = Pincel
|
editor.brush = Pincel
|
||||||
editor.openin = Abrir no editor
|
editor.openin = Abrir no editor
|
||||||
editor.oregen = Geração de minério
|
editor.oregen = Geração de minério
|
||||||
@@ -344,15 +380,22 @@ editor.ingame = Editar em jogo
|
|||||||
editor.publish.workshop = Publicar na oficina
|
editor.publish.workshop = Publicar na oficina
|
||||||
editor.newmap = Novo mapa
|
editor.newmap = Novo mapa
|
||||||
editor.center = Centro
|
editor.center = Centro
|
||||||
|
editor.search = Procurar mapas...
|
||||||
|
editor.filters = Filtrar mapas
|
||||||
|
editor.filters.mode = Modos de jogo:
|
||||||
|
editor.filters.type = Tipo:
|
||||||
|
editor.filters.search = Procurar em:
|
||||||
|
editor.filters.author = Autor
|
||||||
|
editor.filters.description = Descrição
|
||||||
workshop = Oficina
|
workshop = Oficina
|
||||||
waves.title = Hordas
|
waves.title = Hordas
|
||||||
waves.remove = Remover
|
waves.remove = Remover
|
||||||
waves.never = <nunca>
|
|
||||||
waves.every = a cada
|
waves.every = a cada
|
||||||
waves.waves = Horda(s)
|
waves.waves = Horda(s)
|
||||||
waves.perspawn = por spawn
|
waves.perspawn = por spawn
|
||||||
waves.shields = Escudo/Horda
|
waves.shields = Escudo/Horda
|
||||||
waves.to = para
|
waves.to = para
|
||||||
|
waves.max = quantidade máxima
|
||||||
waves.guardian = Guardião
|
waves.guardian = Guardião
|
||||||
waves.preview = Pré-visualizar
|
waves.preview = Pré-visualizar
|
||||||
waves.edit = Editar...
|
waves.edit = Editar...
|
||||||
@@ -361,7 +404,15 @@ waves.load = Carregar da área de transferência
|
|||||||
waves.invalid = Hordas inválidas na área de transferência.
|
waves.invalid = Hordas inválidas na área de transferência.
|
||||||
waves.copied = Hordas copiadas.
|
waves.copied = Hordas copiadas.
|
||||||
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
|
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
|
||||||
|
waves.sort = Ordenar por
|
||||||
|
waves.sort.reverse = Inverter ordem
|
||||||
|
waves.sort.begin = Começar
|
||||||
|
waves.sort.health = Vida
|
||||||
|
waves.sort.type = Tipo
|
||||||
|
waves.units.hide = Esconder tudo
|
||||||
|
waves.units.show = Mostrar tudo
|
||||||
|
|
||||||
|
# esses são intencionalmente em letras minúsculas
|
||||||
wavemode.counts = quantidade
|
wavemode.counts = quantidade
|
||||||
wavemode.totals = total
|
wavemode.totals = total
|
||||||
wavemode.health = vida
|
wavemode.health = vida
|
||||||
@@ -369,6 +420,7 @@ wavemode.health = vida
|
|||||||
editor.default = [lightgray]<padrão>
|
editor.default = [lightgray]<padrão>
|
||||||
details = Detalhes...
|
details = Detalhes...
|
||||||
edit = Editar...
|
edit = Editar...
|
||||||
|
variables = Variáveis
|
||||||
editor.name = Nome:
|
editor.name = Nome:
|
||||||
editor.spawn = Criar unidade
|
editor.spawn = Criar unidade
|
||||||
editor.removeunit = Remover unidade
|
editor.removeunit = Remover unidade
|
||||||
|
|||||||
@@ -391,6 +391,11 @@ waves.every = каждый
|
|||||||
waves.waves = волна(ы)
|
waves.waves = волна(ы)
|
||||||
waves.perspawn = за появление
|
waves.perspawn = за появление
|
||||||
waves.shields = ед. щита/волну
|
waves.shields = ед. щита/волну
|
||||||
|
waves.sort = Сортировать по
|
||||||
|
waves.sort.reverse = Обратная сортировка
|
||||||
|
waves.sort.begin = Начало
|
||||||
|
waves.sort.health = Здоровье
|
||||||
|
waves.sort.type = Тип
|
||||||
waves.to = до
|
waves.to = до
|
||||||
waves.max = максимум единиц
|
waves.max = максимум единиц
|
||||||
waves.guardian = Страж
|
waves.guardian = Страж
|
||||||
@@ -895,6 +900,7 @@ setting.seconds = {0} секунд
|
|||||||
setting.milliseconds = {0} миллисекунд
|
setting.milliseconds = {0} миллисекунд
|
||||||
setting.fullscreen.name = Полноэкранный режим
|
setting.fullscreen.name = Полноэкранный режим
|
||||||
setting.borderlesswindow.name = Безрамочное окно
|
setting.borderlesswindow.name = Безрамочное окно
|
||||||
|
setting.borderlesswindow.description = Для вступления изменений в силу может потребоваться перезагрузка игры.
|
||||||
setting.fps.name = Показывать FPS и пинг
|
setting.fps.name = Показывать FPS и пинг
|
||||||
setting.smoothcamera.name = Плавная камера
|
setting.smoothcamera.name = Плавная камера
|
||||||
setting.vsync.name = Вертикальная синхронизация
|
setting.vsync.name = Вертикальная синхронизация
|
||||||
@@ -1513,7 +1519,7 @@ block.liquid-router.description = Принимает жидкости из од
|
|||||||
block.liquid-tank.description = Хранит большое количество жидкости. Выводит жидкости во все стороны, подобно жидкостному маршрутизатору.
|
block.liquid-tank.description = Хранит большое количество жидкости. Выводит жидкости во все стороны, подобно жидкостному маршрутизатору.
|
||||||
block.liquid-junction.description = Действует как мост для двух пересекающихся трубопроводов.
|
block.liquid-junction.description = Действует как мост для двух пересекающихся трубопроводов.
|
||||||
block.bridge-conduit.description = Перемещает жидкости над любой местностью или зданиями.
|
block.bridge-conduit.description = Перемещает жидкости над любой местностью или зданиями.
|
||||||
block.liquid-container.description = Хранит большое количество жидкости. Выводит их во все стороны, как жидкостный маршрутизатор.
|
block.liquid-container.description = Хранит небольшое количество жидкости. Выводит жидкости во все стороны, подобно жидкостному маршрутизатору.
|
||||||
block.phase-conduit.description = Перемещает жидкости над любой местностью или зданиями. Большая дистанция, чем у жидкостного моста, но требует энергию.
|
block.phase-conduit.description = Перемещает жидкости над любой местностью или зданиями. Большая дистанция, чем у жидкостного моста, но требует энергию.
|
||||||
block.power-node.description = Передает питание на подключенные узлы. Узел будет получать питание или поставлять питание на любые соседние блоки.
|
block.power-node.description = Передает питание на подключенные узлы. Узел будет получать питание или поставлять питание на любые соседние блоки.
|
||||||
block.power-node-large.description = Усовершенствованный силовой узел с большей дальностью.
|
block.power-node-large.description = Усовершенствованный силовой узел с большей дальностью.
|
||||||
|
|||||||
@@ -78,13 +78,12 @@ schematic.tagexists = Thẻ đã tồn tại.
|
|||||||
|
|
||||||
stats = Thống kê
|
stats = Thống kê
|
||||||
stat.wave = Đợt đã vượt qua:[accent] {0}
|
stat.wave = Đợt đã vượt qua:[accent] {0}
|
||||||
|
stat.unitsCreated = Quân lính đã tạo:[accent] {0}
|
||||||
stat.enemiesDestroyed = Kẻ thù bị tiêu diệt:[accent] {0}
|
stat.enemiesDestroyed = Kẻ thù bị tiêu diệt:[accent] {0}
|
||||||
stat.built = Số công trình đã xây dựng:[accent] {0}
|
stat.built = Số công trình đã xây dựng:[accent] {0}
|
||||||
stat.destroyed = Số công trình đã bị phá:[accent] {0}
|
stat.destroyed = Số công trình đã bị phá:[accent] {0}
|
||||||
stat.deconstructed = Số công trình được xây dựng lại:[accent] {0}
|
stat.deconstructed = Số công trình được xây dựng lại:[accent] {0}
|
||||||
stat.delivered = Lượng tài nguyên được phóng:
|
|
||||||
stat.playtime = Thời gian chơi:[accent] {0}
|
stat.playtime = Thời gian chơi:[accent] {0}
|
||||||
stat.rank = Xếp hạng: [accent]{0}
|
|
||||||
|
|
||||||
globalitems = [accent]Toàn bộ vật phẩm
|
globalitems = [accent]Toàn bộ vật phẩm
|
||||||
map.delete = Bạn có chắc chắn muốn xóa bản đồ "[accent]{0}[]"?
|
map.delete = Bạn có chắc chắn muốn xóa bản đồ "[accent]{0}[]"?
|
||||||
@@ -94,6 +93,7 @@ level.mode = Chế độ:
|
|||||||
coreattack = < Căn cứ đang bị tấn công! >
|
coreattack = < Căn cứ đang bị tấn công! >
|
||||||
nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
nearpoint = [[ [scarlet]RỜI KHỎI KHU VỰC ĐÁP NGAY LẬP TỨC[] ]\nsự hủy diệt sắp xảy ra
|
||||||
database = Cơ sở dữ liệu
|
database = Cơ sở dữ liệu
|
||||||
|
database.button = Cơ sở dữ liệu
|
||||||
savegame = Lưu trò chơi
|
savegame = Lưu trò chơi
|
||||||
loadgame = Tải lại màn chơi
|
loadgame = Tải lại màn chơi
|
||||||
joingame = Tham gia trò chơi
|
joingame = Tham gia trò chơi
|
||||||
@@ -101,6 +101,7 @@ customgame = Tùy chỉnh
|
|||||||
newgame = Trò chơi mới
|
newgame = Trò chơi mới
|
||||||
none = <trống>
|
none = <trống>
|
||||||
none.found = [lightgray]<không tìm thấy>
|
none.found = [lightgray]<không tìm thấy>
|
||||||
|
none.inmap = [lightgray]<không có trong bản đồ>
|
||||||
minimap = Bản đồ nhỏ
|
minimap = Bản đồ nhỏ
|
||||||
position = Vị trí
|
position = Vị trí
|
||||||
close = Đóng
|
close = Đóng
|
||||||
@@ -168,6 +169,7 @@ launchcore = Phóng căn cứ
|
|||||||
filename = Tên tệp:
|
filename = Tên tệp:
|
||||||
unlocked = Đã mở khóa nội dung mới!
|
unlocked = Đã mở khóa nội dung mới!
|
||||||
available = Đã có mục nghiên cứu mới!
|
available = Đã có mục nghiên cứu mới!
|
||||||
|
unlock.incampaign = < Mở khóa trong chiến dịch để biết chi tiết >
|
||||||
completed = [accent]Hoàn tất
|
completed = [accent]Hoàn tất
|
||||||
techtree = Tiến trình
|
techtree = Tiến trình
|
||||||
research.legacy = Dữ liệu nghiên cứu từ phiên bản[accent]5.0[] được tìm thấy.\nBạn có muốn [accent]tải dữ liệu này[], hoặc [accent]bỏ qua[] và bắt đầu nghiên cứu lại trong chiến dịch mới (khuyến nghị)?
|
research.legacy = Dữ liệu nghiên cứu từ phiên bản[accent]5.0[] được tìm thấy.\nBạn có muốn [accent]tải dữ liệu này[], hoặc [accent]bỏ qua[] và bắt đầu nghiên cứu lại trong chiến dịch mới (khuyến nghị)?
|
||||||
@@ -214,6 +216,7 @@ hosts.none = [lightgray]Không có máy chủ cục bộ nào được tìm th
|
|||||||
host.invalid = [scarlet]Không thể kết nối đến máy chủ.
|
host.invalid = [scarlet]Không thể kết nối đến máy chủ.
|
||||||
|
|
||||||
servers.local = Máy chủ cục bộ
|
servers.local = Máy chủ cục bộ
|
||||||
|
servers.local.steam = Màn chơi hiện có & Máy chủ cục bộ
|
||||||
servers.remote = Máy chủ tùy chỉnh
|
servers.remote = Máy chủ tùy chỉnh
|
||||||
servers.global = Máy chủ từ cộng đồng
|
servers.global = Máy chủ từ cộng đồng
|
||||||
|
|
||||||
@@ -285,6 +288,7 @@ save.corrupted = Tệp bản lưu bị hỏng hoặc không hợp lệ!
|
|||||||
empty = <trống>
|
empty = <trống>
|
||||||
on = Bật
|
on = Bật
|
||||||
off = Tắt
|
off = Tắt
|
||||||
|
save.search = Tìm kiếm màn chơi đã lưu...
|
||||||
save.autosave = Tự động lưu: {0}
|
save.autosave = Tự động lưu: {0}
|
||||||
save.map = Bản đồ: {0}
|
save.map = Bản đồ: {0}
|
||||||
save.wave = Đợt {0}
|
save.wave = Đợt {0}
|
||||||
@@ -315,7 +319,7 @@ data.invalid = Đây không phải dữ liệu trò chơi hợp lệ.
|
|||||||
data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức.
|
data.import.confirm = Nhập dữ liệu bên ngoài sẽ ghi đè[scarlet] tất cả[] dữ liệu trò chơi hiện tại.\n[accent]Điều này không thể hoàn tác![]\n\nSau khi dữ liệu được nhập, trò chơi của bạn sẽ thoát ngay lập tức.
|
||||||
quit.confirm = Bạn có chắc muốn thoát?
|
quit.confirm = Bạn có chắc muốn thoát?
|
||||||
loading = [accent]Đang tải...
|
loading = [accent]Đang tải...
|
||||||
reloading = [accent]Đang tải lại Mods...
|
downloading = [accent]Đang tải xuống...
|
||||||
saving = [accent]Đang lưu...
|
saving = [accent]Đang lưu...
|
||||||
respawn = [accent][[{0}][] để hồi sinh tại căn cứ
|
respawn = [accent][[{0}][] để hồi sinh tại căn cứ
|
||||||
cancelbuilding = [accent][[{0}][] để hủy xây
|
cancelbuilding = [accent][[{0}][] để hủy xây
|
||||||
@@ -360,6 +364,7 @@ publish.confirm = Bạn có chắc chắn muốn xuất bản không?\n\n[lightg
|
|||||||
publish.error = Lỗi khi xuất bản: {0}
|
publish.error = Lỗi khi xuất bản: {0}
|
||||||
steam.error = Không thể khởi chạy dịch vụ Steam.\nLỗi: {0}
|
steam.error = Không thể khởi chạy dịch vụ Steam.\nLỗi: {0}
|
||||||
|
|
||||||
|
editor.cliffs = Chuyển tường thành vách đá
|
||||||
editor.brush = Kích thước
|
editor.brush = Kích thước
|
||||||
editor.openin = Mở trong trình chỉnh sửa
|
editor.openin = Mở trong trình chỉnh sửa
|
||||||
editor.oregen = Cấu trúc quặng
|
editor.oregen = Cấu trúc quặng
|
||||||
@@ -375,6 +380,13 @@ editor.ingame = Chỉnh sửa trong trò chơi
|
|||||||
editor.publish.workshop = Xuất bản lên Workshop
|
editor.publish.workshop = Xuất bản lên Workshop
|
||||||
editor.newmap = Bản đồ mới
|
editor.newmap = Bản đồ mới
|
||||||
editor.center = Trung tâm
|
editor.center = Trung tâm
|
||||||
|
editor.search = Tìm kiếm bản đồ...
|
||||||
|
editor.filters = Lọc bản đồ
|
||||||
|
editor.filters.mode = Chế độ:
|
||||||
|
editor.filters.type = Kiểu bản đồ:
|
||||||
|
editor.filters.search = Tìm kiếm trongtrong:
|
||||||
|
editor.filters.author = Tác giả
|
||||||
|
editor.filters.description = Miêu tả
|
||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Đợt
|
waves.title = Đợt
|
||||||
waves.remove = Xóa
|
waves.remove = Xóa
|
||||||
@@ -383,6 +395,7 @@ waves.waves = đợt
|
|||||||
waves.perspawn = mỗi lần xuất hiện
|
waves.perspawn = mỗi lần xuất hiện
|
||||||
waves.shields = khiên/đợt
|
waves.shields = khiên/đợt
|
||||||
waves.to = đến
|
waves.to = đến
|
||||||
|
waves.max = Số lượng quân lính tối đa
|
||||||
waves.guardian = Boss
|
waves.guardian = Boss
|
||||||
waves.preview = Xem trước
|
waves.preview = Xem trước
|
||||||
waves.edit = Chỉnh sửa...
|
waves.edit = Chỉnh sửa...
|
||||||
@@ -391,6 +404,13 @@ waves.load = Lấy từ bộ nhớ tạm
|
|||||||
waves.invalid = Lượt không hợp lệ trong bộ nhớ tạm.
|
waves.invalid = Lượt không hợp lệ trong bộ nhớ tạm.
|
||||||
waves.copied = Đã sao chép lượt.
|
waves.copied = Đã sao chép lượt.
|
||||||
waves.none = Không có kẻ thù được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định.
|
waves.none = Không có kẻ thù được xác định.\nLưu ý rằng bố cục mỗi đợt trống sẽ tự động được thay thế bằng bố cục mặc định.
|
||||||
|
waves.sort = Sắp xếp theo
|
||||||
|
waves.sort.reverse = Đảo ngược sắp xếp
|
||||||
|
waves.sort.begin = Bắt đầu
|
||||||
|
waves.sort.health = Máu
|
||||||
|
waves.sort.type = Thể loại
|
||||||
|
waves.units.hide = Ẩn tất cả
|
||||||
|
waves.units.show = Hiện tất cả
|
||||||
|
|
||||||
#these are intentionally in lower case
|
#these are intentionally in lower case
|
||||||
wavemode.counts = số lượng
|
wavemode.counts = số lượng
|
||||||
@@ -400,6 +420,7 @@ wavemode.health = máu
|
|||||||
editor.default = [lightgray]<Mặc định>
|
editor.default = [lightgray]<Mặc định>
|
||||||
details = Chi tiết...
|
details = Chi tiết...
|
||||||
edit = Chỉnh sửa...
|
edit = Chỉnh sửa...
|
||||||
|
variables = Thông số
|
||||||
editor.name = Tên:
|
editor.name = Tên:
|
||||||
editor.spawn = Thêm kẻ địch
|
editor.spawn = Thêm kẻ địch
|
||||||
editor.removeunit = Xóa kẻ địch
|
editor.removeunit = Xóa kẻ địch
|
||||||
@@ -537,6 +558,7 @@ configure = Tùy chỉnh vật phẩm
|
|||||||
loadout = Vật phẩm
|
loadout = Vật phẩm
|
||||||
resources = Tài nguyên
|
resources = Tài nguyên
|
||||||
bannedblocks = Khối bị cấm
|
bannedblocks = Khối bị cấm
|
||||||
|
bannedunits = Quân lính bị cấm
|
||||||
addall = Thêm tất cả
|
addall = Thêm tất cả
|
||||||
launch.from = Đang phóng từ: [accent]{0}
|
launch.from = Đang phóng từ: [accent]{0}
|
||||||
launch.destination = Đích đến: {0}
|
launch.destination = Đích đến: {0}
|
||||||
@@ -561,10 +583,13 @@ weather.sandstorm.name = Bão cát
|
|||||||
weather.sporestorm.name = Bão bào tử
|
weather.sporestorm.name = Bão bào tử
|
||||||
weather.fog.name = Sương mù
|
weather.fog.name = Sương mù
|
||||||
|
|
||||||
|
sectorlist = Khu vực
|
||||||
|
sectorlist.attacked = {0} đang bị tấn công
|
||||||
sectors.unexplored = [lightgray]Chưa được khám phá
|
sectors.unexplored = [lightgray]Chưa được khám phá
|
||||||
sectors.resources = Tài nguyên:
|
sectors.resources = Tài nguyên:
|
||||||
sectors.production = Sản lượng:
|
sectors.production = Sản lượng:
|
||||||
sectors.export = Xuất:
|
sectors.export = Xuất:
|
||||||
|
sectors.import = Nhập:
|
||||||
sectors.time = Thời gian:
|
sectors.time = Thời gian:
|
||||||
sectors.threat = Mối đe dọa:
|
sectors.threat = Mối đe dọa:
|
||||||
sectors.wave = Đợt:
|
sectors.wave = Đợt:
|
||||||
@@ -632,6 +657,8 @@ sector.windsweptIslands.description = Xa hơn đường bờ biển là chuỗi
|
|||||||
sector.extractionOutpost.description = Một tiền đồn xa, được kẻ thù xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận tải xuyên ngành là điều cần thiết để chinh phục hơn nữa. Phá hủy căn cứ. Nghiên cứu bệ phóng của họ.
|
sector.extractionOutpost.description = Một tiền đồn xa, được kẻ thù xây dựng với mục đích phóng nguồn lực sang các khu vực khác.\n\nCông nghệ vận tải xuyên ngành là điều cần thiết để chinh phục hơn nữa. Phá hủy căn cứ. Nghiên cứu bệ phóng của họ.
|
||||||
sector.impact0078.description = Đây là tàn tích của tàu vận chuyển giữa các vì sao lần đầu tiên đi vào hệ thống này.\n\nLấy càng nhiều càng tốt từ đống đổ nát. Nghiên cứu bất kỳ công nghệ nguyên vẹn nào.
|
sector.impact0078.description = Đây là tàn tích của tàu vận chuyển giữa các vì sao lần đầu tiên đi vào hệ thống này.\n\nLấy càng nhiều càng tốt từ đống đổ nát. Nghiên cứu bất kỳ công nghệ nguyên vẹn nào.
|
||||||
sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng căn cứ tới các hành tinh địa phương. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất quân lính hải quân. Loại bỏ kẻ thù càng nhanh càng tốt. Nghiên cứu cấu trúc phóng.
|
sector.planetaryTerminal.description = Mục tiêu cuối cùng.\n\nCăn cứ ven biển này chứa một cấu trúc có khả năng phóng căn cứ tới các hành tinh địa phương. Nó được bảo vệ cực kỳ cẩn thận.\n\nSản xuất quân lính hải quân. Loại bỏ kẻ thù càng nhanh càng tốt. Nghiên cứu cấu trúc phóng.
|
||||||
|
sector.coastline.name = Coastline
|
||||||
|
sector.navalFortress.name = Naval Fortress
|
||||||
|
|
||||||
status.burning.name = Cháy
|
status.burning.name = Cháy
|
||||||
status.freezing.name = Đóng băng
|
status.freezing.name = Đóng băng
|
||||||
@@ -643,9 +670,11 @@ status.electrified.name = Electrified
|
|||||||
status.spore-slowed.name = Spore Slowed
|
status.spore-slowed.name = Spore Slowed
|
||||||
status.tarred.name = Tarred
|
status.tarred.name = Tarred
|
||||||
status.overclock.name = Overclock
|
status.overclock.name = Overclock
|
||||||
|
status.overdrive.name = Overdrive
|
||||||
status.shocked.name = Shock
|
status.shocked.name = Shock
|
||||||
status.blasted.name = Nổ
|
status.blasted.name = Nổ
|
||||||
status.unmoving.name = Bất động
|
status.unmoving.name = Bất động
|
||||||
|
status.boss.name = Guardian
|
||||||
|
|
||||||
settings.language = Ngôn ngữ
|
settings.language = Ngôn ngữ
|
||||||
settings.data = Dữ liệu trò chơi
|
settings.data = Dữ liệu trò chơi
|
||||||
@@ -794,7 +823,7 @@ bullet.splashdamage = [stat]{0}[lightgray] sát thương diện rộng ~[stat] {
|
|||||||
bullet.incendiary = [stat]cháy
|
bullet.incendiary = [stat]cháy
|
||||||
bullet.homing = [stat]truy đuổi
|
bullet.homing = [stat]truy đuổi
|
||||||
bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối
|
bullet.buildingdamage = [stat]{0}%[lightgray] sát thương khối
|
||||||
bullet.frag = [stat]phá mảnh
|
bullet.frags = [stat]phá mảnh
|
||||||
bullet.lightning = [stat]{0}[lightgray]x tia chớp ~ [stat]{1}[lightgray] sát thương
|
bullet.lightning = [stat]{0}[lightgray]x tia chớp ~ [stat]{1}[lightgray] sát thương
|
||||||
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
bullet.knockback = [stat]{0}[lightgray] bật lùi
|
||||||
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
bullet.pierce = [stat]{0}[lightgray]x xuyên giáp
|
||||||
@@ -806,6 +835,7 @@ bullet.reload = [stat]{0}[lightgray]x tốc độ bắn
|
|||||||
unit.blocks = Khối
|
unit.blocks = Khối
|
||||||
unit.blockssquared = Khối²
|
unit.blockssquared = Khối²
|
||||||
unit.powersecond = đơn vị năng lượng/giây
|
unit.powersecond = đơn vị năng lượng/giây
|
||||||
|
unit.tilessecond = ô/giây
|
||||||
unit.liquidsecond = đơn vị chất lỏng/giây
|
unit.liquidsecond = đơn vị chất lỏng/giây
|
||||||
unit.itemssecond = vật phẩm/giây
|
unit.itemssecond = vật phẩm/giây
|
||||||
unit.liquidunits = đơn vị chất lỏng
|
unit.liquidunits = đơn vị chất lỏng
|
||||||
@@ -831,20 +861,19 @@ category.items = Vật phẩm
|
|||||||
category.crafting = Vào/Sản phẩm
|
category.crafting = Vào/Sản phẩm
|
||||||
category.function = Chức năng
|
category.function = Chức năng
|
||||||
category.optional = Cải tiến
|
category.optional = Cải tiến
|
||||||
|
setting.skipcoreanimation.name = Bỏ qua hiệu ứng phóng/đáp căn cứcứ
|
||||||
setting.landscape.name = Khóa ngang
|
setting.landscape.name = Khóa ngang
|
||||||
setting.shadows.name = Bóng đổ
|
setting.shadows.name = Bóng đổ
|
||||||
setting.blockreplace.name = Tự động đề xuất khối
|
setting.blockreplace.name = Tự động đề xuất khối
|
||||||
setting.linear.name = Lọc tuyến tính
|
setting.linear.name = Lọc tuyến tính
|
||||||
setting.hints.name = Gợi ý
|
setting.hints.name = Gợi ý
|
||||||
setting.logichints.name = Gợi ý Logic
|
setting.logichints.name = Gợi ý Logic
|
||||||
setting.flow.name = Hiện thị tốc độ chuyền tài nguyên
|
|
||||||
setting.backgroundpause.name = Tạm dừng trong nền
|
setting.backgroundpause.name = Tạm dừng trong nền
|
||||||
setting.buildautopause.name = Tự động dừng xây dựng
|
setting.buildautopause.name = Tự động dừng xây dựng
|
||||||
setting.doubletapmine.name = Nhấn đúp để Đào
|
setting.doubletapmine.name = Nhấn đúp để Đào
|
||||||
setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động
|
setting.modcrashdisable.name = Tắt các mod khi gặp sự cố trong khởi động
|
||||||
setting.animatedwater.name = Hiệu ứng nước
|
setting.animatedwater.name = Hiệu ứng nước
|
||||||
setting.animatedshields.name = Hiệu ứng khiên
|
setting.animatedshields.name = Hiệu ứng khiên
|
||||||
setting.antialias.name = Khử răng cưa[lightgray] (yêu cầu khởi động lại)[]
|
|
||||||
setting.playerindicators.name = Hướng người chơi
|
setting.playerindicators.name = Hướng người chơi
|
||||||
setting.indicators.name = Hướng kẻ địch
|
setting.indicators.name = Hướng kẻ địch
|
||||||
setting.autotarget.name = Tự động nhắm mục tiêu
|
setting.autotarget.name = Tự động nhắm mục tiêu
|
||||||
@@ -853,7 +882,8 @@ setting.touchscreen.name = Điều khiển bằng màn hình cảm ứng
|
|||||||
setting.fpscap.name = FPS tối đa
|
setting.fpscap.name = FPS tối đa
|
||||||
setting.fpscap.none = Không giới hạn
|
setting.fpscap.none = Không giới hạn
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = Kích thước UI[lightgray] (yêu cầu khởi động lại)[]
|
setting.uiscale.name = Kích thước UI
|
||||||
|
setting.uiscale.description = Trò chơi sẽ khởi động lại để áp dụng các thay đổi.
|
||||||
setting.swapdiagonal.name = Đặt luôn theo đường chéo
|
setting.swapdiagonal.name = Đặt luôn theo đường chéo
|
||||||
setting.difficulty.training = Luyện tập
|
setting.difficulty.training = Luyện tập
|
||||||
setting.difficulty.easy = Dễ
|
setting.difficulty.easy = Dễ
|
||||||
@@ -871,7 +901,9 @@ setting.saveinterval.name = Khoảng thời gian lưu
|
|||||||
setting.seconds = {0} giây
|
setting.seconds = {0} giây
|
||||||
setting.milliseconds = {0} mili giây
|
setting.milliseconds = {0} mili giây
|
||||||
setting.fullscreen.name = Toàn màn hình
|
setting.fullscreen.name = Toàn màn hình
|
||||||
setting.borderlesswindow.name = Không viền[lightgray] (yêu cầu khởi động lại)
|
setting.borderlesswindow.name = Không viền
|
||||||
|
setting.borderlesswindow.name.windows = Toàn màng hình (không viền)
|
||||||
|
setting.borderlesswindow.description = Trò chơi có thể sẽ khởi động lại để áp dụng các thay đổi
|
||||||
setting.fps.name = Hiển thị FPS & Ping
|
setting.fps.name = Hiển thị FPS & Ping
|
||||||
setting.smoothcamera.name = Chế độ mượt mà
|
setting.smoothcamera.name = Chế độ mượt mà
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
@@ -994,6 +1026,8 @@ rules.wavetimer = Đếm ngược đợt
|
|||||||
rules.waves = Đợt
|
rules.waves = Đợt
|
||||||
rules.attack = Chế độ tấn công
|
rules.attack = Chế độ tấn công
|
||||||
rules.buildai = AI Xây dựng
|
rules.buildai = AI Xây dựng
|
||||||
|
rules.aitier = Cấp độ AI
|
||||||
|
rules.cleanupdeadteams = Xóa công trình của đội bị đánh bại (PvP)
|
||||||
rules.corecapture = Chiếm căn cứ khi phá hủy
|
rules.corecapture = Chiếm căn cứ khi phá hủy
|
||||||
rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác.
|
rules.polygoncoreprotection = Bảo vệ lõi kiểu đa giác.
|
||||||
rules.enemyCheat = Tài nguyên vô hạn (kẻ địch)
|
rules.enemyCheat = Tài nguyên vô hạn (kẻ địch)
|
||||||
@@ -1012,12 +1046,15 @@ rules.deconstructrefundmultiplier = Hệ số số vật phẩm hoàn lại khi
|
|||||||
rules.waitForWaveToEnd = Đợt chờ hết kẻ địch
|
rules.waitForWaveToEnd = Đợt chờ hết kẻ địch
|
||||||
rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô)
|
rules.dropzoneradius = Bán kính vùng thả:[lightgray] (ô)
|
||||||
rules.unitammo = Quân lính cần đạn
|
rules.unitammo = Quân lính cần đạn
|
||||||
|
rules.enemyteam = Đội quân địch
|
||||||
|
rules.playerteam = Đội người chơi
|
||||||
rules.title.waves = Đợt
|
rules.title.waves = Đợt
|
||||||
rules.title.resourcesbuilding = Tài nguyên & Xây dựng
|
rules.title.resourcesbuilding = Tài nguyên & Xây dựng
|
||||||
rules.title.enemy = Kẻ địch
|
rules.title.enemy = Kẻ địch
|
||||||
rules.title.unit = Quân lính
|
rules.title.unit = Quân lính
|
||||||
rules.title.experimental = Thực nghiệm
|
rules.title.experimental = Thực nghiệm
|
||||||
rules.title.environment = Môi trường
|
rules.title.environment = Môi trường
|
||||||
|
rules.title.teams = Đội
|
||||||
rules.lighting = Ánh sáng
|
rules.lighting = Ánh sáng
|
||||||
rules.enemyLights = Đèn địch
|
rules.enemyLights = Đèn địch
|
||||||
rules.fire = Lửa
|
rules.fire = Lửa
|
||||||
@@ -1096,13 +1133,13 @@ unit.reign.name = Reign
|
|||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Corvus
|
||||||
|
|
||||||
block.resupply-point.name = Điểm tiếp tế
|
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Vách đá
|
block.cliff.name = Vách đá
|
||||||
block.sand-boulder.name = Tường cát
|
block.sand-boulder.name = Tường cát
|
||||||
block.basalt-boulder.name = Tường đá basalt
|
block.basalt-boulder.name = Tường đá basalt
|
||||||
block.grass.name = Cỏ
|
block.grass.name = Cỏ
|
||||||
block.molten-slag.name = Xỉ nóng chảy
|
block.molten-slag.name = Xỉ nóng chảy
|
||||||
|
block.pooled-cryofluid.name = Chất làm lạnh
|
||||||
block.space.name = Không gian
|
block.space.name = Không gian
|
||||||
block.salt.name = Muối
|
block.salt.name = Muối
|
||||||
block.salt-wall.name = Tường muối
|
block.salt-wall.name = Tường muối
|
||||||
@@ -1136,6 +1173,7 @@ block.core-nucleus.name = Căn cứ: Trung tâm
|
|||||||
block.deep-water.name = Nước sâu
|
block.deep-water.name = Nước sâu
|
||||||
block.shallow-water.name = Nước
|
block.shallow-water.name = Nước
|
||||||
block.tainted-water.name = Nước nhiểm bẩn
|
block.tainted-water.name = Nước nhiểm bẩn
|
||||||
|
block.deep-tainted-water.name = Nước nhiểm bẩn sâu
|
||||||
block.darksand-tainted-water.name = Nước nhiễm bẩn cát đen
|
block.darksand-tainted-water.name = Nước nhiễm bẩn cát đen
|
||||||
block.tar.name = Dầu
|
block.tar.name = Dầu
|
||||||
block.stone.name = Đá
|
block.stone.name = Đá
|
||||||
@@ -1263,6 +1301,7 @@ block.plated-conduit.name = Ống dẫn bọc giáp
|
|||||||
block.phase-conduit.name = Ống dẫn Phase
|
block.phase-conduit.name = Ống dẫn Phase
|
||||||
block.liquid-router.name = Bộ phân phát chất lỏng
|
block.liquid-router.name = Bộ phân phát chất lỏng
|
||||||
block.liquid-tank.name = Thùng chất lỏng
|
block.liquid-tank.name = Thùng chất lỏng
|
||||||
|
block.liquid-container.name = Bình chất lỏng
|
||||||
block.liquid-junction.name = Giao điểm chất lỏng
|
block.liquid-junction.name = Giao điểm chất lỏng
|
||||||
block.bridge-conduit.name = Cầu dẫn chất lỏng
|
block.bridge-conduit.name = Cầu dẫn chất lỏng
|
||||||
block.rotary-pump.name = Bơm điện
|
block.rotary-pump.name = Bơm điện
|
||||||
@@ -1288,7 +1327,6 @@ block.meltdown.name = Meltdown
|
|||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Bệ phóng
|
block.launch-pad.name = Bệ phóng
|
||||||
block.launch-pad-large.name = Bệ phóng lớn
|
|
||||||
block.segment.name = Segment
|
block.segment.name = Segment
|
||||||
block.command-center.name = Trung tâm chỉ huy
|
block.command-center.name = Trung tâm chỉ huy
|
||||||
block.ground-factory.name = Nhà máy bộ binh
|
block.ground-factory.name = Nhà máy bộ binh
|
||||||
@@ -1303,17 +1341,23 @@ block.payload-router.name = Bộ định tuyến khối hàng
|
|||||||
block.duct.name = Duct
|
block.duct.name = Duct
|
||||||
block.duct-router.name = Duct Router
|
block.duct-router.name = Duct Router
|
||||||
block.duct-bridge.name = Duct Bridge
|
block.duct-bridge.name = Duct Bridge
|
||||||
block.payload-propulsion-tower.name = Payload Propulsion Tower
|
block.payload-propulsion-tower.name = Tháp đẩy khối hàng
|
||||||
block.payload-void.name = Payload Void
|
block.payload-void.name = Payload Void
|
||||||
block.payload-source.name = Payload Source
|
block.payload-source.name = Payload Source
|
||||||
block.disassembler.name = Máy phân tách lớn
|
block.disassembler.name = Máy phân tách lớn
|
||||||
block.silicon-crucible.name = Máy nấu Silicon lớn
|
block.silicon-crucible.name = Máy nấu Silicon lớn
|
||||||
block.overdrive-dome.name = Máy tăng tốc lớn
|
block.overdrive-dome.name = Máy tăng tốc lớn
|
||||||
#experimental, may be removed
|
|
||||||
block.block-forge.name = Block Forge
|
|
||||||
block.block-loader.name = Block Loader
|
|
||||||
block.block-unloader.name = Điểm dỡ hàng
|
|
||||||
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
block.interplanetary-accelerator.name = Máy gia tốc liên hành tinh
|
||||||
|
block.constructor.name = Máy chế tạo
|
||||||
|
block.constructor.description = Chế tạo các khối có kích thước 2x2 ô.
|
||||||
|
block.large-constructor.name = Máy chế tạo lớn
|
||||||
|
block.large-constructor.description = Chế tạo các khối có kích thước lên đến 4x4 ô.
|
||||||
|
block.deconstructor.name = Máy tháo dỡ
|
||||||
|
block.deconstructor.description = Tháo dỡ khối và quân lính, trả lại 100% nguyên liệu.
|
||||||
|
block.payload-loader.name = Payload Loader
|
||||||
|
block.payload-loader.description = Nạp chất lỏng và vật phẩm vào khối.
|
||||||
|
block.payload-unloader.name = Payload Unloader
|
||||||
|
block.payload-unloader.description = Lấy chất lỏng và vật phẩm từ khối.
|
||||||
|
|
||||||
block.switch.name = Công tắc
|
block.switch.name = Công tắc
|
||||||
block.micro-processor.name = Bộ xử lí nhỏ
|
block.micro-processor.name = Bộ xử lí nhỏ
|
||||||
@@ -1348,6 +1392,7 @@ hint.placeTurret = Đặt \uf861 [accent]Súng[] để bảo vệ căn cứ củ
|
|||||||
hint.breaking = [accent]Chuột phải[] và kéo để phá vỡ các khối.
|
hint.breaking = [accent]Chuột phải[] và kéo để phá vỡ các khối.
|
||||||
hint.breaking.mobile = Kích hoạt \ue817 [accent]Cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn.
|
hint.breaking.mobile = Kích hoạt \ue817 [accent]Cây búa[] ở phía dưới cùng bên phải và nhấn để phá vỡ các khối.\n\nGiữ ngón tay của bạn trong một giây và kéo để phá khối trong vùng được chọn.
|
||||||
hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]menu xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải.
|
hint.blockInfo = Xem thông tin của một khối bằng cách chọn nó trong [accent]menu xây dựng[], Sau đó chọn nút [accent][[?][] ở bên phải.
|
||||||
|
hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources.
|
||||||
hint.research = Sử dụng nút \ue875 [accent]Nghiên cứu[] để nghiên cứu công nghệ mới.
|
hint.research = Sử dụng nút \ue875 [accent]Nghiên cứu[] để nghiên cứu công nghệ mới.
|
||||||
hint.research.mobile = Sử dụng nút \ue875 [accent]Nghiên cứu[] trong \ue88c [accent]Menu[] để nghiên cứu công nghệ mới.
|
hint.research.mobile = Sử dụng nút \ue875 [accent]Nghiên cứu[] trong \ue88c [accent]Menu[] để nghiên cứu công nghệ mới.
|
||||||
hint.unitControl = Giữ [accent][[L-ctrl][] và [accent]click[] để điều khiển quân lính của bạn hoặc súng.
|
hint.unitControl = Giữ [accent][[L-ctrl][] và [accent]click[] để điều khiển quân lính của bạn hoặc súng.
|
||||||
@@ -1369,6 +1414,7 @@ hint.generator = \uf879 [accent]Máy phát điện đốt cháy[] đốt than v
|
|||||||
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
hint.guardian = [accent]Boss[] được bọc giáp. Sử dụng loại đạn yếu chẳng hạn như [accent]Đồng[] và [accent]Chì[] là [scarlet]không hiệu quả[].\n\nSử dụng súng tiên tiến hơn hoặc sử dụng \uf835 [accent]Than chì làm đạn [] \uf861Duo/\uf859Salvo đạn dược để hạ gục Boss.
|
||||||
hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ [accent]Trụ sở[] trên căn cứ [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó.
|
hint.coreUpgrade = Các căn cứ có thể được nâng cấp bằng cách [accent]đặt căn cứ cấp cao hơn trên chúng[].\n\nĐặt một căn cứ [accent]Trụ sở[] trên căn cứ [accent]Cơ sở[]. Đảm bảo không có vật cản gần đó.
|
||||||
hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[].
|
hint.presetLaunch = Khác khu vực đáp [accent] xám[], như [accent]Frozen Forest[], có thể được phóng đến từ bất cứ đâu. Nó không yêu cầu chiếm các khu vực lân cận.\n\n[accent]Các khu vực được đánh số[], chẳng hạn như cái này, là [accent]không bắt buộc[].
|
||||||
|
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 = Sau khi căn cứ đầy vật phẩm, bất kì vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[].
|
hint.coreIncinerate = Sau khi căn cứ đầy vật phẩm, bất kì vật phẩm vào thuộc loại đó nhận được sẽ bị [accent]tiêu hủy[].
|
||||||
hint.coopCampaign = Khi chơi chiến dịch[accent]co-op[], các vật phẩm được sản xuất trong bản đồ hiện tại cũng sẽ được gửi [accent]đến các khu vực của bạn[].\n\nBất kỳ nghiên cứu mới nào được thực hiện đều được lưu lại.
|
hint.coopCampaign = Khi chơi chiến dịch[accent]co-op[], các vật phẩm được sản xuất trong bản đồ hiện tại cũng sẽ được gửi [accent]đến các khu vực của bạn[].\n\nBất kỳ nghiên cứu mới nào được thực hiện đều được lưu lại.
|
||||||
|
|
||||||
@@ -1399,7 +1445,7 @@ liquid.slag.description = Dùng để tách các kim loại, hoặc phun vào k
|
|||||||
liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy.
|
liquid.oil.description = Dùng trong sản xuất vật liệu tiên tiến và làm đạn gây cháy.
|
||||||
liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy.
|
liquid.cryofluid.description = Dùng làm chất làm mát trong lò phản ứng, súng và nhà máy.
|
||||||
|
|
||||||
block.resupply-point.description = Cung cấp đạn đồng cho các quân lính ở gần. Không tương thích với quân lính sử dụng điện.
|
block.derelict = [lightgray]Derelict
|
||||||
block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào từ phía bên cạnh.
|
block.armored-conveyor.description = Vận chuyển vật phẩm về phía trước. Không nhận đầu vào từ phía bên cạnh.
|
||||||
block.illuminator.description = Phát sáng.
|
block.illuminator.description = Phát sáng.
|
||||||
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
block.message.description = Lưu trữ tin nhắn giao tiếp giữa đồng đội.
|
||||||
@@ -1425,6 +1471,8 @@ block.item-source.description = Tạo ra vật phẩm mãi mãi. Chỉ có trong
|
|||||||
block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ tự do.
|
block.item-void.description = Hủy mọi vật phẩm. Chỉ có trong chế độ tự do.
|
||||||
block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ tự do.
|
block.liquid-source.description = Tạo ra chất lỏng mãi mãi. Chỉ có trong chế độ tự do.
|
||||||
block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ tự do.
|
block.liquid-void.description = Loại bỏ mọi chất lỏng. Chỉ có trong chế độ tự do.
|
||||||
|
block.payload-source.description = Tạo ra bất kì khối hàng nào. Chỉ có trong chế độ tự do.
|
||||||
|
block.payload-void.description = Phá hủy bất kì khối hàng nào. Chỉ có trong chế độ tự do.
|
||||||
block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
block.copper-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
||||||
block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
block.copper-wall-large.description = Bảo vệ nhiều công trình khỏi đạn của kẻ thù.
|
||||||
block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
block.titanium-wall.description = Bảo vệ các công trình khỏi đạn của kẻ thù.
|
||||||
@@ -1465,7 +1513,8 @@ block.conduit.description = Đẩy chất lỏng đến trước, dùng với b
|
|||||||
block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn.
|
block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn.
|
||||||
block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ.
|
block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ.
|
||||||
block.liquid-router.description = Nhận chất lỏng từ một phía và đưa đều ra ba phía còn lại. Có thể trữ một lượng chất lỏng nhất định.
|
block.liquid-router.description = Nhận chất lỏng từ một phía và đưa đều ra ba phía còn lại. Có thể trữ một lượng chất lỏng nhất định.
|
||||||
block.liquid-tank.description = Trữ được nhiều chất lỏng. Đưa đều ra mọi phía như bộ phân nhánh chất lỏng.
|
block.liquid-tank.description = Trữ được một lượng lớn chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng.
|
||||||
|
block.liquid-container.description = Lưu trữ một lượng vừa phải chất lỏng. Đưa đều ra mọi phía như bộ phân phát chất lỏng.
|
||||||
block.liquid-junction.description = Chức năng như cầu cho hai ống nước băng chéo nhau.
|
block.liquid-junction.description = Chức năng như cầu cho hai ống nước băng chéo nhau.
|
||||||
block.bridge-conduit.description = Vận chuyển chất lỏng qua nhiều loại địa hình hoặc công trình.
|
block.bridge-conduit.description = Vận chuyển chất lỏng qua nhiều loại địa hình hoặc công trình.
|
||||||
block.phase-conduit.description = Vận chuyển chất lỏng qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng.
|
block.phase-conduit.description = Vận chuyển chất lỏng qua địa hình hoặc công trình. Phạm vi dài hơn cầu nối, nhưng cần năng lượng.
|
||||||
@@ -1543,6 +1592,8 @@ block.memory-bank.description = Lưu trữ thông tin cho bộ xử lí. Dung l
|
|||||||
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
block.logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
block.large-logic-display.description = Hiển thị đồ họa tùy ý từ bộ xử lí.
|
||||||
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
block.interplanetary-accelerator.description = Tòa súng từ trường cỡ lớn. Tăng tốc vật phóng đến vận tốc thoát để di chuyển giữa các hành tinh.
|
||||||
|
block.repair-turret.description = Sửa chữa những quân lính bị hư hỏng trong khu vực nhất địnhđịnh. Có thể làm mát để tăng hiệu quả.
|
||||||
|
block.payload-propulsion-tower.description = Cơ cấu vận chuyển các khối hàng tầm xa. Bắn khối hàng cho các tháp đẩy khối hàng kháckhác.
|
||||||
|
|
||||||
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
unit.dagger.description = Bắn đạn tiêu chuẩn vào tất cả kẻ địch xung quanh.
|
||||||
unit.mace.description = Phun lửa vào tất cả kẻ địch xung quanh.
|
unit.mace.description = Phun lửa vào tất cả kẻ địch xung quanh.
|
||||||
@@ -1577,6 +1628,11 @@ unit.omura.description = Bắn đạn từ trường xuyên giáp tầm xa vào
|
|||||||
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.alpha.description = Bảo vệ căn cứ cơ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
unit.beta.description = Bảo vệ căn cứ trụ sở khỏi kẻ thù. Có thể xây dựng.
|
||||||
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
unit.gamma.description = Bảo vệ căn cứ trung tâm khỏi kẻ thù. Có thể xây dựng.
|
||||||
|
unit.retusa.description = Fires homing torpedoes at nearby enemies. Repairs allied units.
|
||||||
|
unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret.
|
||||||
|
unit.cyerce.description = Fires seeking cluster-missiles at enemies. Repairs allied units.
|
||||||
|
unit.aegires.description = Shocks all enemy units and structures that enter its energy field. Repairs all allies.
|
||||||
|
unit.navanax.description = Fires explosive EMP projectiles, dealing significant damage to enemy power networks and repairing allied structures. Melts nearby enemies with 4 autonomous laser turrets.
|
||||||
|
|
||||||
lst.read = Đọc một số từ bộ nhớ được liên kết.
|
lst.read = Đọc một số từ bộ nhớ được liên kết.
|
||||||
lst.write = Ghi một số vào bộ nhớ được liên kết.
|
lst.write = Ghi một số vào bộ nhớ được liên kết.
|
||||||
@@ -1591,6 +1647,8 @@ lst.sensor = Lấy dữ liệu từ một khối hoặc quân lính.
|
|||||||
lst.set = Đặt một biến.
|
lst.set = Đặt một biến.
|
||||||
lst.operation = Thực hiện thao tác trên 1-2 biến.
|
lst.operation = Thực hiện thao tác trên 1-2 biến.
|
||||||
lst.end = Chuyển đến lệnh đầu tiên.
|
lst.end = Chuyển đến lệnh đầu tiên.
|
||||||
|
lst.wait = Chờ trong khoảng thời gian nhất định.
|
||||||
|
lst.lookup = Look up an item/liquid/unit/block type by ID.\nTotal counts of each type can be accessed with:\n[accent]@unitCount[] / [accent]@itemCount[] / [accent]@liquidCount[] / [accent]@blockCount[]
|
||||||
lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng.
|
lst.jump = Chuyển qua lệnh khác nếu điều kiện đúng.
|
||||||
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
lst.unitbind = Bind to the next unit of a type, and store it in [accent]@unit[].
|
||||||
lst.unitcontrol = Control the currently bound unit.
|
lst.unitcontrol = Control the currently bound unit.
|
||||||
@@ -1689,13 +1747,13 @@ sensor.in = The building/unit to sense.
|
|||||||
radar.from = Building to sense from.\nSensor range is limited by building range.
|
radar.from = Building to sense from.\nSensor range is limited by building range.
|
||||||
radar.target = Filter for units to sense.
|
radar.target = Filter for units to sense.
|
||||||
radar.and = Additional filters.
|
radar.and = Additional filters.
|
||||||
radar.order = Sorting order. 0 to reverse.
|
radar.order = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược.
|
||||||
radar.sort = Metric to sort results by.
|
radar.sort = Metric to sort results by.
|
||||||
radar.output = Variable to write output unit to.
|
radar.output = Variable to write output unit to.
|
||||||
|
|
||||||
unitradar.target = Filter for units to sense.
|
unitradar.target = Filter for units to sense.
|
||||||
unitradar.and = Additional filters.
|
unitradar.and = Additional filters.
|
||||||
unitradar.order = Sorting order. 0 to reverse.
|
unitradar.order = Sắp xếp theo thứ tự. đặt giá trị 0 để đảo ngược.
|
||||||
unitradar.sort = Metric to sort results by.
|
unitradar.sort = Metric to sort results by.
|
||||||
unitradar.output = Variable to write output unit to.
|
unitradar.output = Variable to write output unit to.
|
||||||
|
|
||||||
@@ -1706,8 +1764,8 @@ control.shoot = Whether to shoot.
|
|||||||
unitlocate.enemy = Whether to locate enemy buildings.
|
unitlocate.enemy = Whether to locate enemy buildings.
|
||||||
unitlocate.found = Whether the object was found.
|
unitlocate.found = Whether the object was found.
|
||||||
unitlocate.building = Output variable for located building.
|
unitlocate.building = Output variable for located building.
|
||||||
unitlocate.outx = Output X coordinate.
|
unitlocate.outx = Cho ra tọa độ X.
|
||||||
unitlocate.outy = Output Y coordinate.
|
unitlocate.outy = Cho ra tọa độ Y.
|
||||||
unitlocate.group = Building group to look for.
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
lenum.idle = Không di chuyển, nhưng vẫn xây dựng/đào.\nTrạng thái mặc định.
|
lenum.idle = Không di chuyển, nhưng vẫn xây dựng/đào.\nTrạng thái mặc định.
|
||||||
@@ -1721,6 +1779,7 @@ lenum.itemdrop = Thả vật phẩm.
|
|||||||
lenum.itemtake = Lấy vật phẩm từ khối.
|
lenum.itemtake = Lấy vật phẩm từ khối.
|
||||||
lenum.paydrop = Thả khối hàng hiện tại.
|
lenum.paydrop = Thả khối hàng hiện tại.
|
||||||
lenum.paytake = Nhất khối hàng tại vị trí hiện tại.
|
lenum.paytake = Nhất khối hàng tại vị trí hiện tại.
|
||||||
|
lenum.payenter = Enter/land on the payload block the unit is on.
|
||||||
lenum.flag = Numeric unit flag.
|
lenum.flag = Numeric unit flag.
|
||||||
lenum.mine = Đào tại vị trí.
|
lenum.mine = Đào tại vị trí.
|
||||||
lenum.build = Xây công trình.
|
lenum.build = Xây công trình.
|
||||||
|
|||||||
@@ -129,3 +129,4 @@ genNAowl
|
|||||||
TranquillyUnpleasant
|
TranquillyUnpleasant
|
||||||
Darkness6030
|
Darkness6030
|
||||||
hortiSquash
|
hortiSquash
|
||||||
|
King-BR
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ public class Pathfinder implements Runnable{
|
|||||||
(PathTile.solid(tile) ? 5 : 0),
|
(PathTile.solid(tile) ? 5 : 0),
|
||||||
|
|
||||||
//water
|
//water
|
||||||
(team, tile) -> PathTile.solid(tile) || !PathTile.liquid(tile) ? 200 : 2 +
|
(team, tile) -> (PathTile.solid(tile) || !PathTile.liquid(tile) ? 6000 : 1) +
|
||||||
(PathTile.nearGround(tile) || PathTile.nearSolid(tile) ? 14 : 0) +
|
(PathTile.nearGround(tile) || PathTile.nearSolid(tile) ? 14 : 0) +
|
||||||
(PathTile.deep(tile) ? -1 : 0) +
|
(PathTile.deep(tile) ? 0 : 1) +
|
||||||
(PathTile.damages(tile) ? 35 : 0)
|
(PathTile.damages(tile) ? 35 : 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class PhysicsProcess implements AsyncProcess{
|
|||||||
|
|
||||||
//find Unit without bodies and assign them
|
//find Unit without bodies and assign them
|
||||||
for(Unit entity : group){
|
for(Unit entity : group){
|
||||||
if(entity.type == null) continue;
|
if(entity == null || entity.type == null) continue;
|
||||||
|
|
||||||
if(entity.physref == null){
|
if(entity.physref == null){
|
||||||
PhysicsBody body = new PhysicsBody();
|
PhysicsBody body = new PhysicsBody();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import arc.math.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -1839,7 +1840,7 @@ public class Blocks implements ContentList{
|
|||||||
size = 4;
|
size = 4;
|
||||||
shootCone = 2f;
|
shootCone = 2f;
|
||||||
shootSound = Sounds.railgun;
|
shootSound = Sounds.railgun;
|
||||||
unitSort = (u, x, y) -> -u.maxHealth + Mathf.dst2(u.x, u.y, x, y) / 6400f;
|
unitSort = UnitSorts.strongest;
|
||||||
|
|
||||||
coolantMultiplier = 0.4f;
|
coolantMultiplier = 0.4f;
|
||||||
|
|
||||||
|
|||||||
@@ -260,33 +260,10 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
//a command was sent, now get the output
|
//a command was sent, now get the output
|
||||||
if(response.type != ResponseType.valid){
|
if(response.type != ResponseType.valid){
|
||||||
String text;
|
String text = netServer.invalidHandler.handle(player, response);
|
||||||
|
if(text != null){
|
||||||
//send usage
|
player.sendMessage(text);
|
||||||
if(response.type == ResponseType.manyArguments){
|
|
||||||
text = "[scarlet]Too many arguments. Usage:[lightgray] " + response.command.text + "[gray] " + response.command.paramText;
|
|
||||||
}else if(response.type == ResponseType.fewArguments){
|
|
||||||
text = "[scarlet]Too few arguments. Usage:[lightgray] " + response.command.text + "[gray] " + response.command.paramText;
|
|
||||||
}else{ //unknown command
|
|
||||||
int minDst = 0;
|
|
||||||
Command closest = null;
|
|
||||||
|
|
||||||
for(Command command : netServer.clientCommands.getCommandList()){
|
|
||||||
int dst = Strings.levenshtein(command.text, response.runCommand);
|
|
||||||
if(dst < 3 && (closest == null || dst < minDst)){
|
|
||||||
minDst = dst;
|
|
||||||
closest = command;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(closest != null){
|
|
||||||
text = "[scarlet]Unknown command. Did you mean \"[lightgray]" + closest.text + "[]\"?";
|
|
||||||
}else{
|
|
||||||
text = "[scarlet]Unknown command. Check [lightgray]/help[scarlet].";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendMessage(text);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,32 @@ public class NetServer implements ApplicationListener{
|
|||||||
/** Converts a message + NULLABLE player sender into a single string. Override for custom prefixes/suffixes. */
|
/** Converts a message + NULLABLE player sender into a single string. Override for custom prefixes/suffixes. */
|
||||||
public ChatFormatter chatFormatter = (player, message) -> player == null ? message : "[coral][[" + player.coloredName() + "[coral]]:[white] " + message;
|
public ChatFormatter chatFormatter = (player, message) -> player == null ? message : "[coral][[" + player.coloredName() + "[coral]]:[white] " + message;
|
||||||
|
|
||||||
|
/** Handles an incorrect command response. Returns text that will be sent to player. Override for customisation. */
|
||||||
|
public InvalidCommandHandler invalidHandler = (player, response) -> {
|
||||||
|
if(response.type == ResponseType.manyArguments){
|
||||||
|
return "[scarlet]Too many arguments. Usage:[lightgray] " + response.command.text + "[gray] " + response.command.paramText;
|
||||||
|
}else if(response.type == ResponseType.fewArguments){
|
||||||
|
return "[scarlet]Too few arguments. Usage:[lightgray] " + response.command.text + "[gray] " + response.command.paramText;
|
||||||
|
}else{ //unknown command
|
||||||
|
int minDst = 0;
|
||||||
|
Command closest = null;
|
||||||
|
|
||||||
|
for(Command command : netServer.clientCommands.getCommandList()){
|
||||||
|
int dst = Strings.levenshtein(command.text, response.runCommand);
|
||||||
|
if(dst < 3 && (closest == null || dst < minDst)){
|
||||||
|
minDst = dst;
|
||||||
|
closest = command;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(closest != null){
|
||||||
|
return "[scarlet]Unknown command. Did you mean \"[lightgray]" + closest.text + "[]\"?";
|
||||||
|
}else{
|
||||||
|
return "[scarlet]Unknown command. Check [lightgray]/help[scarlet].";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private boolean closing = false;
|
private boolean closing = false;
|
||||||
private Interval timer = new Interval();
|
private Interval timer = new Interval();
|
||||||
|
|
||||||
@@ -757,6 +783,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
player.add();
|
player.add();
|
||||||
|
|
||||||
|
Events.fire(new PlayerConnectionConfirmed(player));
|
||||||
|
|
||||||
if(player.con == null || player.con.hasConnected) return;
|
if(player.con == null || player.con.hasConnected) return;
|
||||||
|
|
||||||
player.con.hasConnected = true;
|
player.con.hasConnected = true;
|
||||||
@@ -992,4 +1020,8 @@ public class NetServer implements ApplicationListener{
|
|||||||
/** @return text to be placed before player name */
|
/** @return text to be placed before player name */
|
||||||
String format(@Nullable Player player, String message);
|
String format(@Nullable Player player, String message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface InvalidCommandHandler{
|
||||||
|
String handle(Player player, CommandResponse response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public class Effect{
|
|||||||
/** Amount added to rotation */
|
/** Amount added to rotation */
|
||||||
public float baseRotation;
|
public float baseRotation;
|
||||||
/** If true, parent unit is data are followed. */
|
/** If true, parent unit is data are followed. */
|
||||||
public boolean followParent;
|
public boolean followParent = true;
|
||||||
/** If this and followParent are true, the effect will offset and rotate with the parent's rotation. */
|
/** If this and followParent are true, the effect will offset and rotate with the parent's rotation. */
|
||||||
public boolean rotWithParent;
|
public boolean rotWithParent;
|
||||||
|
|
||||||
|
|||||||
14
core/src/mindustry/entities/UnitSorts.java
Normal file
14
core/src/mindustry/entities/UnitSorts.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package mindustry.entities;
|
||||||
|
|
||||||
|
import arc.math.*;
|
||||||
|
import mindustry.entities.Units.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
|
||||||
|
public class UnitSorts{
|
||||||
|
public static Sortf
|
||||||
|
|
||||||
|
closest = Unit::dst2,
|
||||||
|
farthest = (u, x, y) -> -u.dst2(x, y),
|
||||||
|
strongest = (u, x, y) -> -u.maxHealth + Mathf.dst2(u.x, u.y, x, y) / 6400f,
|
||||||
|
weakest = (u, x, y) -> u.maxHealth + Mathf.dst2(u.x, u.y, x, y) / 6400f;
|
||||||
|
}
|
||||||
@@ -359,8 +359,9 @@ public class BulletType extends Content implements Cloneable{
|
|||||||
//home in on allies if possible
|
//home in on allies if possible
|
||||||
if(healPercent > 0){
|
if(healPercent > 0){
|
||||||
target = Units.closestTarget(null, b.x, b.y, homingRange,
|
target = Units.closestTarget(null, b.x, b.y, homingRange,
|
||||||
e -> e.checkTarget(collidesAir, collidesGround) && e.team != b.team,
|
e -> e.checkTarget(collidesAir, collidesGround) && e.team != b.team && !b.hasCollided(e.id),
|
||||||
t -> collidesGround && (t.team != b.team || t.damaged()));
|
t -> collidesGround && (t.team != b.team || t.damaged()) && !b.hasCollided(t.id)
|
||||||
|
);
|
||||||
}else{
|
}else{
|
||||||
target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> e.checkTarget(collidesAir, collidesGround) && !b.hasCollided(e.id), t -> collidesGround && !b.hasCollided(t.id));
|
target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> e.checkTarget(collidesAir, collidesGround) && !b.hasCollided(e.id), t -> collidesGround && !b.hasCollided(t.id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1293,8 +1293,19 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Called right before this building is picked up. */
|
||||||
public void pickedUp(){
|
public void pickedUp(){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called right after this building is picked up. */
|
||||||
|
public void afterPickedUp(){
|
||||||
|
if(power != null){
|
||||||
|
power.graph = new PowerGraph();
|
||||||
|
power.links.clear();
|
||||||
|
power.status = 0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFromProximity(){
|
public void removeFromProximity(){
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
|
|||||||
void pickup(Building tile){
|
void pickup(Building tile){
|
||||||
tile.pickedUp();
|
tile.pickedUp();
|
||||||
tile.tile.remove();
|
tile.tile.remove();
|
||||||
tile.tile = Vars.emptyTile;
|
tile.afterPickedUp();
|
||||||
addPayload(new BuildPayload(tile));
|
addPayload(new BuildPayload(tile));
|
||||||
Fx.unitPickup.at(tile);
|
Fx.unitPickup.at(tile);
|
||||||
Events.fire(new PickupEvent(self(), tile));
|
Events.fire(new PickupEvent(self(), tile));
|
||||||
|
|||||||
@@ -480,7 +480,19 @@ public class EventType{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Called after connecting; when a player receives world data and is ready to play.*/
|
/**
|
||||||
|
* Called after player confirmed it has received world data and is ready to play.
|
||||||
|
* Note that if this is the first world receival, then player.con.hasConnected is false.
|
||||||
|
*/
|
||||||
|
public static class PlayerConnectionConfirmed{
|
||||||
|
public final Player player;
|
||||||
|
|
||||||
|
public PlayerConnectionConfirmed(Player player){
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called after connecting; when a player receives world data and is ready to play. Fired only once, after initial connection. */
|
||||||
public static class PlayerJoin{
|
public static class PlayerJoin{
|
||||||
public final Player player;
|
public final Player player;
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class Layer{
|
|||||||
//flying units
|
//flying units
|
||||||
flyingUnit = 115,
|
flyingUnit = 115,
|
||||||
|
|
||||||
//overlaied UI, like block config guides
|
//overlaid UI, like block config guides
|
||||||
overlayUI = 120,
|
overlayUI = 120,
|
||||||
|
|
||||||
//build beam effects
|
//build beam effects
|
||||||
|
|||||||
@@ -696,9 +696,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
//flip rotation
|
//flip rotation
|
||||||
if(x == (req.rotation % 2 == 0)){
|
req.block.flipRotation(req, x);
|
||||||
req.rotation = Mathf.mod(req.rotation + 2, 4);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1113,7 +1111,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Building build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y);
|
Building build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y);
|
||||||
if(build instanceof ControlBlock cont && cont.canControl() && build.team == player.team()){
|
if(build instanceof ControlBlock cont && cont.canControl() && build.team == player.team() && cont.unit() != player.unit()){
|
||||||
return cont.unit();
|
return cont.unit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import mindustry.content.*;
|
|||||||
import mindustry.content.TechTree.*;
|
import mindustry.content.TechTree.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
|
import mindustry.entities.Units.*;
|
||||||
import mindustry.entities.abilities.*;
|
import mindustry.entities.abilities.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.entities.effect.*;
|
import mindustry.entities.effect.*;
|
||||||
@@ -61,6 +62,7 @@ public class ContentParser{
|
|||||||
readFields(result, data);
|
readFields(result, data);
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
|
put(Sortf.class, (type, data) -> field(UnitSorts.class, data));
|
||||||
put(Interp.class, (type, data) -> field(Interp.class, data));
|
put(Interp.class, (type, data) -> field(Interp.class, data));
|
||||||
put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data));
|
put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data));
|
||||||
put(Attribute.class, (type, data) -> Attribute.get(data.asString()));
|
put(Attribute.class, (type, data) -> Attribute.get(data.asString()));
|
||||||
@@ -196,6 +198,18 @@ public class ContentParser{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//try to parse env bits
|
||||||
|
if((type == int.class || type == Integer.class) && jsonData.isArray()){
|
||||||
|
int value = 0;
|
||||||
|
for(var str : jsonData){
|
||||||
|
if(!str.isString()) throw new SerializationException("Integer bitfield values must all be strings. Found: " + str);
|
||||||
|
String field = str.asString();
|
||||||
|
value |= Reflect.<Integer>get(Env.class, field);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (T)(Integer)value;
|
||||||
|
}
|
||||||
|
|
||||||
//try to parse "item/amount" syntax
|
//try to parse "item/amount" syntax
|
||||||
if(type == ItemStack.class && jsonData.isString() && jsonData.asString().contains("/")){
|
if(type == ItemStack.class && jsonData.isString() && jsonData.asString().contains("/")){
|
||||||
String[] split = jsonData.asString().split("/");
|
String[] split = jsonData.asString().split("/");
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.util.*;
|
|||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
|
import mindustry.mod.Mods.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.text.*;
|
import java.text.*;
|
||||||
@@ -27,7 +28,7 @@ public class CrashSender{
|
|||||||
+ "Version: " + Version.combined() + (Vars.headless ? " (Server)" : "") + "\n"
|
+ "Version: " + Version.combined() + (Vars.headless ? " (Server)" : "") + "\n"
|
||||||
+ "OS: " + OS.osName + " x" + (OS.osArchBits) + " (" + OS.osArch + ")\n"
|
+ "OS: " + OS.osName + " x" + (OS.osArchBits) + " (" + OS.osArch + ")\n"
|
||||||
+ "Java Version: " + OS.javaVersion + "\n"
|
+ "Java Version: " + OS.javaVersion + "\n"
|
||||||
+ (mods == null ? "<no mod init>" : mods.list().size + " Mods" + (mods.list().isEmpty() ? "" : ": " + mods.list().toString(", ", mod -> mod.name + ":" + mod.meta.version)))
|
+ (mods == null ? "<no mod init>" : "Mods: " + (!mods.list().contains(LoadedMod::shouldBeEnabled) ? "none (vanilla)" : mods.list().select(LoadedMod::shouldBeEnabled).toString(", ", mod -> mod.name + ":" + mod.meta.version)))
|
||||||
+ "\n\n" + error;
|
+ "\n\n" + error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,8 +141,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
public TextureRegion[] wreckRegions;
|
public TextureRegion[] wreckRegions;
|
||||||
|
|
||||||
protected float buildTime = -1f;
|
protected float buildTime = -1f;
|
||||||
protected @Nullable ItemStack[] cachedRequirements;
|
protected @Nullable ItemStack[] totalRequirements, cachedRequirements, firstRequirements;
|
||||||
protected @Nullable ItemStack[] totalRequirements;
|
|
||||||
|
|
||||||
public UnitType(String name){
|
public UnitType(String name){
|
||||||
super(name);
|
super(name);
|
||||||
@@ -307,6 +306,12 @@ public class UnitType extends UnlockableContent{
|
|||||||
stats.add(Stat.payloadCapacity, (payloadCapacity / (tilesize * tilesize)), StatUnit.blocksSquared);
|
stats.add(Stat.payloadCapacity, (payloadCapacity / (tilesize * tilesize)), StatUnit.blocksSquared);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var reqs = getFirstRequirements();
|
||||||
|
|
||||||
|
if(reqs != null){
|
||||||
|
stats.add(Stat.buildCost, StatValues.items(reqs));
|
||||||
|
}
|
||||||
|
|
||||||
if(weapons.any()){
|
if(weapons.any()){
|
||||||
stats.add(Stat.weapons, StatValues.weapons(this, weapons));
|
stats.add(Stat.weapons, StatValues.weapons(this, weapons));
|
||||||
}
|
}
|
||||||
@@ -547,6 +552,13 @@ public class UnitType extends UnlockableContent{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public @Nullable ItemStack[] getFirstRequirements(){
|
||||||
|
if(firstRequirements == null){
|
||||||
|
firstRequirements = getRequirements(null, null);
|
||||||
|
}
|
||||||
|
return firstRequirements;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack[] researchRequirements(){
|
public ItemStack[] researchRequirements(){
|
||||||
if(cachedRequirements != null){
|
if(cachedRequirements != null){
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ public class Weapon implements Cloneable{
|
|||||||
public boolean parentizeEffects;
|
public boolean parentizeEffects;
|
||||||
/** internal value used for alternation - do not change! */
|
/** internal value used for alternation - do not change! */
|
||||||
public int otherSide = -1;
|
public int otherSide = -1;
|
||||||
|
/** draw Z offset relative to the default value */
|
||||||
|
public float layerOffset = 0f;
|
||||||
/** sound used for shooting */
|
/** sound used for shooting */
|
||||||
public Sound shootSound = Sounds.pew;
|
public Sound shootSound = Sounds.pew;
|
||||||
/** sound used for weapons that have a delay */
|
/** sound used for weapons that have a delay */
|
||||||
@@ -161,6 +163,10 @@ public class Weapon implements Cloneable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void draw(Unit unit, WeaponMount mount){
|
public void draw(Unit unit, WeaponMount mount){
|
||||||
|
//apply layer offset, roll it back at the end
|
||||||
|
float z = Draw.z();
|
||||||
|
Draw.z(z + layerOffset);
|
||||||
|
|
||||||
float
|
float
|
||||||
rotation = unit.rotation - 90,
|
rotation = unit.rotation - 90,
|
||||||
weaponRotation = rotation + (rotate ? mount.rotation : 0),
|
weaponRotation = rotation + (rotate ? mount.rotation : 0),
|
||||||
@@ -171,12 +177,8 @@ public class Weapon implements Cloneable{
|
|||||||
Drawf.shadow(wx, wy, shadow);
|
Drawf.shadow(wx, wy, shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(outlineRegion.found() && top){
|
if(top){
|
||||||
Draw.rect(outlineRegion,
|
drawOutline(unit, mount);
|
||||||
wx, wy,
|
|
||||||
outlineRegion.width * Draw.scl * -Mathf.sign(flipSprite),
|
|
||||||
region.height * Draw.scl,
|
|
||||||
weaponRotation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.rect(region,
|
Draw.rect(region,
|
||||||
@@ -196,6 +198,8 @@ public class Weapon implements Cloneable{
|
|||||||
Draw.blend();
|
Draw.blend();
|
||||||
Draw.color();
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Draw.z(z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(Unit unit, WeaponMount mount){
|
public void update(Unit unit, WeaponMount mount){
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ public class Menus{
|
|||||||
|
|
||||||
@Remote(targets = Loc.both, called = Loc.both)
|
@Remote(targets = Loc.both, called = Loc.both)
|
||||||
public static void menuChoose(@Nullable Player player, int menuId, int option){
|
public static void menuChoose(@Nullable Player player, int menuId, int option){
|
||||||
if(player != null && menuId >= 0 && menuId < menuListeners.size){
|
if(player != null){
|
||||||
Events.fire(new MenuOptionChooseEvent(player, menuId, option));
|
Events.fire(new MenuOptionChooseEvent(player, menuId, option));
|
||||||
menuListeners.get(menuId).get(player, option);
|
if(menuId >= 0 && menuId < menuListeners.size){
|
||||||
|
menuListeners.get(menuId).get(player, option);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -257,6 +257,12 @@ public class ChatFragment extends Table{
|
|||||||
return shown;
|
return shown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @deprecated prefixes are ignored now, just add raw messages */
|
||||||
|
@Deprecated
|
||||||
|
public void addMessage(String pointless, String message){
|
||||||
|
addMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
public void addMessage(String message){
|
public void addMessage(String message){
|
||||||
if(message == null) return;
|
if(message == null) return;
|
||||||
messages.insert(0, message);
|
messages.insert(0, message);
|
||||||
|
|||||||
@@ -989,4 +989,9 @@ public class Block extends UnlockableContent{
|
|||||||
packer.add(PageType.editor, name + "-icon-editor", editorBase);
|
packer.add(PageType.editor, name + "-icon-editor", editorBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void flipRotation(BuildPlan req, boolean x){
|
||||||
|
if(x == (req.rotation % 2 == 0)){
|
||||||
|
req.rotation = Mathf.mod(req.rotation + 2, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,12 @@ public class ForceProjector extends Block{
|
|||||||
super.onRemoved();
|
super.onRemoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pickedUp(){
|
||||||
|
super.pickedUp();
|
||||||
|
radscl = warmup = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
boolean phaseValid = consumes.get(ConsumeType.item).valid(this);
|
boolean phaseValid = consumes.get(ConsumeType.item).valid(this);
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public class Turret extends ReloadTurret{
|
|||||||
public Effect chargeBeginEffect = Fx.none;
|
public Effect chargeBeginEffect = Fx.none;
|
||||||
public Sound chargeSound = Sounds.none;
|
public Sound chargeSound = Sounds.none;
|
||||||
|
|
||||||
public Sortf unitSort = Unit::dst2;
|
public Sortf unitSort = UnitSorts.closest;
|
||||||
|
|
||||||
protected Vec2 tr = new Vec2();
|
protected Vec2 tr = new Vec2();
|
||||||
protected Vec2 tr2 = new Vec2();
|
protected Vec2 tr2 = new Vec2();
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public class BuildPayload implements Payload{
|
|||||||
public void update(boolean inUnit){
|
public void update(boolean inUnit){
|
||||||
if(inUnit && !build.block.updateInUnits) return;
|
if(inUnit && !build.block.updateInUnits) return;
|
||||||
|
|
||||||
if(build.tile == null) build.tile = emptyTile;
|
build.tile = emptyTile;
|
||||||
build.update();
|
build.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,9 +91,11 @@ public class BuildPayload implements Payload{
|
|||||||
public void draw(){
|
public void draw(){
|
||||||
drawShadow(1f);
|
drawShadow(1f);
|
||||||
float prevZ = Draw.z();
|
float prevZ = Draw.z();
|
||||||
Draw.zTransform(z -> 0.0011f + Mathf.clamp(z, prevZ - 0.001f, prevZ + 0.9f));
|
Draw.zTransform(z -> z >= Layer.flyingUnitLow ? z : 0.0011f + Mathf.clamp(z, prevZ - 0.001f, prevZ + 0.9f));
|
||||||
|
build.tile = emptyTile;
|
||||||
build.payloadDraw();
|
build.payloadDraw();
|
||||||
Draw.zTransform();
|
Draw.zTransform();
|
||||||
|
Draw.z(prevZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -160,8 +160,8 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
public boolean shouldExport(){
|
public boolean shouldExport(){
|
||||||
return payload != null && (
|
return payload != null && (
|
||||||
exporting ||
|
exporting ||
|
||||||
(payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
(payload.block().hasLiquids && liquids.total() >= 0.1f && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
||||||
(payload.block().hasItems && payload.block().separateItemCapacity && content.items().contains(i -> payload.build.items.get(i) >= payload.block().itemCapacity)));
|
(payload.block().hasItems && items.any() && payload.block().separateItemCapacity && content.items().contains(i -> payload.build.items.get(i) >= payload.block().itemCapacity)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -85,8 +85,9 @@ public class Unloader extends Block{
|
|||||||
if(sortItem != null){
|
if(sortItem != null){
|
||||||
item = sortItem;
|
item = sortItem;
|
||||||
|
|
||||||
for(int pos = 0; pos < proximity.size; pos++){
|
for(int j = 0; j < proximity.size; j++){
|
||||||
var other = proximity.get(pos);
|
int pos = (offset + j) % proximity.size;
|
||||||
|
var other = proximity.get(j);
|
||||||
boolean interactable = other.interactable(team);
|
boolean interactable = other.interactable(team);
|
||||||
|
|
||||||
//set the stats of all buildings in possibleBlocks
|
//set the stats of all buildings in possibleBlocks
|
||||||
@@ -105,8 +106,9 @@ public class Unloader extends Block{
|
|||||||
boolean isDistinct = false;
|
boolean isDistinct = false;
|
||||||
Item possibleItem = content.item(total);
|
Item possibleItem = content.item(total);
|
||||||
|
|
||||||
for(int pos = 0; pos < proximity.size; pos++){
|
for(int j = 0; j < proximity.size; j++){
|
||||||
var other = proximity.get(pos);
|
int pos = (offset + j) % proximity.size;
|
||||||
|
var other = proximity.get(j);
|
||||||
boolean interactable = other.interactable(team);
|
boolean interactable = other.interactable(team);
|
||||||
|
|
||||||
//set the stats of all buildings in possibleBlocks while we are at it
|
//set the stats of all buildings in possibleBlocks while we are at it
|
||||||
|
|||||||
@@ -24,4 +24,4 @@ android.useAndroidX=true
|
|||||||
#used for slow jitpack builds; TODO see if this actually works
|
#used for slow jitpack builds; TODO see if this actually works
|
||||||
org.gradle.internal.http.socketTimeout=100000
|
org.gradle.internal.http.socketTimeout=100000
|
||||||
org.gradle.internal.http.connectionTimeout=100000
|
org.gradle.internal.http.connectionTimeout=100000
|
||||||
archash=026c9216c893c9b768748cc63b4c2b8c3739f892
|
archash=f1b1c17bf6385b607dad4af3c51ad88646c9e9ca
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "Mindustry Central",
|
||||||
|
"address": ["n2.mindustry.me:4019", "mindustry.me:2034", "mindustry.me:2035"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "RCM",
|
"name": "RCM",
|
||||||
"address": ["185.104.248.61", "easyplay.su"]
|
"address": ["185.104.248.61", "easyplay.su"]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Español",
|
"name": "Mindustry Central",
|
||||||
"address": ["n2.mindustry.me:4019", "mindustry.me:2034", "mindustry.me:2035"]
|
"address": ["n2.mindustry.me:4019", "mindustry.me:2034", "mindustry.me:2035"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "MindustryBR",
|
"name": "MindustryBR",
|
||||||
"address": ["n2.mindustry.me:4003", "n2.mindustry.me:4005", "n2.mindustry.me:4008", "n2.mindustry.me:4009", "n2.mindustry.me:4010"]
|
"address": ["n2.mindustry.me:4003", "n2.mindustry.me:4005", "n2.mindustry.me:4008", "panel.mindustry.me:2005", "n2.mindustry.me:4010"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "LostDustry",
|
"name": "LostDustry",
|
||||||
|
|||||||
Reference in New Issue
Block a user