Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d0b02ee23 | ||
|
|
d7cfbfe6c8 | ||
|
|
dc00e22f13 | ||
|
|
bcde481304 | ||
|
|
5b1341e488 | ||
|
|
6ad70ceee3 | ||
|
|
9c4d2f5490 | ||
|
|
6c5eff1143 | ||
|
|
a893767d0f | ||
|
|
a4f240edc8 | ||
|
|
e0a94f694b | ||
|
|
8654f25a4f | ||
|
|
e877310d85 | ||
|
|
bb59f45ba6 | ||
|
|
3d4c2a2c20 | ||
|
|
e36667cd08 | ||
|
|
cebaa6949e | ||
|
|
019e22aff2 | ||
|
|
5129e2ea73 | ||
|
|
3b63f60462 | ||
|
|
5e29115c2e | ||
|
|
0b4b30286d | ||
|
|
a01f64080d | ||
|
|
d031351bc8 | ||
|
|
1d21d36253 | ||
|
|
8d4cd72b41 |
@@ -26,7 +26,7 @@ allprojects {
|
|||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
gdxVersion = '1.9.8'
|
gdxVersion = '1.9.8'
|
||||||
roboVMVersion = '2.3.0'
|
roboVMVersion = '2.3.0'
|
||||||
uCoreVersion = '06b465e3385ded22d84f42cb09554352a1d3ad6c'
|
uCoreVersion = '64ec4a15148b27749ca7b505dea9743add9902f2'
|
||||||
|
|
||||||
getVersionString = {
|
getVersionString = {
|
||||||
String buildVersion = getBuildVersion()
|
String buildVersion = getBuildVersion()
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 183 B |
Binary file not shown.
|
Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 239 B |
@@ -361,6 +361,8 @@ category.general.name=General
|
|||||||
category.view.name=View
|
category.view.name=View
|
||||||
category.multiplayer.name=Multiplayer
|
category.multiplayer.name=Multiplayer
|
||||||
|
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
keybind.move_x.name=Move x
|
keybind.move_x.name=Move x
|
||||||
keybind.move_y.name=Move y
|
keybind.move_y.name=Move y
|
||||||
keybind.select.name=Select/Shoot
|
keybind.select.name=Select/Shoot
|
||||||
@@ -607,7 +609,7 @@ block.thermal-pump.name=Thermal Pump
|
|||||||
block.dagger-pad.name=Dagger Pad
|
block.dagger-pad.name=Dagger Pad
|
||||||
block.titan-pad.name=Titan Pad
|
block.titan-pad.name=Titan Pad
|
||||||
block.thermal-generator.name=Thermal Generator
|
block.thermal-generator.name=Thermal Generator
|
||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smelter
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
block.surge-wall.name=Surge Wall
|
block.surge-wall.name=Surge Wall
|
||||||
block.surge-wall-large.name=Large Surge Wall
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
|||||||
@@ -204,7 +204,6 @@ text.maps.none=[LIGHT_GRAY]No maps found!
|
|||||||
text.unlocked=New Block Unlocked!
|
text.unlocked=New Block Unlocked!
|
||||||
text.unlocked.plural=New Blocks Unlocked!
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
text.server.closing=[accent]Closing server...
|
text.server.closing=[accent]Closing server...
|
||||||
text.server.kicked.fastShoot=You are shooting too quickly.
|
|
||||||
text.server.kicked.clientOutdated=Outdated client! Update your game!
|
text.server.kicked.clientOutdated=Outdated client! Update your game!
|
||||||
text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
|
text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
|
||||||
text.server.kicked.banned=You are banned on this server.
|
text.server.kicked.banned=You are banned on this server.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ text.players.single={0} jugador online
|
|||||||
text.server.mismatch=Error de paquete: posiblemente versión incompatible de cliente/servidor.\n¡Asegurate de que tu y el anfitrión tengan\nla última versión de Mindustry!
|
text.server.mismatch=Error de paquete: posiblemente versión incompatible de cliente/servidor.\n¡Asegurate de que tu y el anfitrión tengan\nla última versión de Mindustry!
|
||||||
text.server.closing=[accent]Cerrando servidor...
|
text.server.closing=[accent]Cerrando servidor...
|
||||||
text.server.kicked.kick=¡Has sido kickeado del servidor!
|
text.server.kicked.kick=¡Has sido kickeado del servidor!
|
||||||
text.server.kicked.fastShoot=Estás disparando demasiado rápido.
|
|
||||||
text.server.kicked.serverClose=El servidor ha cerrado.
|
text.server.kicked.serverClose=El servidor ha cerrado.
|
||||||
text.server.kicked.sectorComplete=Sector completado.
|
text.server.kicked.sectorComplete=Sector completado.
|
||||||
text.server.kicked.sectorComplete.text=Tu misión ha sido completada.\nEl servidor ahora continuara con el próximo sector.
|
text.server.kicked.sectorComplete.text=Tu misión ha sido completada.\nEl servidor ahora continuara con el próximo sector.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -244,7 +244,6 @@ text.maps=Cartes
|
|||||||
text.maps.none=[LIGHT_GRAY]Aucune carte trouvée!
|
text.maps.none=[LIGHT_GRAY]Aucune carte trouvée!
|
||||||
text.unlocked=Nouveau bloc debloqué!
|
text.unlocked=Nouveau bloc debloqué!
|
||||||
text.unlocked.plural=Nouveaux blocs débloqués!
|
text.unlocked.plural=Nouveaux blocs débloqués!
|
||||||
text.server.kicked.fastShoot=Vous tirez trop vite.
|
|
||||||
text.server.kicked.recentKick=Vous avez été expulsé récemment.\nAttendez avant de vous connecter à nouveau.
|
text.server.kicked.recentKick=Vous avez été expulsé récemment.\nAttendez avant de vous connecter à nouveau.
|
||||||
text.server.kicked.nameInUse=Il y a déjà quelqu'un avec ce nom\nsur ce serveur.
|
text.server.kicked.nameInUse=Il y a déjà quelqu'un avec ce nom\nsur ce serveur.
|
||||||
text.server.kicked.nameEmpty=Votre nom doit contenir au moins une lettre ou un chiffere.
|
text.server.kicked.nameEmpty=Votre nom doit contenir au moins une lettre ou un chiffere.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -211,7 +211,6 @@ text.maps=Maps
|
|||||||
text.maps.none=[LIGHT_GRAY]No maps found!
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
text.unlocked=New Block Unlocked!
|
text.unlocked=New Block Unlocked!
|
||||||
text.unlocked.plural=New Blocks Unlocked!
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
text.server.kicked.fastShoot=You are shooting too quickly.
|
|
||||||
text.server.kicked.banned=You are banned on this server.
|
text.server.kicked.banned=You are banned on this server.
|
||||||
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -265,7 +265,6 @@ text.maps=Mappe
|
|||||||
text.maps.none=[LIGHT_GRAY]Nessuna mappa trovata!
|
text.maps.none=[LIGHT_GRAY]Nessuna mappa trovata!
|
||||||
text.unlocked=Nuovo blocco scoperto!
|
text.unlocked=Nuovo blocco scoperto!
|
||||||
text.unlocked.plural=Nuovi blocchi scoperti!
|
text.unlocked.plural=Nuovi blocchi scoperti!
|
||||||
text.server.kicked.fastShoot=Stai sparando troppo velocemente.
|
|
||||||
text.server.kicked.nameInUse=C'è già qualcuno con il tuo nome\nsu questo server.
|
text.server.kicked.nameInUse=C'è già qualcuno con il tuo nome\nsu questo server.
|
||||||
text.server.kicked.nameEmpty=Il tuo nome deve contenere almeno un carattere.
|
text.server.kicked.nameEmpty=Il tuo nome deve contenere almeno un carattere.
|
||||||
text.server.kicked.idInUse=Sei già su questo server! Non è permesso connettersi con due account.
|
text.server.kicked.idInUse=Sei già su questo server! Non è permesso connettersi con due account.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Reattore al torio
|
|||||||
block.alloy-smelter.name=Altoforno
|
block.alloy-smelter.name=Altoforno
|
||||||
block.mend-projector.name=Riparatore
|
block.mend-projector.name=Riparatore
|
||||||
unit.alpha-drone.name=Drone Alpha
|
unit.alpha-drone.name=Drone Alpha
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ text.players.single=현재 {0}명만 있음.
|
|||||||
text.server.mismatch=클라이언트와 서버 버전이 일치하지 않습니다. 자신이 서버를 호스트하거나 최신 버전을 사용 해 주세요!
|
text.server.mismatch=클라이언트와 서버 버전이 일치하지 않습니다. 자신이 서버를 호스트하거나 최신 버전을 사용 해 주세요!
|
||||||
text.server.closing=[accent]서버 닫는중...
|
text.server.closing=[accent]서버 닫는중...
|
||||||
text.server.kicked.kick=당신은 서버에서 추방되었습니다!
|
text.server.kicked.kick=당신은 서버에서 추방되었습니다!
|
||||||
text.server.kicked.fastShoot=당신은 총을 너무 빨리 발사했습니다.
|
|
||||||
text.server.kicked.clientOutdated=오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요!
|
text.server.kicked.clientOutdated=오래된 버전의 클라이언트 입니다! 게임을 업데이트 하세요!
|
||||||
text.server.kicked.serverOutdated=오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요!
|
text.server.kicked.serverOutdated=오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요!
|
||||||
text.server.kicked.banned=당신은 서버에서 밴 망치를 맞아 차단당했습니다.
|
text.server.kicked.banned=당신은 서버에서 밴 망치를 맞아 차단당했습니다.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -210,7 +210,6 @@ text.maps=Mapy
|
|||||||
text.maps.none=[LIGHT_GRAY]Nie znalesiono żadnych map!
|
text.maps.none=[LIGHT_GRAY]Nie znalesiono żadnych map!
|
||||||
text.unlocked=Odblokowano nowy blok!
|
text.unlocked=Odblokowano nowy blok!
|
||||||
text.unlocked.plural=Odblokowano nowe bloki!
|
text.unlocked.plural=Odblokowano nowe bloki!
|
||||||
text.server.kicked.fastShoot=Strzelasz zbyt szybko.
|
|
||||||
text.server.kicked.banned=Zostałeś zbanowany na tym serwerze.
|
text.server.kicked.banned=Zostałeś zbanowany na tym serwerze.
|
||||||
text.server.kicked.recentKick=Zostałeś niedawno wyrzucony.\nPoczekaj chwilę przed ponownym połączniem.
|
text.server.kicked.recentKick=Zostałeś niedawno wyrzucony.\nPoczekaj chwilę przed ponownym połączniem.
|
||||||
text.server.kicked.nameInUse=Ta nazwa jest już zajęta na tym serwerze.
|
text.server.kicked.nameInUse=Ta nazwa jest już zajęta na tym serwerze.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -161,7 +161,6 @@ text.players.single={0} Jogador Ativo
|
|||||||
text.server.mismatch=Packet error: Versão do Cliente/Servidor Incompativel.\nTenha certeza Que Host tem\nA ultima versão de Mindustry!
|
text.server.mismatch=Packet error: Versão do Cliente/Servidor Incompativel.\nTenha certeza Que Host tem\nA ultima versão de Mindustry!
|
||||||
text.server.closing=[accent]Fechando servidor...
|
text.server.closing=[accent]Fechando servidor...
|
||||||
text.server.kicked.kick=Voce foi expulso do servidor!
|
text.server.kicked.kick=Voce foi expulso do servidor!
|
||||||
text.server.kicked.fastShoot=Voce esta atirando rapido demais.
|
|
||||||
text.server.kicked.clientOutdated=Cliente desatualizado! Atualize seu jogo!
|
text.server.kicked.clientOutdated=Cliente desatualizado! Atualize seu jogo!
|
||||||
text.server.kicked.serverOutdated=Servidor desatualiado! Peca ao dono para atualizar!
|
text.server.kicked.serverOutdated=Servidor desatualiado! Peca ao dono para atualizar!
|
||||||
text.server.kicked.banned=Voce foi banido do servidor.
|
text.server.kicked.banned=Voce foi banido do servidor.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -341,6 +341,8 @@ text.keybind.title=Переназначение клавиш
|
|||||||
category.general.name=Основное
|
category.general.name=Основное
|
||||||
category.view.name=Просмотр
|
category.view.name=Просмотр
|
||||||
category.multiplayer.name=Мультиплеер
|
category.multiplayer.name=Мультиплеер
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
keybind.move_x.name=Движение по x
|
keybind.move_x.name=Движение по x
|
||||||
keybind.move_y.name=Движение по y
|
keybind.move_y.name=Движение по y
|
||||||
keybind.select.name=Выбор/Выстрел
|
keybind.select.name=Выбор/Выстрел
|
||||||
|
|||||||
@@ -256,7 +256,6 @@ text.maps=Maps
|
|||||||
text.maps.none=[LIGHT_GRAY]No maps found!
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
text.unlocked=New Block Unlocked!
|
text.unlocked=New Block Unlocked!
|
||||||
text.unlocked.plural=New Blocks Unlocked!
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
text.server.kicked.fastShoot=You are shooting too quickly.
|
|
||||||
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
629
core/assets/bundles/bundle_tr.properties
Normal file
629
core/assets/bundles/bundle_tr.properties
Normal file
@@ -0,0 +1,629 @@
|
|||||||
|
text.credits.text=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY](In case you can't tell, this text is currently unfinished.\nTranslators, don't edit it yet!)
|
||||||
|
text.credits=Emegi gecenler
|
||||||
|
text.discord=Mindustry'in Discord'una katilin!
|
||||||
|
text.link.discord.description=Orjinal Mindustry'in Discord Konusma Odasi
|
||||||
|
text.link.github.description=Oyunun Kodu
|
||||||
|
text.link.dev-builds.description=Bitirilmemis Yapim Surumu
|
||||||
|
text.link.trello.description=Planlanmis Hersey icin Tablo
|
||||||
|
text.link.itch.io.description=Bilgisayar ve Site versiyonunun bulundugu Site
|
||||||
|
text.link.google-play.description=Google Play magaza sayfasi
|
||||||
|
text.link.wiki.description=Orjinal Mindustry Bilgilendirme Sayfasi
|
||||||
|
text.linkfail=Link Acilamadi!\nLink sizin icin kopyalandi.
|
||||||
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
|
text.web.unsupported=Site versiyonu bunu desteklemiyor! Bilgisayar versiyonunu indirmeniz gerek.
|
||||||
|
text.gameover=Cekirdegin yok edildi.
|
||||||
|
text.sector.gameover=Sektor kaybedildi. Geri gitmek ister misin?
|
||||||
|
text.sector.retry=Gene dene
|
||||||
|
text.highscore=[accent]Yeni Yuksek skor!
|
||||||
|
text.wave.lasted=Su dalgaya kadar dayandin: [accent]{0}[].
|
||||||
|
text.level.highscore=Yuksek Skor: [accent]{0}
|
||||||
|
text.level.delete.title=Silmeyi onayla
|
||||||
|
text.map.delete=Su haritayi silmek istediginden emin misin? "[orange]{0}[]"?
|
||||||
|
text.level.select=Seviye secimi
|
||||||
|
text.level.mode=Oyun Modu:
|
||||||
|
text.construction.desktop=Bilgisayar kontrolleri degisti.\nEsyayi secmeyi birakmak istiyorsan [accent]bosluga bas[].
|
||||||
|
text.construction.title=Esya Insaat Egitimi
|
||||||
|
text.construction=\
|
||||||
|
Sen su anda [accent]insaat moduna[]girdin.\n\n\
|
||||||
|
Yerlestirbeye baslamadan once, kendine bos ve gecerli bir arazi sec ve tikla\n\
|
||||||
|
Biraz Yapi yerlestirdikten sonra, onaylamak icin tikla,, ve geminle beraber yapmaya baslayacaksin.\n\
|
||||||
|
\n\
|
||||||
|
- [accent]Yapi secimini kaldirmak[] icin yandan uzerlerine tikla.\n\
|
||||||
|
- [accent]Yapi yonunu degistimek[] icin farenin tekerlegini kullan \n\
|
||||||
|
- [accent]Cizgi biciminde Yapi yerlestirmek[] icin bos bir yete tikla ve surukle\n\
|
||||||
|
- [accent]Yapi yapmayi iptal etmek icin[] kosedeki X tusuna bas
|
||||||
|
text.deconstruction.title=Yapi yikma egitimi
|
||||||
|
text.deconstruction=\
|
||||||
|
Daha demin sen[accent]Yapi yikmak icin yikma moduna girdin..[].\n\n\
|
||||||
|
kirmak icin, unitinin cevresindeki bir yapiya/yapilara tikla.\n\
|
||||||
|
isin bitince, tamamlama tusuna tikla ve gemin onlari lirbaya basliyacak\n\
|
||||||
|
\n\
|
||||||
|
- [accent]Yapi yikmak [] icin uzerlerine tikla.\n\
|
||||||
|
- [accent]bir arazideki yapilari yikmak[] icin bir arazi sec ve tamamlama tusuna bas\n\
|
||||||
|
- [accent]yikma modundan cikmak[] icin kosedeki X tusuna bas
|
||||||
|
text.showagain=Don't show again next session
|
||||||
|
text.coreattack=< Cekirdek Saldiri altinda! >
|
||||||
|
text.unlocks=Oduller
|
||||||
|
text.savegame=Oyunu kaydet
|
||||||
|
text.loadgame=Devam et
|
||||||
|
text.joingame=Oyuna katil
|
||||||
|
text.addplayers=Oyuncu ekle/cikar
|
||||||
|
text.customgame=Ozel oyun
|
||||||
|
text.sectors=Sektorler
|
||||||
|
text.sector=Sector: [LIGHT_GRAY]{0}
|
||||||
|
text.sector.time=Time: [LIGHT_GRAY]{0}
|
||||||
|
text.sector.deploy=Yukle
|
||||||
|
text.sector.resume=Devam et
|
||||||
|
text.sector.locked=[scarlet][[Incomplete]
|
||||||
|
text.sector.unexplored=[accent][[Unexplored]
|
||||||
|
text.mission=Mission:[LIGHT_GRAY] {0}
|
||||||
|
text.mission.complete=Gorev tamamlandi!
|
||||||
|
text.mission.complete.body=Sektor {0},{1} ele gecirildi
|
||||||
|
text.mission.wave= [accent]{0}[] Dalga hayatta kal
|
||||||
|
text.mission.battle=Dusmanin cekirdegini yok et
|
||||||
|
text.mission.resource= {0} x{1} Kazan
|
||||||
|
text.none=<none>
|
||||||
|
text.close=Kapat
|
||||||
|
text.quit=Cik
|
||||||
|
text.maps=Haritalar
|
||||||
|
text.continue=Devam et
|
||||||
|
text.nextmission=Yeni gorev
|
||||||
|
text.maps.none=[LIGHT_GRAY]Harita bulunamadi!
|
||||||
|
text.about.button=Hakkinda
|
||||||
|
text.name=isim:
|
||||||
|
text.unlocked=Yeni yapi acildi!!
|
||||||
|
text.unlocked.plural=Yeni yapilar acildi!
|
||||||
|
text.players={0} oyuncu cevrimici
|
||||||
|
text.players.single={0} oyuncu cevrimici
|
||||||
|
text.server.mismatch=Bir Sorun olustu: Oyunun versiyonundan dolayi hata olustu.\nOyunun en son surumune sahip\nolduguna emin ol!
|
||||||
|
text.server.closing=[accent]Oyun kapaniyor.
|
||||||
|
text.server.kicked.kick=Oyundan cikarildin
|
||||||
|
text.server.kicked.serverClose=Oyun kapandi
|
||||||
|
text.server.kicked.sectorComplete=Sektor tamamlandi
|
||||||
|
text.server.kicked.sectorComplete.text=Gorev Tamamlandi.\nOyun siradaki sektorden devam edecek
|
||||||
|
text.server.kicked.clientOutdated=Yeni bir versiyon mevcut! Hemen indir!
|
||||||
|
text.server.kicked.serverOutdated=Eski oyun! Yapimciya guncellemesini soyle!
|
||||||
|
text.server.kicked.banned=Oyundan kalici olarak cikarildin.
|
||||||
|
text.server.kicked.recentKick=Oyundan cikarilmistin.\nBaglanmadn once biraz bekle.
|
||||||
|
text.server.kicked.nameInUse=Oyunda bu isimde bir\nkisi zaten var.
|
||||||
|
text.server.kicked.nameEmpty=ismin gecerli degil.
|
||||||
|
text.server.kicked.idInUse=Zaten oyundasin! iki ayri hesapla oyuna katilamazsin!
|
||||||
|
text.server.kicked.customClient=Bu oyun ayarlanmis vesiyonlara izin vermiyor. Orijinal bir versiyon dene!
|
||||||
|
text.host.info=[accent]host[] su linkte bir oyun acti! [scarlet]6567[]. \nSeninle [LIGHT_GRAY]ayni internete[] sahip olan kisiler oyunu gorebilir.\n\neger baska yerlerden kisilerind de gelmesini istiyorsan, [accent]oyun acmak[]zorunludur.\n\n[LIGHT_GRAY]Not: eger baglanmakta gucluk cekiliyorsa, antivirusunun internetine baglanmasini izin vermesini sagla.
|
||||||
|
text.join.info=Buradan,[accent]Oyunun linkini[] kullanarak katilabilir, yada, [accent]internetinle[] baglanacak oyun bulabilirsin\ninternetli ve Linkli oyunlar desteklenir.\n\n[LIGHT_GRAY]Not: Otomatik bir oyun listesi goruntulenemez. Yapimcidan linkini iste.
|
||||||
|
text.hostserver=Oyun ac
|
||||||
|
text.host=Oyun ac
|
||||||
|
text.hosting=[accent]Oyun aciliyor
|
||||||
|
text.hosts.refresh=Yenile
|
||||||
|
text.hosts.discovering=internet oyunu araniyor
|
||||||
|
text.server.refreshing=liste yenileniyor
|
||||||
|
text.hosts.none=[lightgray]internet oyunu bulunamadi!
|
||||||
|
text.host.invalid=[scarlet]Oyuna baglanilamadi.
|
||||||
|
text.trace=Oyuncu isaretle
|
||||||
|
text.trace.playername=Player name: [accent]{0}
|
||||||
|
text.trace.ip=IP: [accent]{0}
|
||||||
|
text.trace.id=Unik ID: [accent]{0}
|
||||||
|
text.trace.android=Android Kullanicisi: [accent]{0}
|
||||||
|
text.trace.modclient=Ozel islemci Kullanicisi: [accent]{0}
|
||||||
|
text.trace.totalblocksbroken=kirilan yapilar: [accent]{0}
|
||||||
|
text.trace.structureblocksbroken=kirilan esyalar: [accent]{0}
|
||||||
|
text.trace.lastblockbroken=Son kirilan yapilar: [accent]{0}
|
||||||
|
text.trace.totalblocksplaced=yerlestirilen yapilar: [accent]{0}
|
||||||
|
text.trace.lastblockplaced=son yerlestirilen yapilar: [accent]{0}
|
||||||
|
text.invalidid=Yanlis islemci Linki! Sorunu bildir
|
||||||
|
text.server.bans=Yasaklamalar
|
||||||
|
text.server.bans.none=Yasaklananlar bulunamadi!
|
||||||
|
text.server.admins=Yetkililer
|
||||||
|
text.server.admins.none=Yetkili bulunamadi!
|
||||||
|
text.server.add=Oyun ekle
|
||||||
|
text.server.delete=Oyunu silmek istedigine emin misin?
|
||||||
|
text.server.hostname=Oyun yarat: {0}
|
||||||
|
text.server.edit=Oyunu ayarla
|
||||||
|
text.server.outdated=[crimson]Eski Oyun![]
|
||||||
|
text.server.outdated.client=[crimson]eski islemci![]
|
||||||
|
text.server.version=[lightgray]Versiyon: {0}
|
||||||
|
text.server.custombuild=[yellow]ozel yapi
|
||||||
|
text.confirmban=Bu oyuncuyu kalici olarak atmak istedigine emin misin?
|
||||||
|
text.confirmunban=Bu oyuncunun yasagini geri almak ister misin?
|
||||||
|
text.confirmadmin=Bu oyuncuyu yetkili yapmak istedigine emin misin?
|
||||||
|
text.confirmunadmin=Bu oyuncunun yetkisini almak istedigine emin misin?
|
||||||
|
text.joingame.title=Oyuna katil
|
||||||
|
text.joingame.ip=Link:
|
||||||
|
text.disconnect=Cikildi
|
||||||
|
text.disconnect.data=Oyunun geri yuklenemedi!
|
||||||
|
text.connecting=[accent]Baglaniliyor
|
||||||
|
text.connecting.data=[accent]Loading world data...
|
||||||
|
text.connectfail=[crimson]Su Oyuna baglanilamadi: [orange]{0}
|
||||||
|
text.server.port=Link:
|
||||||
|
text.server.addressinuse=Addres zaten kullaniliyor!
|
||||||
|
text.server.invalidport=Geçersiz Oyun numarasi!
|
||||||
|
text.server.error=[crimson]Oyun acarkes sorun olustu: [orange]{0}
|
||||||
|
text.save.old=Bu oyun su anda kullanilamaz.\n\n[LIGHT_GRAY]geri alma oyunun 4.0 surumunde eklenecektir.
|
||||||
|
text.save.new=Yeni Kayit Dosyasi
|
||||||
|
text.save.overwrite=Bu oyunun uzerinden\ngecmek istedigine emin\nmisin?
|
||||||
|
text.overwrite=uzerinden gec
|
||||||
|
text.save.none=Kayitli oyun bulunamadi
|
||||||
|
text.saveload=[accent]Kaydediliyor...
|
||||||
|
text.savefail=Kaydedilemedi!
|
||||||
|
text.save.delete.confirm=Bu Kayiti silmek istedigine emin misin?
|
||||||
|
text.save.delete=Sil
|
||||||
|
text.save.export=Kayiti tasi
|
||||||
|
text.save.import.invalid=[orange]Kayit gecersiz!
|
||||||
|
text.save.import.fail=[crimson]Failed to import save: [orange]{0}
|
||||||
|
text.save.export.fail=[crimson]Failed to export save: [orange]{0}
|
||||||
|
text.save.import=Kayit al
|
||||||
|
text.save.newslot=Kayit ismi:
|
||||||
|
text.save.rename=Yeniden adlandir
|
||||||
|
text.save.rename.text=Yeni isim:
|
||||||
|
text.selectslot=Kayitli bir dosya sec.
|
||||||
|
text.slot=[accent]Slot {0}
|
||||||
|
text.save.corrupted=[orange]Kayit gecersiz!\nOyunu guncellediysen, bu buyuk ihtimalle degistirilecek vebu bir [scarlet]sorun degildir.[]
|
||||||
|
text.sector.corrupted=[orange]Yeni dosyalar bulundu, ama yuklenemedi.\nYeni bir tane yapildi.
|
||||||
|
text.on=Acik
|
||||||
|
text.off=Kapali
|
||||||
|
text.save.autosave=Otomatik kayit: {0}
|
||||||
|
text.save.map=Harita: {0}
|
||||||
|
text.save.wave=Dalga {0}
|
||||||
|
text.save.difficulty=Zorluk: {0}
|
||||||
|
text.save.date=En sonki kayit: {0}
|
||||||
|
text.save.playtime=Oyun Zamani!: {0}
|
||||||
|
text.confirm=Onayla
|
||||||
|
text.delete=Sil
|
||||||
|
text.ok=Tamam
|
||||||
|
text.open=Ac
|
||||||
|
text.cancel=iptal
|
||||||
|
text.openlink=Linki ac
|
||||||
|
text.copylink=Linki kopyala
|
||||||
|
text.back=Geri don
|
||||||
|
text.quit.confirm=Cikmak istedigine emin misin?
|
||||||
|
text.changelog.title=Degisimler
|
||||||
|
text.changelog.loading=Degisimler yukleniyor...
|
||||||
|
text.changelog.error.android=[orange]Not: Degisimler bazen androidde calismaz.\nBu bir degistirilemez sorundan kaynakli.
|
||||||
|
text.changelog.error.ios=[orange]Degisimler IOS'da su anda desteklenmiyor.
|
||||||
|
text.changelog.error=[scarlet]Degisimler alinamadi.\nInternet baglantini kontrol et
|
||||||
|
text.changelog.current=[yellow][[Current version]
|
||||||
|
text.changelog.latest=[orange][[Latest version]
|
||||||
|
text.loading=[accent]Yukleniyor...
|
||||||
|
text.saving=[accent]Kaydediliyor...
|
||||||
|
text.wave=[orange]Dalga {0}
|
||||||
|
text.wave.waiting=Dalganin baslamasina: {0}
|
||||||
|
text.waiting=Bekleniyor...
|
||||||
|
text.enemies={0} Dusman Kaldi
|
||||||
|
text.enemies.single={0} Dusman Kaldi
|
||||||
|
text.loadimage=Resimden Yukle
|
||||||
|
text.saveimage=Resimi kaydet
|
||||||
|
text.unknown=Bilinmeyen
|
||||||
|
text.custom=Ozel
|
||||||
|
text.builtin=Yapilandirilmis
|
||||||
|
text.map.delete.confirm=Haritayi silmek istedigine emin misin? Bu geri alinamaz!
|
||||||
|
text.map.random=[accent]Rasgele harita
|
||||||
|
text.map.nospawn=Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi[] cekirdek ekle.
|
||||||
|
text.map.invalid=Harita yuklenemedi. Gecersiz yada bozuk dosya.
|
||||||
|
text.editor.brush=Firca
|
||||||
|
text.editor.slope=\\
|
||||||
|
text.editor.openin=Editorde ac
|
||||||
|
text.editor.oregen=Maden Yaratilma hizi
|
||||||
|
text.editor.oregen.info=Maden Yaratilmasi:
|
||||||
|
text.editor.mapinfo=Harita bilgisi:
|
||||||
|
text.editor.author=Yapimci:
|
||||||
|
text.editor.description=Yorum:
|
||||||
|
text.editor.name=isim:
|
||||||
|
text.editor.teams=Takimlar
|
||||||
|
text.editor.elevation=Yukseklik
|
||||||
|
text.editor.badsize=[orange]Yanlis harita Yukeskligi[]\nDogru harita Yuksekligi sayisi: {0}
|
||||||
|
text.editor.errorimageload=Dosya yuklenemedi:\n[orange]{0}
|
||||||
|
text.editor.errorimagesave=Dosya kaydedilemedi.:\n[orange]{0}
|
||||||
|
text.editor.generate=Yarat
|
||||||
|
text.editor.resize=Boyutunu degistir
|
||||||
|
text.editor.loadmap=Harita yukle
|
||||||
|
text.editor.savemap=Haritayi kaydet
|
||||||
|
text.editor.saved=Kaydedildi!
|
||||||
|
text.editor.save.noname=Haritanin ismi yok! 'Harita bilgisinden' bi tane ekle
|
||||||
|
text.editor.save.overwrite=Haritanin ismi varolan bir haritanin ismi ile ayni! 'Harita bilgisinden' degisik bir isim sec
|
||||||
|
text.editor.import.exists=[scarlet]Tasinamadi.:[] ayni isimi tasiyan bir harita '{0}' zaten var!!
|
||||||
|
text.editor.import=Bilgisayara kaydet
|
||||||
|
text.editor.importmap=Bilgisayardan harita al
|
||||||
|
text.editor.importmap.description=Varolan bir harita al
|
||||||
|
text.editor.importfile=Dosyayi bilgisayara kaydet
|
||||||
|
text.editor.importfile.description=Bilgisayara ozel harita yukle
|
||||||
|
text.editor.importimage=Yuzey resmi al
|
||||||
|
text.editor.importimage.description=Degisik Yuzey resmi al
|
||||||
|
text.editor.export=Disari al
|
||||||
|
text.editor.exportfile=Disari cikart
|
||||||
|
text.editor.exportfile.description=Haritayi disari cikart
|
||||||
|
text.editor.exportimage=Haritanin resmini disari cikart
|
||||||
|
text.editor.exportimage.description=Haritanin resmini disari aktar
|
||||||
|
text.editor.loadimage=Araziyi yukle
|
||||||
|
text.editor.saveimage=Araziyi disari aktar
|
||||||
|
text.editor.unsaved=[scarlet]Kaydedilmemis verileriniz var![]\ncikmak istedigine emin misin?
|
||||||
|
text.editor.resizemap=Haritanin boyutunu degistir
|
||||||
|
text.editor.mapname=Harita ismi:
|
||||||
|
text.editor.overwrite=[accent]Dikkat et!\nBu bir haritanin uzerinden cececek.
|
||||||
|
text.editor.overwrite.confirm=[scarlet]uyari![] bu isimde bir harita zaten var. Uzerinden gececek misin?
|
||||||
|
text.editor.selectmap=Yukleyecek bir harita sec:
|
||||||
|
text.width=Genislik:
|
||||||
|
text.height=Yukseklik:
|
||||||
|
text.menu=Menu
|
||||||
|
text.play=Oyna
|
||||||
|
text.load=Yukle
|
||||||
|
text.save=Kaydet
|
||||||
|
text.fps=FPS: {0}
|
||||||
|
text.tps=TPS: {0}
|
||||||
|
text.ping=Ping: {0}ms
|
||||||
|
text.language.restart=Lutfen dil degisiminin etkin olmasi icin oyunu yeniden baslatin
|
||||||
|
text.settings.language=Dil
|
||||||
|
text.settings=ayarlar
|
||||||
|
text.tutorial=Tutorial
|
||||||
|
text.editor=Editor
|
||||||
|
text.mapeditor=Harita yaraticisi
|
||||||
|
text.donate=Bagis yap
|
||||||
|
text.settings.reset=ilk ayarlara geri al
|
||||||
|
text.settings.rebind=Geri al
|
||||||
|
text.settings.controls=Kontroller
|
||||||
|
text.settings.game=Oyun
|
||||||
|
text.settings.sound=Ses
|
||||||
|
text.settings.graphics=Grafikler
|
||||||
|
text.paused=Duraklatildi
|
||||||
|
text.yes=Evet
|
||||||
|
text.no=Hayir
|
||||||
|
text.info.title=[accent]Bilgi
|
||||||
|
text.error.title=[crimson]Bir hata olustu
|
||||||
|
text.error.crashtitle=Bir hata olustu
|
||||||
|
text.blocks.blockinfo=Yapi bilgisi
|
||||||
|
text.blocks.powercapacity=Guc kapasitesi
|
||||||
|
text.blocks.powershot=Guc/Saldiri hizi
|
||||||
|
text.blocks.targetsair=Havayi hedef alir mi?
|
||||||
|
text.blocks.itemspeed=Ilerleme hizi
|
||||||
|
text.blocks.shootrange=Menzil
|
||||||
|
text.blocks.size=Buyukluk
|
||||||
|
text.blocks.liquidcapacity=Sivi kapasitesi
|
||||||
|
text.blocks.maxitemssecond=Esya limiti
|
||||||
|
text.blocks.powerrange=Menzil
|
||||||
|
text.blocks.poweruse=Guc kullanimi
|
||||||
|
text.blocks.inputitemcapacity=Giris esya kapasitesi
|
||||||
|
text.blocks.outputitemcapacity=Cikis esya kapasitesi
|
||||||
|
text.blocks.itemcapacity=Esya kapasitesi
|
||||||
|
text.blocks.maxpowergeneration=Guc limiti
|
||||||
|
text.blocks.powertransferspeed=Guc transfer hizi
|
||||||
|
text.blocks.craftspeed=Yapilma hizi
|
||||||
|
text.blocks.inputliquid=Giris sivi
|
||||||
|
text.blocks.inputliquidaux=Yardimci sivi
|
||||||
|
text.blocks.inputitem=Giris esyasi
|
||||||
|
text.blocks.inputitems=Giris esyalari
|
||||||
|
text.blocks.outputitem=Sonuc
|
||||||
|
text.blocks.drilltier=Kazilabilirler
|
||||||
|
text.blocks.drillspeed=Ana kazma hizi
|
||||||
|
text.blocks.liquidoutput=Sivi cikisi
|
||||||
|
text.blocks.liquiduse=Sivi kullanimi
|
||||||
|
text.blocks.coolant=Sogutma sivisi
|
||||||
|
text.blocks.coolantuse=Sogutma sivi kullanimi
|
||||||
|
text.blocks.inputliquidfuel=Yakit sivisi
|
||||||
|
text.blocks.liquidfueluse=Sivi yakit kullanimi
|
||||||
|
text.blocks.explosive=Patlayici!
|
||||||
|
text.blocks.health=Can
|
||||||
|
text.blocks.inaccuracy=sekme
|
||||||
|
text.blocks.shots=vuruslar
|
||||||
|
text.blocks.reload=Yeniden doldurma
|
||||||
|
text.blocks.inputfuel=Yakit
|
||||||
|
text.blocks.fuelburntime=Yakit yakilma suresi
|
||||||
|
text.blocks.inputcapacity=Giris kapasitesi
|
||||||
|
text.blocks.outputcapacity=Cikis kapasitesi
|
||||||
|
|
||||||
|
text.unit.blocks=Yapilar
|
||||||
|
text.unit.powersecond=saniyede bir
|
||||||
|
text.unit.liquidsecond=Saniyede bir
|
||||||
|
text.unit.itemssecond=Saniyede bir
|
||||||
|
text.unit.pixelssecond=Saniyede bir
|
||||||
|
text.unit.liquidunits=Litre
|
||||||
|
text.unit.powerunits=Volt
|
||||||
|
text.unit.degrees=derece
|
||||||
|
text.unit.seconds=saniye
|
||||||
|
text.unit.none=
|
||||||
|
text.unit.items=esya
|
||||||
|
|
||||||
|
text.category.general=General
|
||||||
|
text.category.power=Guc
|
||||||
|
text.category.liquids=sivilar
|
||||||
|
text.category.items=esyalar
|
||||||
|
text.category.crafting=uretim
|
||||||
|
text.category.shooting=sikma
|
||||||
|
setting.fpscap.name=Max FPS
|
||||||
|
setting.fpscap.none=Yok
|
||||||
|
setting.fpscap.text={0} FPS
|
||||||
|
setting.difficulty.easy=kolay
|
||||||
|
setting.difficulty.normal=orta
|
||||||
|
setting.difficulty.hard=zor
|
||||||
|
setting.difficulty.insane=cok zor
|
||||||
|
setting.difficulty.purge=imkansiz
|
||||||
|
setting.difficulty.name=Zorluk derecesi:
|
||||||
|
setting.screenshake.name=Ekran sallanmasi
|
||||||
|
setting.indicators.name=Dusman gostergeleri
|
||||||
|
setting.effects.name=Efekleri goster
|
||||||
|
setting.sensitivity.name=Kumanda hassasligi
|
||||||
|
setting.saveinterval.name=Otomatik kaydetme suresi
|
||||||
|
setting.seconds={0} Saniye
|
||||||
|
setting.fullscreen.name=Tam ekran
|
||||||
|
setting.multithread.name=Parcaciklar
|
||||||
|
setting.fps.name=FPS'i goster
|
||||||
|
setting.vsync.name=VSync
|
||||||
|
setting.lasers.name=Guc lazerlerini goster
|
||||||
|
setting.healthbars.name=Yapi canlarini goster
|
||||||
|
setting.minimap.name=Haritayi goster
|
||||||
|
setting.musicvol.name=Ses yuksekligi
|
||||||
|
setting.mutemusic.name=Sesi kapat
|
||||||
|
setting.sfxvol.name=Ses seviyesi
|
||||||
|
setting.mutesound.name=Sesi kapat
|
||||||
|
text.keybind.title=Tuslari ayarla
|
||||||
|
|
||||||
|
category.general.name=General
|
||||||
|
category.view.name=Goster
|
||||||
|
category.multiplayer.name=Cok oyunculu
|
||||||
|
|
||||||
|
keybind.press=Bir tusa bas...
|
||||||
|
keybind.press.axis=Bir yone cevir yada tusa bas...
|
||||||
|
keybind.move_x.name=Sol/Sag hareket
|
||||||
|
keybind.move_y.name=Yukari/asagi hareket
|
||||||
|
keybind.select.name=Sec/silahi sik
|
||||||
|
keybind.break.name=Kirma
|
||||||
|
keybind.deselect.name=Eldeki yapiyi birak
|
||||||
|
keybind.shoot.name=Sik
|
||||||
|
keybind.zoom_hold.name=Yaklasma basili tutmasi
|
||||||
|
keybind.zoom.name=Yaklas
|
||||||
|
keybind.menu.name=Menu
|
||||||
|
keybind.pause.name=Durdur
|
||||||
|
keybind.dash.name=Kos
|
||||||
|
keybind.chat.name=konus
|
||||||
|
keybind.player_list.name=Oyuncu listesi
|
||||||
|
keybind.console.name=Konsol
|
||||||
|
keybind.rotate.name=cevir
|
||||||
|
keybind.toggle_menus.name=Menuleri ac'kapat
|
||||||
|
keybind.chat_history_prev.name=Konusma gecmisi geri
|
||||||
|
keybind.chat_history_next.name=Konusma gecmisi ileri
|
||||||
|
keybind.chat_scroll.name=Konusma kaydir
|
||||||
|
keybind.drop_unit.name=Unit birak
|
||||||
|
keybind.zoom_minimap.name=Haritayi yaklastir
|
||||||
|
|
||||||
|
mode.text.help.title=Modlarin aciklamalari
|
||||||
|
mode.waves.name=Dalgali
|
||||||
|
mode.waves.description=Klasik mod. Dalgalara karsi cekirdegi koru.
|
||||||
|
mode.sandbox.name=Serbest
|
||||||
|
mode.sandbox.description=Sonsuz esyalar ve Dalga suresi yok
|
||||||
|
mode.sandbox.warning=Not: Serbest modda sadece acik olan yapilar kullanilabilir\n\n[LIGHT_GRAY]Eger acmadiysan, belirmez.
|
||||||
|
mode.freebuild.name=Yapi Yapma
|
||||||
|
mode.freebuild.description=Sinirli esyalar ama dalga suresi yok.
|
||||||
|
|
||||||
|
content.item.name=Esyalar
|
||||||
|
content.liquid.name=Sivilar
|
||||||
|
content.unit-type.name=Uniteler
|
||||||
|
content.recipe.name=Yapilar
|
||||||
|
content.mech.name=Robotlar
|
||||||
|
|
||||||
|
item.stone.name=Tas
|
||||||
|
item.stone.description=Yaygin bir materyal. Magma'yi eriterek yada Kazma makineleriyle alinabilir.
|
||||||
|
item.copper.name=Bakir
|
||||||
|
item.copper.description=ise yayar bir materyal. Kazma makineleriyle yada tasimayla alinabilir.
|
||||||
|
item.lead.name=Kursun
|
||||||
|
item.lead.description=Basit bir baslangic materyali. sivi tasimada kullanilabilir.
|
||||||
|
item.coal.name=Komur
|
||||||
|
item.coal.description=Yaygin bir yakit.
|
||||||
|
item.dense-alloy.name=Sert karisim
|
||||||
|
item.dense-alloy.description=Bakir ve kursunun karistirilmasiyle elde edildi. Gelismis yapilar ve kazma makileneri icin kullanilabilir.
|
||||||
|
item.titanium.name=Titanyum
|
||||||
|
item.titanium.description=Nadir ve hafif bir materyal. Hava araclarinda, Kazma makinelerinde ve sivi tasima tuplerinde kullanilir.
|
||||||
|
item.thorium.name=Toryum
|
||||||
|
item.thorium.description=Nukleer yakit olarak kullanilan sert ve nukleer bir materyal.
|
||||||
|
item.silicon.name=Silikon
|
||||||
|
item.silcion.description=Gunes panellerinde ve gelismis materallerde kullanilan bir materyal
|
||||||
|
item.plastanium.name=Plastanyum
|
||||||
|
item.plastanium.description=hafif bir madde, hava makinelerinde ve silahlara kursun olarak kullanilir.
|
||||||
|
item.phase-matter.name=Faz maddesi
|
||||||
|
item.surge-alloy.name=Kabarma karisimi
|
||||||
|
item.biomatter.name=Biomatter
|
||||||
|
item.biomatter.description=basit bir yakit olarak kullanilan organik bir madde
|
||||||
|
item.sand.name=Kum
|
||||||
|
item.sand.description=karistirma maddesi olark kullanilan yaygin bir madde.
|
||||||
|
item.blast-compound.name=patlama birlesimi
|
||||||
|
item.blast-compound.description=Bombalar ve patlayicilarda kullanilabilir. Yakit olarak kullanilmasi tavsiye edilmez.
|
||||||
|
item.pyratite.name=Pyratite
|
||||||
|
item.pyratite.description=Yakici silahlar icin yakici bir madde.
|
||||||
|
|
||||||
|
liquid.water.name=Su
|
||||||
|
liquid.lava.name=Magma
|
||||||
|
liquid.oil.name=Benzin
|
||||||
|
liquid.cryofluid.name=kriyo sivisi
|
||||||
|
|
||||||
|
mech.alpha-mech.name=Alpha
|
||||||
|
mech.alpha-mech.weapon=Agir plazma silahi
|
||||||
|
mech.alpha-mech.ability=Pervaneli savunma
|
||||||
|
mech.alpha-mech.description=Standart Robot. Kendisine yardim etmesi icin 3 adet dron cikartabilir
|
||||||
|
mech.delta-mech.name=Delta
|
||||||
|
mech.delta-mech.weapon=Arc jenaratoru
|
||||||
|
mech.delta-mech.ability=Sarz cekici
|
||||||
|
mech.delta-mech.description=vur kac icin yapilmis olan hizli bir makine. duvarlara az hasar verir ama gruplari temizlemesiyle bilinir.
|
||||||
|
mech.tau-mech.name=Tau
|
||||||
|
mech.tau-mech.weapon=Yok edici Lazer
|
||||||
|
mech.tau-mech.ability=Tamircinin patlamasi
|
||||||
|
mech.tau-mech.description=Destek bir robot. alaninin icindeki herseyi tamir edebilir
|
||||||
|
mech.omega-mech.name=Omega
|
||||||
|
mech.omega-mech.weapon=Solucan roketler
|
||||||
|
mech.omega-mech.ability=Zirhli Yok edici
|
||||||
|
mech.omega-mech.description=Tank ve hasar vurucu bir robot. Zirhi ona %90 hasari engellemesini saglayan bir kalkan verir.
|
||||||
|
mech.dart-ship.name=Dart
|
||||||
|
mech.dart-ship.weapon=Tarayici
|
||||||
|
mech.dart-ship.description=Var olan en hizli robot. guclu bir vurkacci
|
||||||
|
mech.javelin-ship.name=Javelin
|
||||||
|
mech.javelin-ship.description=vur kac tipindeki bir unit. bir anda buyuk bir hasara sebep olabilir
|
||||||
|
mech.javelin-ship.weapon=Patlayici roketler
|
||||||
|
mech.javelin-ship.ability=sarz calici
|
||||||
|
mech.trident-ship.name=Trident
|
||||||
|
mech.trident-ship.description=Bir bombaci. Guzel bir zirha sahip
|
||||||
|
mech.trident-ship.weapon=mini atomlar
|
||||||
|
mech.glaive-ship.name=Glaive
|
||||||
|
mech.glaive-ship.description=Guzel, buyuk bir unit. Hiz limiti ve kapesitesi iyidir
|
||||||
|
mech.glaive-ship.weapon=Orman yakici
|
||||||
|
|
||||||
|
text.item.explosiveness=[LIGHT_GRAY]Patlayicilik: {0}
|
||||||
|
text.item.flammability=[LIGHT_GRAY]Yanbilirlik: {0}
|
||||||
|
text.item.radioactivity=[LIGHT_GRAY]Radyoaktivite: {0}
|
||||||
|
text.item.fluxiness=[LIGHT_GRAY]akis gucu: {0}
|
||||||
|
text.item.hardness=[LIGHT_GRAY]Zirh: {0}
|
||||||
|
|
||||||
|
text.unit.health=[LIGHT_GRAY]Can: {0}
|
||||||
|
text.unit.speed=[LIGHT_GRAY]hiz: {0}
|
||||||
|
|
||||||
|
text.mech.weapon=[LIGHT_GRAY]silah: {0}
|
||||||
|
text.mech.armor=[LIGHT_GRAY]zirh: {0}
|
||||||
|
text.mech.itemcapacity=[LIGHT_GRAY]esya kapasitesi: {0}
|
||||||
|
text.mech.minespeed=[LIGHT_GRAY]kazma hizi: {0}
|
||||||
|
text.mech.minepower=[LIGHT_GRAY]kazma gucu: {0}
|
||||||
|
text.mech.ability=[LIGHT_GRAY]yetenek gucu: {0}
|
||||||
|
|
||||||
|
|
||||||
|
text.liquid.heatcapacity=[LIGHT_GRAY]isinma kapasitesi: {0}
|
||||||
|
text.liquid.viscosity=[LIGHT_GRAY]Yari sivilik: {0}
|
||||||
|
text.liquid.temperature=[LIGHT_GRAY]isi: {0}
|
||||||
|
|
||||||
|
block.core.name=cekirdek
|
||||||
|
block.metalfloor.name=metal zemin
|
||||||
|
block.deepwater.name=su alti
|
||||||
|
block.water.name=su
|
||||||
|
block.lava.name=magma
|
||||||
|
block.oil.name=benzin
|
||||||
|
block.blackstone.name=kara tas
|
||||||
|
block.stone.name=tas
|
||||||
|
block.dirt.name=cimen
|
||||||
|
block.sand.name=kum
|
||||||
|
block.ice.name=buz
|
||||||
|
block.snow.name=kar
|
||||||
|
block.grass.name=cimen
|
||||||
|
block.shrub.name=cali
|
||||||
|
block.rock.name=tas
|
||||||
|
block.blackrock.name=bkara tas
|
||||||
|
block.icerock.name=buz tasi
|
||||||
|
block.copper-wall.name=bakir duvar
|
||||||
|
block.copper-wall-large.name=buyuk bakir duvar
|
||||||
|
block.composite-wall.name=bilesik duvari
|
||||||
|
block.composite-wall-large.name=buyuk bilesik duvar
|
||||||
|
block.phase-wall.name=faz duvar
|
||||||
|
block.phase-wall-large.name=genis faz duvar
|
||||||
|
block.thorium-wall.name=Toryum duvari
|
||||||
|
block.thorium-wall-large.name=genis toryum duvari
|
||||||
|
block.door.name=kapi
|
||||||
|
block.door-large.name=genis kapi
|
||||||
|
block.duo.name=ikili
|
||||||
|
block.scorch.name=Atesleyici
|
||||||
|
block.hail.name=yagdirici
|
||||||
|
block.lancer.name=Lazer topu
|
||||||
|
block.conveyor.name=konvenyor
|
||||||
|
block.titanium-conveyor.name=Titanyum konvenyor
|
||||||
|
block.junction.name=ayirici
|
||||||
|
block.router.name=dagitici
|
||||||
|
block.router.description=esyalari 4 farkli yere dagatir
|
||||||
|
block.distributor.name=yayici
|
||||||
|
block.distributor.description=esyalari 8 farkli yere gonderen bir dagitici
|
||||||
|
block.sorter.name=secici
|
||||||
|
block.sorter.description=esyalari secer. rengi ayni olan esya ileriden, digerleri sagdan ve soldan devam eder
|
||||||
|
block.overflow-gate.name=Kapali dagatici
|
||||||
|
block.overflow-gate.description=sadece saga ve sola dagatir. onu kapalidir
|
||||||
|
block.bridgeconveyor.name=Yer alti konvenyoru
|
||||||
|
block.bridgeconveyor.description=2 kutuya kadar gecebilen bit yer alti konvenyoru
|
||||||
|
block.smelter.name=eritici
|
||||||
|
block.arc-smelter.name=elektrik eritici
|
||||||
|
block.silicon-smelter.name=Silikon eritici
|
||||||
|
block.phase-weaver.name=Dokumaci
|
||||||
|
block.pulverizer.name=pulvarizor
|
||||||
|
block.cryofluidmixer.name=Cryosivisi karistiricisi
|
||||||
|
block.melter.name=eritici
|
||||||
|
block.incinerator.name=isi firini
|
||||||
|
block.biomattercompressor.name=Biomatter kompresoru
|
||||||
|
block.separator.name=separator
|
||||||
|
block.centrifuge.name=Santrifuj
|
||||||
|
block.power-node.name=Guc Dugumu
|
||||||
|
block.power-node-large.name=buyuk Guc Dugumu
|
||||||
|
block.battery.name=batarya
|
||||||
|
block.battery-large.name=buyuk batarya
|
||||||
|
block.combustion-generator.name=sicaklik jenaratoru
|
||||||
|
block.turbine-generator.name=termal jenaratoru
|
||||||
|
block.mechanical-drill.name=Mekanikal Kazici
|
||||||
|
block.pneumatic-drill.name=Pneumatik Kazici
|
||||||
|
block.laser-drill.name=Lazer kazici
|
||||||
|
block.water-extractor.name=su ayiricisi
|
||||||
|
block.cultivator.name=ekici
|
||||||
|
block.dart-ship-factory.name=Dart Ship Fabrikasi
|
||||||
|
block.delta-mech-factory.name=Delta Mech Fabrikasi
|
||||||
|
block.javelin-ship-factory.name=Javelin Ship Fabrikasi
|
||||||
|
block.trident-ship-factory.name=Trident Ship Fabrikasi
|
||||||
|
block.glaive-ship-factory.name=Glaive Ship Fabrikasi
|
||||||
|
block.omega-mech-factory.name=Omega Mech Fabrikasi
|
||||||
|
block.tau-mech-factory.name=Tau Mech Fabrikasi
|
||||||
|
block.repairpoint.name=Tamirci
|
||||||
|
block.resupplypoint.name=Yukleyici
|
||||||
|
block.conduit.name=boru
|
||||||
|
block.pulseconduit.name=Pulse borusu
|
||||||
|
block.liquidrouter.name=sivi ayirici
|
||||||
|
block.liquidtank.name=sivi tanki
|
||||||
|
block.liquidjunction.name=sivi koprusu
|
||||||
|
block.bridgeconduit.name=Kopru borusu
|
||||||
|
block.mechanical-pump.name=Mekanikal pompa
|
||||||
|
block.itemsource.name=esya kaynagi
|
||||||
|
block.itemvoid.name=esya deligi
|
||||||
|
block.liquidsource.name=sivi kaynagi
|
||||||
|
block.powervoid.name=guc deligi
|
||||||
|
block.powerinfinite.name=sonsuz guc
|
||||||
|
block.unloader.name=bekletici
|
||||||
|
block.sortedunloader.name=kisaltilmis bekletici
|
||||||
|
block.vault.name=kasa
|
||||||
|
block.wave.name=Dalga
|
||||||
|
block.swarmer.name=Swarmer
|
||||||
|
block.salvo.name=Salvo
|
||||||
|
block.ripple.name=Ripple
|
||||||
|
block.phase-conveyor.name=Phase konvenyoru
|
||||||
|
block.bridge-conveyor.name=kopru konvenyoru
|
||||||
|
block.plastanium-compressor.name=Plastanium Kompresoru
|
||||||
|
block.pyratite-mixer.name=Pyratite karistirici
|
||||||
|
block.blast-mixer.name=Patlayici karistiricisi
|
||||||
|
block.solidifer.name=Sertlestirici
|
||||||
|
block.solar-panel.name=gunes paneli
|
||||||
|
block.solar-panel-large.name=genis gunes paneli
|
||||||
|
block.oil-extractor.name=benzin ayirici
|
||||||
|
block.drone-pad.name=drone pisti
|
||||||
|
block.fabricator-pad.name=Fabricator Pisti
|
||||||
|
block.interceptor-pad.name=Interceptor Pisti
|
||||||
|
block.monsoon-pad.name=Monsoon Pisti
|
||||||
|
block.repair-point.name=tamirci
|
||||||
|
block.resupply-point.name=doldurucu
|
||||||
|
block.pulse-conduit.name=Pulse borusu
|
||||||
|
block.phase-conduit.name=Phase borusu
|
||||||
|
block.liquid-router.name=sivi ayirici
|
||||||
|
block.liquid-tank.name=sivi tanki
|
||||||
|
block.liquid-junction.name=sivi yonlendirici
|
||||||
|
block.bridge-conduit.name=kopru borusu
|
||||||
|
block.rotary-pump.name=donen boru
|
||||||
|
block.thorium-reactor.name=Thorium Reaktoru
|
||||||
|
block.command-center.name=komut merkezi
|
||||||
|
block.mass-driver.name=kütle surucusu
|
||||||
|
block.blast-drill.name=Patlatici kazici
|
||||||
|
block.thermal-pump.name=Termal pompa
|
||||||
|
block.dagger-pad.name=Dagger Pisti
|
||||||
|
block.titan-pad.name=Titan Pisti
|
||||||
|
block.thermal-generator.name=Magma jeneratoru
|
||||||
|
block.alloy-smelter.name=Alloy eritici
|
||||||
|
block.mend-projector.name=Mend koruyucu
|
||||||
|
block.surge-wall.name=kabarma duvari
|
||||||
|
block.surge-wall-large.name=genis kabarma duvari
|
||||||
|
block.cyclone.name=Siklon
|
||||||
|
block.fuse.name=fitil
|
||||||
|
|
||||||
|
unit.alpha-drone.name=Alpha Dronu
|
||||||
|
unit.drone.name=Drone
|
||||||
|
unit.drone.description=baslangic dronu. yapi tamir eder.
|
||||||
|
unit.fabricator.name=Fabricator
|
||||||
|
unit.fabricator.description=esya kazar, ve cekirdege birakir.Alpha dronundan daha iyidir
|
||||||
|
unit.dagger.name=Dagger
|
||||||
|
unit.dagger.description=basit bir zemin uniti
|
||||||
|
unit.titan.name=Titan
|
||||||
|
unit.titan.description=havaya sikabilen, gelismis bir unit
|
||||||
|
unit.monsoon.name=Monsoon
|
||||||
|
unit.monsoon.description=agir bir bombaci.
|
||||||
|
unit.interceptor.name=Interceptor
|
||||||
|
unit.interceptor.description=hizli bir vurkacci
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
text.credits.text=Створив [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GREEN]Перекладач — Prosta4ok_ua\n\n[] Є питання по грі або проблеми с перекладом? Іди в офіційний сервер discord Mindustry в канал #український.
|
text.credits.text=Створив [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GREEN]Перекладач — Prosta4ok_ua\n\n[] Є питання по грі або проблеми с перекладом? Іди в офіційний сервер discord Mindustry в канал #український.
|
||||||
text.credits=Автори
|
text.credits=Автори
|
||||||
text.discord=Приєднуйтесь до нашого Discord!
|
text.discord=Приєднуйтесь до нашого Discord!
|
||||||
text.link.discord.description=офіційний сервер discord Mindustry
|
text.link.discord.description=Офіційний сервер discord Mindustry
|
||||||
text.link.github.description=Ігровий код гри
|
text.link.github.description=Ігровий код гри
|
||||||
text.link.dev-builds.description=Нестабільні розробки
|
text.link.dev-builds.description=Нестабільні розробки
|
||||||
text.link.trello.description=Офіційна дошка trello для запланованих функцій
|
text.link.trello.description=Офіційна дошка trello для запланованих функцій
|
||||||
text.link.itch.io.description=Itch.io сторінка з веб-версією та завантаженням для ПК
|
text.link.itch.io.description=Itch.io сторінка з веб-версією та завантаженням для ПК
|
||||||
text.link.google-play.description=Google Play список магазинів
|
text.link.google-play.description=Скачати з Google Play для Android
|
||||||
text.link.wiki.description=офіційна Mindustry вікі(англ.)
|
text.link.wiki.description=Офіційна Mindustry вікі (англ.)
|
||||||
text.linkfail=Не вдалося відкрити посилання!\nURL-адреса скопійовано у ваш буфер обміну.
|
text.linkfail=Не вдалося відкрити посилання!\nURL-адреса скопійовано у ваш буфер обміну.
|
||||||
text.editor.web=Веб-версія не підтримує редактора! \nЗавантажте гру, щоб використовувати його.
|
text.editor.web=Веб-версія не підтримує редактора! \nЗавантажте гру, щоб використовувати його.
|
||||||
text.web.unsupported=Веб-версія не підтримує цю функцію! Завантажте гру, щоб використовувати її.
|
text.web.unsupported=Веб-версія не підтримує цю функцію! Завантажте гру, щоб використовувати її.
|
||||||
@@ -21,6 +21,7 @@ text.level.delete.title=Підтвердьте видалення
|
|||||||
text.map.delete=Ви впевнені, що хочете видалити карту "[orange]{0}[]"?
|
text.map.delete=Ви впевнені, що хочете видалити карту "[orange]{0}[]"?
|
||||||
text.level.select=Вибір рівня
|
text.level.select=Вибір рівня
|
||||||
text.level.mode=Ігровий режим:
|
text.level.mode=Ігровий режим:
|
||||||
|
text.construction.desktop=Керування робочим столом було змінено.\nЩоб скасувати вибір блоку або припинити будівництво, [accent] скористайтеся пробілом[].
|
||||||
text.construction.title=Інструкція з будівництва блоків
|
text.construction.title=Інструкція з будівництва блоків
|
||||||
text.construction=Ви тільки що вибрали [accent]режим будівництва блоків[].\n\nЩоб розпочати розміщення, просто торкніться відповідного розташування поруч із вашим кораблем.\nПісля вибору деяких блоків натисніть прапорець, щоб підтвердити, і ваш корабель почне будувати їх.\n\\n- [accent]Вилучіть блоки[] з вашого вибору, торкнувшись їх.\n- [accent]Перемістіть виділення[] утримуючи та перетягнувши будь-який блок у виділенні.\n- [accent]Розташуйте блоки у лінію[], торкнувшись і утримуючи порожнє місце, а потім перетягуючи в потрібному напрямку.\n- [accent]Скасуйте конструкцію або виділення[] натиснувши X внизу ліворуч.
|
text.construction=Ви тільки що вибрали [accent]режим будівництва блоків[].\n\nЩоб розпочати розміщення, просто торкніться відповідного розташування поруч із вашим кораблем.\nПісля вибору деяких блоків натисніть прапорець, щоб підтвердити, і ваш корабель почне будувати їх.\n\\n- [accent]Вилучіть блоки[] з вашого вибору, торкнувшись їх.\n- [accent]Перемістіть виділення[] утримуючи та перетягнувши будь-який блок у виділенні.\n- [accent]Розташуйте блоки у лінію[], торкнувшись і утримуючи порожнє місце, а потім перетягуючи в потрібному напрямку.\n- [accent]Скасуйте конструкцію або виділення[] натиснувши X внизу ліворуч.
|
||||||
text.deconstruction.title=Інструкція з деконструкції блоків
|
text.deconstruction.title=Інструкція з деконструкції блоків
|
||||||
@@ -58,11 +59,10 @@ text.name=Нік:
|
|||||||
text.unlocked=Новий блок розблоковано!
|
text.unlocked=Новий блок розблоковано!
|
||||||
text.unlocked.plural=Нові блоки розблоковано!
|
text.unlocked.plural=Нові блоки розблоковано!
|
||||||
text.players={0} гравців онлайн
|
text.players={0} гравців онлайн
|
||||||
text.players.single={0} гравець онлай
|
text.players.single={0} гравець онлайн
|
||||||
text.server.mismatch=Пакетна помилка: невідповідність версії клієнта / сервера. \nПереконайтеся, що ви та хост мають останню версію Mindustry!
|
text.server.mismatch=Пакетна помилка: невідповідність версії клієнта / сервера. \nПереконайтеся, що ви та хост мають останню версію Mindustry!
|
||||||
text.server.closing=[accent]Закриття сервера...
|
text.server.closing=[accent]Закриття сервера...
|
||||||
text.server.kicked.kick=Ви були вигнані(кікнуті) з сервера!
|
text.server.kicked.kick=Ви були вигнані(кікнуті) з сервера!
|
||||||
text.server.kicked.fastShoot=Ви стріляєте занадто швидко.
|
|
||||||
text.server.kicked.serverClose=Сервер закритий.
|
text.server.kicked.serverClose=Сервер закритий.
|
||||||
text.server.kicked.sectorComplete=Сектор завершено.
|
text.server.kicked.sectorComplete=Сектор завершено.
|
||||||
text.server.kicked.sectorComplete.text=Ваша місія завершена. \nСервер продовжить роботу в наступному секторі.
|
text.server.kicked.sectorComplete.text=Ваша місія завершена. \nСервер продовжить роботу в наступному секторі.
|
||||||
@@ -345,6 +345,7 @@ keybind.move_x.name=Переміщення по осі x
|
|||||||
keybind.move_y.name=Переміщення по осі y
|
keybind.move_y.name=Переміщення по осі y
|
||||||
keybind.select.name=Виберіть
|
keybind.select.name=Виберіть
|
||||||
keybind.break.name=Зламати
|
keybind.break.name=Зламати
|
||||||
|
keybind.deselect.name=Скасувати вибір
|
||||||
keybind.shoot.name=Постріл
|
keybind.shoot.name=Постріл
|
||||||
keybind.zoom_hold.name=Утримувати масштаб
|
keybind.zoom_hold.name=Утримувати масштаб
|
||||||
keybind.zoom.name=Збільшити
|
keybind.zoom.name=Збільшити
|
||||||
@@ -402,9 +403,42 @@ item.blast-compound.description=Нестійкий склад, що викори
|
|||||||
item.pyratite.name=Піратит
|
item.pyratite.name=Піратит
|
||||||
item.pyratite.description=Вкрай легкозаймиста речовина, що використовується у запальному озброєнні.
|
item.pyratite.description=Вкрай легкозаймиста речовина, що використовується у запальному озброєнні.
|
||||||
liquid.water.name=Вода
|
liquid.water.name=Вода
|
||||||
|
liquid.water.description=Монооксид дігідрогена
|
||||||
liquid.lava.name=Лава
|
liquid.lava.name=Лава
|
||||||
|
liquid.lava.description=[ORANGE]Гаряче ...
|
||||||
liquid.oil.name=Нафта
|
liquid.oil.name=Нафта
|
||||||
|
liquid.oil.description=Хтось писав про додавання золота в гру. Його додали, правда воно якесь чорне ...
|
||||||
liquid.cryofluid.name=Кріогенна рідина
|
liquid.cryofluid.name=Кріогенна рідина
|
||||||
|
liquid.cryofluid.description=[BLUE] Холодноватенько ...
|
||||||
|
mech.alpha-mech.name=Альфа
|
||||||
|
mech.alpha-mech.weapon=Тяжкий ретранслятор
|
||||||
|
mech.alpha-mech.ability=Юрба дронів
|
||||||
|
mech.alpha-mech.description=Стандартний мех. Має пристойну швидкість і шкоди; може створити до 3-х дронів для збільшення можливостей атаки.
|
||||||
|
mech.delta-mech.name=Дельта
|
||||||
|
mech.delta-mech.weapon=Генератор дуг
|
||||||
|
mech.delta-mech.ability=Розряд
|
||||||
|
mech.delta-mech.description=Швидкий, легкоброньований мех, зроблений для ударів з відскоком. Невелика шкода будівлям, але дуже швидко вбиває великі групи ворожих підрозділів своєю дуговою блискавичною зброєю.
|
||||||
|
mech.tau-mech.name=Тау
|
||||||
|
mech.tau-mech.weapon=Відновлювальний лазер
|
||||||
|
mech.tau-mech.ability=Відновлювальний спалах
|
||||||
|
mech.tau-mech.description=Мех підтримки. Зцілює союзницькі блоки, стріляючи в них. Можна гасити пожежі і зцілити союзників у радіусі зі своэю можливостю для ремонту.
|
||||||
|
mech.omega-mech.name=Омега
|
||||||
|
mech.omega-mech.weapon=Купа ракет
|
||||||
|
mech.omega-mech.ability=Захисна конфігурація
|
||||||
|
mech.omega-mech.description=Громіздкий і добре броньований хутро, зроблений для фронтових нападів. Його здатність може блокувати до 90% вхідного шкоди.
|
||||||
|
mech.dart-ship.name=Дротик
|
||||||
|
mech.dart-ship.weapon=Ретранслятор
|
||||||
|
mech.dart-ship.description=Стандартний корабель. Досить швидкий і легкий, але має невеликі наступальні можливості і низьку швидкість видобутку.
|
||||||
|
mech.javelin-ship.name=Джавелін
|
||||||
|
mech.javelin-ship.description=Ударный корабль, который использует набег с отскоком. Первоначально медленный, но позже он может ускориться до больших скоростей и летать над вражескими заставами, нанося большой урон своей молниеносной способностью и ракетами.
|
||||||
|
mech.javelin-ship.weapon=Вибухові ракети
|
||||||
|
mech.javelin-ship.ability=Розряджаючий підсилювач
|
||||||
|
mech.trident-ship.name=Тризубець
|
||||||
|
mech.trident-ship.description=Важкий бомбардувальник. Досить добре броньований.
|
||||||
|
mech.trident-ship.weapon=Вантажний відсік з бомбами
|
||||||
|
mech.glaive-ship.name=Спис
|
||||||
|
mech.glaive-ship.description=Ударний корабель, який використовує набіг з відскоком. Спочатку повільний, але пізніше він може прискоритися до великих швидкостей і літати над ворожими заставами, завдаючи великої шкоди своєю. блискавичною здатністю і ракетами.
|
||||||
|
mech.glaive-ship.weapon=Вогняний ретранслятор
|
||||||
text.item.explosiveness=[LIGHT_GRAY]Вибухонебезпечність: {0}
|
text.item.explosiveness=[LIGHT_GRAY]Вибухонебезпечність: {0}
|
||||||
text.item.flammability=[LIGHT_GRAY]Вогненебезпечність: {0}
|
text.item.flammability=[LIGHT_GRAY]Вогненебезпечність: {0}
|
||||||
text.item.radioactivity=[LIGHT_GRAY]Радіоактивність: {0}
|
text.item.radioactivity=[LIGHT_GRAY]Радіоактивність: {0}
|
||||||
@@ -412,24 +446,32 @@ text.item.fluxiness=[LIGHT_GRAY]Осадковість: {0}
|
|||||||
text.item.hardness=[LIGHT_GRAY]Міцність: {0}
|
text.item.hardness=[LIGHT_GRAY]Міцність: {0}
|
||||||
text.unit.health=[LIGHT_GRAY]Здоров'я: {0}
|
text.unit.health=[LIGHT_GRAY]Здоров'я: {0}
|
||||||
text.unit.speed=[LIGHT_GRAY]Швидкість: {0}
|
text.unit.speed=[LIGHT_GRAY]Швидкість: {0}
|
||||||
|
text.mech.weapon=[LIGHT_GRAY]Зброя: {0}
|
||||||
|
text.mech.armor=[LIGHT_GRAY]Броня: {0}
|
||||||
|
text.mech.itemcapacity=[LIGHT_GRAY] Ємність елементів: {0}
|
||||||
|
text.mech.minespeed=[LIGHT_GRAY]Швидкість видобутку: {0}
|
||||||
|
text.mech.minepower=[LIGHT_GRAY]Потужність видобутку: {0}
|
||||||
|
text.mech.ability=[LIGHT_GRAY]Здібність: {0}
|
||||||
text.liquid.heatcapacity=[LIGHT_GRAY]Теплоємність: {0}
|
text.liquid.heatcapacity=[LIGHT_GRAY]Теплоємність: {0}
|
||||||
text.liquid.viscosity=[LIGHT_GRAY]В'язкість: {0}
|
text.liquid.viscosity=[LIGHT_GRAY]В'язкість: {0}
|
||||||
text.liquid.temperature=[LIGHT_GRAY]Температура: {0}
|
text.liquid.temperature=[LIGHT_GRAY]Температура: {0}
|
||||||
block.deepwater.name=глибоководдя
|
block.core.name=Ядро
|
||||||
block.water.name=вода
|
block.metalfloor.name=Металічна підлога
|
||||||
block.lava.name=лава
|
block.deepwater.name=Глибоководдя
|
||||||
block.oil.name=нафта
|
block.water.name=Вода
|
||||||
block.blackstone.name=чорний-камінь
|
block.lava.name=Лава
|
||||||
block.stone.name=камінь
|
block.oil.name=Нафта
|
||||||
block.dirt.name=земля
|
block.blackstone.name=Чорний камінь
|
||||||
block.sand.name=пісок
|
block.stone.name=Камінь
|
||||||
block.ice.name=лід
|
block.dirt.name=Земля
|
||||||
block.snow.name=сніг
|
block.sand.name=Пісок
|
||||||
block.grass.name=трава
|
block.ice.name=Лід
|
||||||
block.shrub.name=кущ
|
block.snow.name=Сніг
|
||||||
block.rock.name=кругляк
|
block.grass.name=Трава
|
||||||
block.blackrock.name=чорний-кругляк
|
block.shrub.name=Кущ
|
||||||
block.icerock.name=льодяний-кругляк
|
block.rock.name=Кругляк
|
||||||
|
block.blackrock.name=Чорнийкругляк
|
||||||
|
block.icerock.name=Льодяний кругляк
|
||||||
block.copper-wall.name=Мідна стіна
|
block.copper-wall.name=Мідна стіна
|
||||||
block.copper-wall-large.name=Велика мідна стіна
|
block.copper-wall-large.name=Велика мідна стіна
|
||||||
block.composite-wall.name=Композитна стіна
|
block.composite-wall.name=Композитна стіна
|
||||||
@@ -439,14 +481,19 @@ block.phase-wall-large.name=Велика фазова стіна
|
|||||||
block.thorium-wall.name=Торієва стіна
|
block.thorium-wall.name=Торієва стіна
|
||||||
block.thorium-wall-large.name=Велика Торієва стіна
|
block.thorium-wall-large.name=Велика Торієва стіна
|
||||||
block.door.name=Двері
|
block.door.name=Двері
|
||||||
|
block.door.description=Через ці двері не пройдуть вороги, якщо вона закрита. Щоб відкрити / закрити просто натисніть на неї.
|
||||||
block.door-large.name=Великі двері
|
block.door-large.name=Великі двері
|
||||||
|
block.door-large.description=Для великих стін потрібні великі двері.
|
||||||
block.duo.name=Подвійна
|
block.duo.name=Подвійна
|
||||||
block.scorch.name=Випалювач
|
block.scorch.name=Випалювач
|
||||||
block.hail.name=Град
|
block.hail.name=Град
|
||||||
block.lancer.name=Списоносець
|
block.lancer.name=Списоносець
|
||||||
block.conveyor.name=Конвеєр
|
block.conveyor.name=Конвеєр
|
||||||
|
block.conveyor.description=Дорога, яка постійно знаходиться в русі. За допомогою нього можна переміщати ресурси.
|
||||||
block.titanium-conveyor.name=Титановий конвеєр
|
block.titanium-conveyor.name=Титановий конвеєр
|
||||||
|
block.titanium-conveyor.description=Конвеєр другого покоління. Збільшена швидкість переміщення предметів і їх кількість на одному конвеєрі.
|
||||||
block.junction.name=Перехрестя
|
block.junction.name=Перехрестя
|
||||||
|
block.junction.description=Назва говорить сама за себе. Не дає з'єднатися двом конвеєрів.
|
||||||
block.router.name=Маршрутизатор
|
block.router.name=Маршрутизатор
|
||||||
block.router.description=Розбиває елементи на всі 4 напрямки. Можна зберігати елементи як буфер.
|
block.router.description=Розбиває елементи на всі 4 напрямки. Можна зберігати елементи як буфер.
|
||||||
block.distributor.name=Розподілювач
|
block.distributor.name=Розподілювач
|
||||||
@@ -460,31 +507,40 @@ block.bridgeconveyor.description=Конвеєр, який може пройти
|
|||||||
block.smelter.name=Плавильний завод
|
block.smelter.name=Плавильний завод
|
||||||
block.arc-smelter.name=Дуговий плавильний завод
|
block.arc-smelter.name=Дуговий плавильний завод
|
||||||
block.silicon-smelter.name=Кремнієвий завод
|
block.silicon-smelter.name=Кремнієвий завод
|
||||||
|
block.silicon-smelter.description=За допомогою піску, вугілля і енергії виробляє кремній.\n[RED]НЕ СИЛІКОН[]
|
||||||
block.phase-weaver.name=Фазовий ткач
|
block.phase-weaver.name=Фазовий ткач
|
||||||
block.pulverizer.name=Розпилювач
|
block.pulverizer.name=Розпилювач
|
||||||
block.cryofluidmixer.name=Змішувач кріогненної рідини
|
block.cryofluidmixer.name=Змішувач кріогненної рідини
|
||||||
block.melter.name=Плавильня
|
block.melter.name=Плавильня
|
||||||
block.incinerator.name=Сміттєспалювальний завод
|
block.incinerator.name=Сміттєспалювальний завод
|
||||||
|
block.incinerator.description=Спалює сміття за допомогою енергії.
|
||||||
block.biomattercompressor.name=Біоматерний компресор
|
block.biomattercompressor.name=Біоматерний компресор
|
||||||
|
block.biomattercompressor.description=Робить біоматерію з біосміття і енергії.
|
||||||
block.separator.name=Сепаратор
|
block.separator.name=Сепаратор
|
||||||
block.centrifuge.name=Центрифуга
|
block.centrifuge.name=Центрифуга
|
||||||
block.power-node.name=Енергійний вузол
|
block.power-node.name=Енергійний вузол
|
||||||
|
block.power-node.description=Максимум допустимо 4 підключення. Щоб з'єднати з якимось блоком потрібно наступне:\n1. Щоб він знаходився в радіусі дії\n2.Нажать на потрібний блок.
|
||||||
block.power-node-large.name=Великий енергетичний вузол
|
block.power-node-large.name=Великий енергетичний вузол
|
||||||
|
block.power-node-large.description=Силовий вузол другого покоління. Збільшено розмір вузла, кількість максимально допустимих підключень і інше.
|
||||||
block.battery.name=Акумулятор
|
block.battery.name=Акумулятор
|
||||||
|
block.battery.description=Зберігає енергію, але батарейки DURACELL зберігають в 10 разів більше.
|
||||||
block.battery-large.name=Великий акумулятор
|
block.battery-large.name=Великий акумулятор
|
||||||
|
block.battery-large.description=Зберігає енергію, але батарейки DURACELL все одно зберігають більше!
|
||||||
block.combustion-generator.name=Генератор горіння
|
block.combustion-generator.name=Генератор горіння
|
||||||
block.turbine-generator.name=Турбогенератор
|
block.turbine-generator.name=Турбогенератор
|
||||||
block.mechanical-drill.name=Механічний дриль
|
block.mechanical-drill.name=Механічний дриль
|
||||||
|
block.mechanical-drill.description=Найперший доступний бур. Можна підвести до нього воду для збільшення швидкості свердління.
|
||||||
block.pneumatic-drill.name=Пневматичний дриль
|
block.pneumatic-drill.name=Пневматичний дриль
|
||||||
block.laser-drill.name=Лазерний дриль
|
block.laser-drill.name=Лазерний дриль
|
||||||
block.water-extractor.name=Екстрактор води
|
block.water-extractor.name=Екстрактор води
|
||||||
|
block.water-extractor.description=Робить воду з енергії.\n[PINK] Магія!
|
||||||
block.cultivator.name=Культиватор
|
block.cultivator.name=Культиватор
|
||||||
block.dart-ship-factory.name=Завод дротикових кораблів
|
block.dart-ship-factory.name=Завод дротикових кораблів
|
||||||
block.delta-mech-factory.name=Завод механічного дельта броньовика
|
block.delta-mech-factory.name=Завод механічного дельта броньовика
|
||||||
block.javelin-ship-factory.name=Завод кораблів Javelin
|
|
||||||
block.repairpoint.name=Ремонтний пункт
|
block.repairpoint.name=Ремонтний пункт
|
||||||
block.resupplypoint.name=Постачальна точка
|
block.resupplypoint.name=Постачальна точка
|
||||||
block.conduit.name=Трубопровід
|
block.conduit.name=Трубопровід
|
||||||
|
block.conduit.description=Конвеєр для рідин першого покоління.
|
||||||
block.pulseconduit.name=Імпульсний трубопровід
|
block.pulseconduit.name=Імпульсний трубопровід
|
||||||
block.liquidrouter.name=Рідкий маршрутизатор
|
block.liquidrouter.name=Рідкий маршрутизатор
|
||||||
block.liquidtank.name=Рідкий резервуар
|
block.liquidtank.name=Рідкий резервуар
|
||||||
@@ -496,29 +552,42 @@ block.itemvoid.name=Предметний вакуум
|
|||||||
block.liquidsource.name=Рідке джерело
|
block.liquidsource.name=Рідке джерело
|
||||||
block.powervoid.name=Енергетичний вакуум
|
block.powervoid.name=Енергетичний вакуум
|
||||||
block.powerinfinite.name=Нескінченна енергія
|
block.powerinfinite.name=Нескінченна енергія
|
||||||
|
block.powerinfinite.description=Ти не повинен це бачити!\n[RED]WARNING[]
|
||||||
block.unloader.name=Розвантажувач
|
block.unloader.name=Розвантажувач
|
||||||
block.sortedunloader.name=Сортований розвантажувач
|
block.sortedunloader.name=Сортований розвантажувач
|
||||||
block.vault.name=Сховище
|
block.vault.name=Сховище
|
||||||
|
block.vault.description=Зберігає предмети як ядро до 2000.
|
||||||
block.wave.name=Хвиля
|
block.wave.name=Хвиля
|
||||||
block.swarmer.name=Ройевик
|
block.swarmer.name=Ройевик
|
||||||
|
block.swarmer.description=Навіть Керріган в захваті від такого
|
||||||
block.salvo.name=Залп
|
block.salvo.name=Залп
|
||||||
block.ripple.name=Хвилястість
|
block.ripple.name=Хвилястість
|
||||||
block.phase-conveyor.name=Фазовий конвеєр
|
block.phase-conveyor.name=Фазовий конвеєр
|
||||||
block.bridge-conveyor.name=Bridge Conveyor
|
block.phase-conveyor.description=Поки гра знаходиться в 2D, цей конвеєр вже в чотиривимірному просторі. Вимагає енергії.
|
||||||
|
block.bridge-conveyor.name=Мостовий конвеєр
|
||||||
|
block.bridge-conveyor.description=Він може зробити "тунель", що допомагає обходити перешкоди.
|
||||||
block.plastanium-compressor.name=Пластиновий компресор
|
block.plastanium-compressor.name=Пластиновий компресор
|
||||||
block.pyratite-mixer.name=Змішувач піратиту
|
block.pyratite-mixer.name=Змішувач піратиту
|
||||||
block.blast-mixer.name=Доменний змішувач
|
block.blast-mixer.name=Доменний змішувач
|
||||||
block.solidifer.name=Затверджувач
|
block.solidifer.name=Затверджувач
|
||||||
block.solar-panel.name=Сонячна панель
|
block.solar-panel.name=Сонячна панель
|
||||||
|
block.solar-panel.description=Зелена енергія
|
||||||
block.solar-panel-large.name=Велика сонячна панель
|
block.solar-panel-large.name=Велика сонячна панель
|
||||||
block.oil-extractor.name=Екстрактор нафти
|
block.oil-extractor.name=Екстрактор нафти
|
||||||
block.drone-pad.name=Стартовий майданчик дронів
|
block.drone-pad.name=Завод дронів
|
||||||
block.fabricator-pad.name=Стартовий майданчик складальників
|
block.fabricator-pad.name=Завод складальників
|
||||||
block.interceptor-pad.name=Стартовий майданчик винищувачів-перехоплювачів
|
block.interceptor-pad.name=Завод винищувачів-перехоплювачів
|
||||||
block.monsoon-pad.name=Стартовий майданчик мусонів
|
block.monsoon-pad.name=Завод мусонів
|
||||||
|
block.javelin-ship-factory.name=Реконструктор кораблів "Джавелін"
|
||||||
|
block.trident-ship-factory.name=Реконструктор кораблів "Тризубець"
|
||||||
|
block.glaive-ship-factory.name=Реконструктор кораблів "Спис"
|
||||||
|
block.omega-mech-factory.name=Реконстуктор мехів "Омега"
|
||||||
|
block.tau-mech-factory.name=Реконстуктор мехів "Тау"
|
||||||
block.repair-point.name=Ремонтний пункт
|
block.repair-point.name=Ремонтний пункт
|
||||||
|
block.repair-point.description=За допомогою енергії лікує тебе.
|
||||||
block.resupply-point.name=постачальна точка
|
block.resupply-point.name=постачальна точка
|
||||||
block.pulse-conduit.name=Імпульсний водовід
|
block.pulse-conduit.name=Імпульсний водовід
|
||||||
|
block.pulse-conduit.description="Конвеєр" для рідин другого покоління.
|
||||||
block.phase-conduit.name=Фазовий водопровід
|
block.phase-conduit.name=Фазовий водопровід
|
||||||
block.liquid-router.name=Рідкий маршрутизатор
|
block.liquid-router.name=Рідкий маршрутизатор
|
||||||
block.liquid-tank.name=Рідкий резервуар
|
block.liquid-tank.name=Рідкий резервуар
|
||||||
@@ -527,14 +596,23 @@ block.bridge-conduit.name=Мостовий водопровід
|
|||||||
block.rotary-pump.name=Роторний насос
|
block.rotary-pump.name=Роторний насос
|
||||||
block.thorium-reactor.name=Торієвий реактор
|
block.thorium-reactor.name=Торієвий реактор
|
||||||
block.command-center.name=Командний центр
|
block.command-center.name=Командний центр
|
||||||
|
block.command-center.description=Дозволяє управляти бойовими одиницями. Або атакувати, або стояти на місці, або застрявати в блоках ...
|
||||||
block.mass-driver.name=Електромагнітна катапульта
|
block.mass-driver.name=Електромагнітна катапульта
|
||||||
|
block.mass-driver.description=При наявності енергії передають ресурси на відстань 100 блоків, стріляючи в один-одного.
|
||||||
block.blast-drill.name=Бурова установка
|
block.blast-drill.name=Бурова установка
|
||||||
block.thermal-pump.name=Тепловий насос
|
block.thermal-pump.name=Тепловий насос
|
||||||
block.dagger-pad.name=Стартовий майданчик дронів
|
block.dagger-pad.name=Завод дронів
|
||||||
block.titan-pad.name=Стартовий майданчик титанів
|
block.titan-pad.name=Завод титанів
|
||||||
block.thermal-generator.name=Тепловий генератор
|
block.thermal-generator.name=Тепловий генератор
|
||||||
|
block.thermal-generator.description=Гаряче сприймає на ура.
|
||||||
|
block.alloy-smelter.name=Сплавовий завод
|
||||||
|
block.mend-projector.name=Ремонту гранатомет
|
||||||
|
block.surge-wall.name=Хвиляста стіна
|
||||||
|
block.surge-wall-large.name=Велика хвиляста стіна
|
||||||
|
block.cyclone.name=Циклон
|
||||||
|
block.fuse.name=Підривник
|
||||||
unit.drone.name=Дрон
|
unit.drone.name=Дрон
|
||||||
unit.drone.description=Стартова бойова одиниця. З'являеться в основному за замовчуванням. Автоматично видобуває руди, збирає предмети і відновлює блоки.
|
unit.drone.description=Стартова бойова одиниця. З'являється в основному за замовчуванням. Автоматично видобуває руди, збирає предмети і відновлює блоки.
|
||||||
unit.fabricator.name=Складальник
|
unit.fabricator.name=Складальник
|
||||||
unit.fabricator.description=Покращений дрон. Автоматично видобуває руди, збирає предмети і відновлює блоки. Значно ефективніший, ніж дрон.
|
unit.fabricator.description=Покращений дрон. Автоматично видобуває руди, збирає предмети і відновлює блоки. Значно ефективніший, ніж дрон.
|
||||||
unit.dagger.name=Кинджал
|
unit.dagger.name=Кинджал
|
||||||
@@ -545,48 +623,3 @@ unit.monsoon.name=Мусон
|
|||||||
unit.monsoon.description=Важкий килимовий бомбардувальник. Використовує вибухонебезпечну речовину або піратит як боєприпаси.
|
unit.monsoon.description=Важкий килимовий бомбардувальник. Використовує вибухонебезпечну речовину або піратит як боєприпаси.
|
||||||
unit.interceptor.name=Винищувач-перехполювач
|
unit.interceptor.name=Винищувач-перехполювач
|
||||||
unit.interceptor.description=Швидка, ударна бойова одиниця, котра використовує набіг з відскоком
|
unit.interceptor.description=Швидка, ударна бойова одиниця, котра використовує набіг з відскоком
|
||||||
content.mech.name=Mechs
|
|
||||||
mech.alpha-mech.name=Alpha
|
|
||||||
mech.alpha-mech.weapon=Heavy Repeater
|
|
||||||
mech.alpha-mech.ability=Drone Swarm
|
|
||||||
mech.alpha-mech.description=The standard mech. Has decent speed and damage output; can create up to 3 drones for increased offensive capability.
|
|
||||||
mech.delta-mech.name=Delta
|
|
||||||
mech.delta-mech.weapon=Arc Generator
|
|
||||||
mech.delta-mech.ability=Discharge
|
|
||||||
mech.delta-mech.description=A fast, lightly-armored mech made for hit-and-run attacks. Does little damage against structures, but can kill large groups of enemy units very quickly with its arc lightning weapons.
|
|
||||||
mech.tau-mech.name=Tau
|
|
||||||
mech.tau-mech.weapon=Restruct Laser
|
|
||||||
mech.tau-mech.ability=Repair Burst
|
|
||||||
mech.tau-mech.description=The support mech. Heals allied blocks by shooting at them. Can extinguish fires and heal allies in a radius with its repair ability.
|
|
||||||
mech.omega-mech.name=Omega
|
|
||||||
mech.omega-mech.weapon=Swarm Missiles
|
|
||||||
mech.omega-mech.ability=Armored Configuration
|
|
||||||
mech.omega-mech.description=A bulky and well-armored mech, made for front-line assaults. Its armor ability can block up to 90% of incoming damage.
|
|
||||||
mech.dart-ship.name=Dart
|
|
||||||
mech.dart-ship.weapon=Repeater
|
|
||||||
mech.dart-ship.description=The standard ship. Reasonably fast and light, but has little offensive capability and low mining speed.
|
|
||||||
mech.javelin-ship.name=Javelin
|
|
||||||
mech.javelin-ship.description=A hit-and-run strike ship. While initially slow, it can accelerate to great speeds and fly by enemy outposts, dealing large amounts of damage with its lightning ability and missiles.
|
|
||||||
mech.javelin-ship.weapon=Burst Missiles
|
|
||||||
mech.javelin-ship.ability=Discharge Booster
|
|
||||||
mech.trident-ship.name=Trident
|
|
||||||
mech.trident-ship.description=A heavy bomber. Reasonably well armored.
|
|
||||||
mech.trident-ship.weapon=Bomb Bay
|
|
||||||
mech.glaive-ship.name=Glaive
|
|
||||||
mech.glaive-ship.description=A large, well-armored gunship. Equipped with an incendiary repeater. Good acceleration and maximum speed.
|
|
||||||
mech.glaive-ship.weapon=Flame Repeater
|
|
||||||
text.mech.weapon=[LIGHT_GRAY]Weapon: {0}
|
|
||||||
text.mech.armor=[LIGHT_GRAY]Armor: {0}
|
|
||||||
text.mech.itemcapacity=[LIGHT_GRAY]Item Capacity: {0}
|
|
||||||
text.mech.minespeed=[LIGHT_GRAY]Mining Speed: {0}
|
|
||||||
text.mech.minepower=[LIGHT_GRAY]Mining Power: {0}
|
|
||||||
text.mech.ability=[LIGHT_GRAY]Ability: {0}
|
|
||||||
block.core.name=Core
|
|
||||||
block.metalfloor.name=Metal Floor
|
|
||||||
block.trident-ship-factory.name=Trident Ship Reconstructor
|
|
||||||
block.glaive-ship-factory.name=Glaive Ship Reconstructor
|
|
||||||
block.omega-mech-factory.name=Omega Mech Reconstructor
|
|
||||||
block.tau-mech-factory.name=Tau Mech Reconstructor
|
|
||||||
block.alloy-smelter.name=Alloy Smtler
|
|
||||||
block.mend-projector.name=Mend Projector
|
|
||||||
unit.alpha-drone.name=Alpha Drone
|
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ text.players.single={0} 玩家在线
|
|||||||
text.server.mismatch=Packet error: 可能是客户端/服务器版本不匹配\n请确保你和房主\n都安装了最新版 Mindustry!
|
text.server.mismatch=Packet error: 可能是客户端/服务器版本不匹配\n请确保你和房主\n都安装了最新版 Mindustry!
|
||||||
text.server.closing=[accent]正在关闭服务器...
|
text.server.closing=[accent]正在关闭服务器...
|
||||||
text.server.kicked.kick=你被踢出服务器了!
|
text.server.kicked.kick=你被踢出服务器了!
|
||||||
text.server.kicked.fastShoot=你发射得太快了!
|
|
||||||
text.server.kicked.clientOutdated=客户端版本过旧!请升级!
|
text.server.kicked.clientOutdated=客户端版本过旧!请升级!
|
||||||
text.server.kicked.serverOutdated=服务器版本过旧!请联系房主升级!
|
text.server.kicked.serverOutdated=服务器版本过旧!请联系房主升级!
|
||||||
text.server.kicked.banned=你被这个服务器拉黑了。
|
text.server.kicked.banned=你被这个服务器拉黑了。
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=钍反应堆
|
|||||||
block.alloy-smelter.name=合金冶炼厂
|
block.alloy-smelter.name=合金冶炼厂
|
||||||
block.mend-projector.name=修理投影机
|
block.mend-projector.name=修理投影机
|
||||||
unit.alpha-drone.name=Alpha 无人机
|
unit.alpha-drone.name=Alpha 无人机
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ text.players.single={0} 個線上玩家
|
|||||||
text.server.mismatch=封包錯誤:客戶端與伺服器版本可能不相符。確保您和伺服主都有最新版本的 Mindustry!
|
text.server.mismatch=封包錯誤:客戶端與伺服器版本可能不相符。確保您和伺服主都有最新版本的 Mindustry!
|
||||||
text.server.closing=[accent] 正在關閉伺服器...
|
text.server.closing=[accent] 正在關閉伺服器...
|
||||||
text.server.kicked.kick=您已被踢出伺服器!
|
text.server.kicked.kick=您已被踢出伺服器!
|
||||||
text.server.kicked.fastShoot=您射擊的太快了!
|
|
||||||
text.server.kicked.clientOutdated=客戶端版本過舊!請更新遊戲!
|
text.server.kicked.clientOutdated=客戶端版本過舊!請更新遊戲!
|
||||||
text.server.kicked.serverOutdated=伺服器版本過舊!請聯絡伺服主更新伺服器!
|
text.server.kicked.serverOutdated=伺服器版本過舊!請聯絡伺服主更新伺服器!
|
||||||
text.server.kicked.banned=您已經從這個伺服器被封禁。
|
text.server.kicked.banned=您已經從這個伺服器被封禁。
|
||||||
@@ -590,3 +589,11 @@ block.thorium-reactor.name=Thorium Reactor
|
|||||||
block.alloy-smelter.name=Alloy Smtler
|
block.alloy-smelter.name=Alloy Smtler
|
||||||
block.mend-projector.name=Mend Projector
|
block.mend-projector.name=Mend Projector
|
||||||
unit.alpha-drone.name=Alpha Drone
|
unit.alpha-drone.name=Alpha Drone
|
||||||
|
text.construction.desktop=Desktop controls have been changed.\nTo deselect a block or stop building, [accent]use space[].
|
||||||
|
keybind.press=Press a key...
|
||||||
|
keybind.press.axis=Press an axis or key...
|
||||||
|
keybind.deselect.name=Deselect
|
||||||
|
block.surge-wall.name=Surge Wall
|
||||||
|
block.surge-wall-large.name=Large Surge Wall
|
||||||
|
block.cyclone.name=Cyclone
|
||||||
|
block.fuse.name=Fuse
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision highp float;
|
precision mediump float;
|
||||||
precision highp int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D u_texture;
|
uniform sampler2D u_texture;
|
||||||
uniform vec2 u_resolution;
|
uniform vec2 u_resolution;
|
||||||
uniform float u_time;
|
uniform int u_time;
|
||||||
uniform vec2 u_uv;
|
uniform vec2 u_uv;
|
||||||
uniform vec2 u_uv2;
|
uniform vec2 u_uv2;
|
||||||
uniform float u_scl;
|
uniform float u_scl;
|
||||||
@@ -14,20 +14,20 @@ varying vec4 v_color;
|
|||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec2 coords = ((v_texCoord.xy - u_uv) / (u_uv2 - u_uv) - vec2(0.5, 0.5)) * u_resolution/u_scl;
|
ivec2 coords = ivec2((gl_FragCoord.xy - u_resolution/2.0)/u_scl);
|
||||||
|
|
||||||
float roundx = 8.0;
|
int roundx = 8;
|
||||||
float roundy = roundx;
|
int roundy = roundx;
|
||||||
float roundm = 0.2;
|
float roundm = 0.2;
|
||||||
|
|
||||||
coords.x = float(int(coords.x / roundx)) * roundx;
|
coords.x = (coords.x / roundx) * roundx;
|
||||||
coords.y = float(int(coords.y / roundy)) * roundy;
|
coords.y = (coords.y / roundy) * roundy;
|
||||||
|
|
||||||
float d = abs(coords.x) - abs(coords.y);
|
float d = (abs(float(coords.x)) - abs(float(coords.y)));
|
||||||
|
|
||||||
float m = abs(sin(-u_time/50.0 + d/120.0));
|
float m = abs(sin(-float(u_time)/50.0 + d/120.0));
|
||||||
m = float(int(m / roundm)) * roundm + roundm;
|
m = float(int(m / roundm)) * roundm + roundm;
|
||||||
|
|
||||||
gl_FragColor.rgb = mix(v_color.rgb, vec3(0.0), m);
|
gl_FragColor.rgb = mix(v_color.rgb, vec3(0.0), m);
|
||||||
gl_FragColor.a = mod(abs(coords.x) + abs(coords.y), 110.0) < 35.0 ? 1.0 : 0.0;
|
gl_FragColor.a = mod(abs(float(coords.x)) + abs(float(coords.y)), 110.0) < 35.0 ? 1.0 : 0.0;
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
@@ -25,6 +25,7 @@ import io.anuke.ucore.scene.ui.layout.Unit;
|
|||||||
import io.anuke.ucore.util.OS;
|
import io.anuke.ucore.util.OS;
|
||||||
import io.anuke.ucore.util.Translator;
|
import io.anuke.ucore.util.Translator;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class Vars{
|
public class Vars{
|
||||||
@@ -37,7 +38,6 @@ public class Vars{
|
|||||||
//team of the enemy in waves
|
//team of the enemy in waves
|
||||||
public static final Team waveTeam = Team.red;
|
public static final Team waveTeam = Team.red;
|
||||||
|
|
||||||
//discord group URL
|
|
||||||
public static final String discordURL = "https://discord.gg/mindustry";
|
public static final String discordURL = "https://discord.gg/mindustry";
|
||||||
public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases";
|
public static final String releasesURL = "https://api.github.com/repos/Anuken/Mindustry/releases";
|
||||||
public static final String crashReportURL = "http://mindustry.us.to/report";
|
public static final String crashReportURL = "http://mindustry.us.to/report";
|
||||||
@@ -147,6 +147,8 @@ public class Vars{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Arrays.sort(locales, (l1, l2) -> Platform.instance.getLocaleName(l1).compareTo(Platform.instance.getLocaleName(l2)));
|
||||||
|
|
||||||
Version.init();
|
Version.init();
|
||||||
|
|
||||||
playerGroup = Entities.addGroup(Player.class).enableMapping();
|
playerGroup = Entities.addGroup(Player.class).enableMapping();
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class Mechs implements ContentList{
|
|||||||
boostSpeed = 0.8f;
|
boostSpeed = 0.8f;
|
||||||
weapon = Weapons.healBlaster;
|
weapon = Weapons.healBlaster;
|
||||||
maxSpeed = 5f;
|
maxSpeed = 5f;
|
||||||
armor = 35f;
|
armor = 15f;
|
||||||
altChargeAlpha = 0.05f;
|
altChargeAlpha = 0.05f;
|
||||||
trailColorTo = Palette.heal;
|
trailColorTo = Palette.heal;
|
||||||
}
|
}
|
||||||
@@ -150,8 +150,6 @@ public class Mechs implements ContentList{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateAlt(Player player){
|
public void updateAlt(Player player){
|
||||||
//idle regen
|
|
||||||
player.healBy(0.01f * Timers.delta());
|
|
||||||
|
|
||||||
if(player.altHeat >= 0.91f){
|
if(player.altHeat >= 0.91f){
|
||||||
Effects.effect(UnitFx.healWave, player);
|
Effects.effect(UnitFx.healWave, player);
|
||||||
@@ -197,7 +195,7 @@ public class Mechs implements ContentList{
|
|||||||
weapon = Weapons.swarmer;
|
weapon = Weapons.swarmer;
|
||||||
trailColorTo = Color.valueOf("feb380");
|
trailColorTo = Color.valueOf("feb380");
|
||||||
maxSpeed = 3.5f;
|
maxSpeed = 3.5f;
|
||||||
armor = 50f;
|
armor = 45f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package io.anuke.mindustry.content;
|
|||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import io.anuke.mindustry.content.blocks.*;
|
import io.anuke.mindustry.content.blocks.*;
|
||||||
import io.anuke.mindustry.game.Content;
|
import io.anuke.mindustry.game.Content;
|
||||||
import io.anuke.mindustry.game.GameMode;
|
import io.anuke.mindustry.type.ContentList;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.ItemStack;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.type.Recipe;
|
||||||
|
|
||||||
import static io.anuke.mindustry.type.Category.*;
|
import static io.anuke.mindustry.type.Category.*;
|
||||||
|
|
||||||
@@ -145,14 +145,14 @@ public class Recipes implements ContentList{
|
|||||||
new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130));
|
new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130));
|
||||||
new Recipe(units, UnitBlocks.fabricatorPad, new ItemStack(Items.densealloy, 90), new ItemStack(Items.thorium, 80), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 210));
|
new Recipe(units, UnitBlocks.fabricatorPad, new ItemStack(Items.densealloy, 90), new ItemStack(Items.thorium, 80), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 210));
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.daggerPad, new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 70)).setMode(GameMode.noWaves);
|
new Recipe(units, UnitBlocks.daggerPad, new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 70)).setPad();
|
||||||
new Recipe(units, UnitBlocks.titanPad, new ItemStack(Items.thorium, 90), new ItemStack(Items.lead, 140), new ItemStack(Items.silicon, 90)).setMode(GameMode.noWaves);
|
new Recipe(units, UnitBlocks.titanPad, new ItemStack(Items.thorium, 90), new ItemStack(Items.lead, 140), new ItemStack(Items.silicon, 90)).setPad();
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.interceptorPad, new ItemStack(Items.titanium, 60), new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 90)).setMode(GameMode.noWaves);
|
new Recipe(units, UnitBlocks.interceptorPad, new ItemStack(Items.titanium, 60), new ItemStack(Items.lead, 80), new ItemStack(Items.silicon, 90)).setPad();
|
||||||
new Recipe(units, UnitBlocks.monsoonPad, new ItemStack(Items.plastanium, 80), new ItemStack(Items.titanium, 100), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 220)).setMode(GameMode.noWaves);
|
new Recipe(units, UnitBlocks.monsoonPad, new ItemStack(Items.plastanium, 80), new ItemStack(Items.titanium, 100), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 220)).setPad();
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.copper, 30), new ItemStack(Items.silicon, 30));
|
new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.copper, 30), new ItemStack(Items.silicon, 30));
|
||||||
new Recipe(units, UnitBlocks.commandCenter, new ItemStack(Items.lead, 100), new ItemStack(Items.densealloy, 100), new ItemStack(Items.silicon, 200)).setMode(GameMode.noWaves);
|
new Recipe(units, UnitBlocks.commandCenter, new ItemStack(Items.lead, 100), new ItemStack(Items.densealloy, 100), new ItemStack(Items.silicon, 200)).setPad();
|
||||||
|
|
||||||
//LIQUIDS
|
//LIQUIDS
|
||||||
new Recipe(liquid, LiquidBlocks.conduit, new ItemStack(Items.lead, 1)).setDependencies(CraftingBlocks.smelter);
|
new Recipe(liquid, LiquidBlocks.conduit, new ItemStack(Items.lead, 1)).setDependencies(CraftingBlocks.smelter);
|
||||||
@@ -176,43 +176,6 @@ public class Recipes implements ContentList{
|
|||||||
new Recipe(units, DebugBlocks.powerInfinite).setDebug();
|
new Recipe(units, DebugBlocks.powerInfinite).setDebug();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init(Object... objects){
|
|
||||||
Category cat = null;
|
|
||||||
Block block = null;
|
|
||||||
ItemStack stack = null;
|
|
||||||
Array<ItemStack> arr = new Array<>();
|
|
||||||
for(Object object : objects){
|
|
||||||
if(object instanceof Category){
|
|
||||||
if(stack != null) throw new RuntimeException("Finish defining stack before beginning category");
|
|
||||||
if(block != null){
|
|
||||||
new Recipe(cat, block, arr.toArray(ItemStack.class));
|
|
||||||
block = null;
|
|
||||||
stack = null;
|
|
||||||
arr.clear();
|
|
||||||
}
|
|
||||||
cat = (Category) object;
|
|
||||||
}else if(object instanceof Block){
|
|
||||||
if(cat == null) throw new RuntimeException("Finish defining category before beginning blocks");
|
|
||||||
if(block != null){
|
|
||||||
new Recipe(cat, block, arr.toArray(ItemStack.class));
|
|
||||||
stack = null;
|
|
||||||
arr.clear();
|
|
||||||
}
|
|
||||||
block = (Block) object;
|
|
||||||
arr.clear();
|
|
||||||
}else if(object instanceof Item){
|
|
||||||
if(block == null) throw new RuntimeException("Finish defining block before defining item");
|
|
||||||
if(stack != null) throw new RuntimeException("Finish defining stack before defining another stack");
|
|
||||||
stack = new ItemStack((Item) object, 1);
|
|
||||||
}else if(object instanceof Integer){
|
|
||||||
if(stack == null) throw new RuntimeException("Finish defining item before defining item amount");
|
|
||||||
stack.amount = (Integer) object;
|
|
||||||
arr.add(stack);
|
|
||||||
stack = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Array<? extends Content> getAll(){
|
public Array<? extends Content> getAll(){
|
||||||
return Recipe.all();
|
return Recipe.all();
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ public class Weapons implements ContentList{
|
|||||||
reload = 60f;
|
reload = 60f;
|
||||||
shots = 4;
|
shots = 4;
|
||||||
inaccuracy = 2f;
|
inaccuracy = 2f;
|
||||||
roundrobin = false;
|
|
||||||
roundrobin = true;
|
roundrobin = true;
|
||||||
ejectEffect = Fx.none;
|
ejectEffect = Fx.none;
|
||||||
velocityRnd = 0.2f;
|
velocityRnd = 0.2f;
|
||||||
@@ -75,7 +74,6 @@ public class Weapons implements ContentList{
|
|||||||
shots = 4;
|
shots = 4;
|
||||||
spacing = 8f;
|
spacing = 8f;
|
||||||
inaccuracy = 8f;
|
inaccuracy = 8f;
|
||||||
roundrobin = false;
|
|
||||||
roundrobin = true;
|
roundrobin = true;
|
||||||
ejectEffect = Fx.none;
|
ejectEffect = Fx.none;
|
||||||
shake = 3f;
|
shake = 3f;
|
||||||
|
|||||||
@@ -73,12 +73,13 @@ public class PowerBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
powerNode = new PowerNode("power-node"){{
|
powerNode = new PowerNode("power-node"){{
|
||||||
shadow = "shadow-round-1";
|
shadow = "shadow-round-1";
|
||||||
|
powerSpeed = 0.5f;
|
||||||
maxNodes = 4;
|
maxNodes = 4;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
powerNodeLarge = new PowerNode("power-node-large"){{
|
powerNodeLarge = new PowerNode("power-node-large"){{
|
||||||
size = 2;
|
size = 2;
|
||||||
powerSpeed = 1f;
|
powerSpeed = 1.5f;
|
||||||
maxNodes = 6;
|
maxNodes = 6;
|
||||||
laserRange = 7.5f;
|
laserRange = 7.5f;
|
||||||
shadow = "shadow-round-2";
|
shadow = "shadow-round-2";
|
||||||
|
|||||||
@@ -44,10 +44,10 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
hail = new ArtilleryTurret("hail"){{
|
hail = new ArtilleryTurret("hail"){{
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary};
|
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary};
|
||||||
reload = 100f;
|
reload = 80f;
|
||||||
recoil = 2f;
|
recoil = 2f;
|
||||||
range = 200f;
|
range = 230f;
|
||||||
inaccuracy = 5f;
|
inaccuracy = 1f;
|
||||||
health = 120;
|
health = 120;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
restitution = 0.02f;
|
restitution = 0.02f;
|
||||||
recoil = 6f;
|
recoil = 6f;
|
||||||
shootShake = 2f;
|
shootShake = 2f;
|
||||||
range = 300f;
|
range = 320f;
|
||||||
|
|
||||||
health = 550;
|
health = 550;
|
||||||
}};
|
}};
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class MissileBullets extends BulletList implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
swarm = new MissileBulletType(2.7f, 14, "missile"){
|
swarm = new MissileBulletType(2.7f, 12, "missile"){
|
||||||
{
|
{
|
||||||
bulletWidth = 8f;
|
bulletWidth = 8f;
|
||||||
bulletHeight = 8f;
|
bulletHeight = 8f;
|
||||||
@@ -105,7 +105,7 @@ public class MissileBullets extends BulletList implements ContentList{
|
|||||||
homingRange = 60f;
|
homingRange = 60f;
|
||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f;
|
||||||
splashDamage = 11f;
|
splashDamage = 10f;
|
||||||
lifetime = 120f;
|
lifetime = 120f;
|
||||||
trailColor = Color.GRAY;
|
trailColor = Color.GRAY;
|
||||||
backColor = Palette.bulletYellowBack;
|
backColor = Palette.bulletYellowBack;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class TurretBullets extends BulletList implements ContentList{
|
|||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
|
|
||||||
healBullet = new BulletType(5.2f, 19){
|
healBullet = new BulletType(5.2f, 13){
|
||||||
float healAmount = 21f;
|
float healAmount = 21f;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ public class Control extends Module{
|
|||||||
|
|
||||||
for(int i = 0; i < Recipe.all().size; i++){
|
for(int i = 0; i < Recipe.all().size; i++){
|
||||||
Recipe recipe = Recipe.all().get(i);
|
Recipe recipe = Recipe.all().get(i);
|
||||||
if(!recipe.debugOnly && entity.items.has(recipe.requirements, 1.4f)){
|
if(!recipe.debugOnly && recipe.requirements != null && entity.items.has(recipe.requirements, 1.4f)){
|
||||||
if(control.database().unlockContent(recipe)){
|
if(control.database().unlockContent(recipe)){
|
||||||
ui.hudfrag.showUnlock(recipe);
|
ui.hudfrag.showUnlock(recipe);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,8 +199,10 @@ public class NetClient extends Module{
|
|||||||
|
|
||||||
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
||||||
public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, int totalLength, int base){
|
public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, int totalLength, int base){
|
||||||
|
int totalChunks = Mathf.ceil((float) totalLength / NetServer.maxSnapshotSize);
|
||||||
|
|
||||||
if(NetServer.debugSnapshots)
|
if(NetServer.debugSnapshots)
|
||||||
Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID);
|
Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} / "+totalChunks+" totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID);
|
||||||
|
|
||||||
//skip snapshot IDs that have already been recieved OR snapshots that are too far in front
|
//skip snapshot IDs that have already been recieved OR snapshots that are too far in front
|
||||||
if(base != -1 && (snapshotID < netClient.lastSnapshotBaseID || !netClient.recievedSnapshots.containsKey(base))){
|
if(base != -1 && (snapshotID < netClient.lastSnapshotBaseID || !netClient.recievedSnapshots.containsKey(base))){
|
||||||
@@ -214,10 +216,9 @@ public class NetClient extends Module{
|
|||||||
//total length exceeds that needed to hold one snapshot, therefore, it is split into chunks
|
//total length exceeds that needed to hold one snapshot, therefore, it is split into chunks
|
||||||
if(totalLength > NetServer.maxSnapshotSize){
|
if(totalLength > NetServer.maxSnapshotSize){
|
||||||
//total amount of chunks to recieve
|
//total amount of chunks to recieve
|
||||||
int totalChunks = Mathf.ceil((float) totalLength / NetServer.maxSnapshotSize);
|
|
||||||
|
|
||||||
//reset status when a new snapshot sending begins
|
//reset status when a new snapshot sending begins
|
||||||
if(netClient.currentSnapshotID != snapshotID){
|
if(netClient.currentSnapshotID != snapshotID || netClient.recievedChunks == null || netClient.recievedChunks.length != totalChunks){
|
||||||
netClient.currentSnapshotID = snapshotID;
|
netClient.currentSnapshotID = snapshotID;
|
||||||
netClient.currentSnapshot = new byte[totalLength];
|
netClient.currentSnapshot = new byte[totalLength];
|
||||||
netClient.recievedChunkCounter = 0;
|
netClient.recievedChunkCounter = 0;
|
||||||
|
|||||||
@@ -155,12 +155,10 @@ public class Renderer extends RendererModule{
|
|||||||
}else{
|
}else{
|
||||||
Vector2 position = averagePosition();
|
Vector2 position = averagePosition();
|
||||||
|
|
||||||
if(!mobile){
|
if(players[0].isDead()){
|
||||||
if(players[0].isDead()){
|
smoothCamera(position.x + 0.0001f, position.y + 0.0001f, 0.08f);
|
||||||
smoothCamera(position.x + 0.0001f, position.y + 0.0001f, 0.08f);
|
}else if(!mobile){
|
||||||
}else{
|
setCamera(position.x + 0.0001f, position.y + 0.0001f);
|
||||||
setCamera(position.x + 0.0001f, position.y + 0.0001f);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(world.getSector() == null){
|
if(world.getSector() == null){
|
||||||
@@ -417,9 +415,7 @@ public class Renderer extends RendererModule{
|
|||||||
public Vector2 averagePosition(){
|
public Vector2 averagePosition(){
|
||||||
avgPosition.setZero();
|
avgPosition.setZero();
|
||||||
|
|
||||||
drawAndInterpolate(playerGroup, p -> p.isLocal, p -> {
|
drawAndInterpolate(playerGroup, p -> p.isLocal, p -> avgPosition.add(p.x, p.y));
|
||||||
avgPosition.add(p.x, p.y);
|
|
||||||
});
|
|
||||||
|
|
||||||
avgPosition.scl(1f / players.length);
|
avgPosition.scl(1f / players.length);
|
||||||
return avgPosition;
|
return avgPosition;
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ public class UI extends SceneModule{
|
|||||||
font.setUseIntegerPositions(false);
|
font.setUseIntegerPositions(false);
|
||||||
font.getData().setScale(Vars.fontScale);
|
font.getData().setScale(Vars.fontScale);
|
||||||
font.getData().down += Unit.dp.scl(4f);
|
font.getData().down += Unit.dp.scl(4f);
|
||||||
font.getData().lineHeight -= Unit.dp.scl(2f);
|
font.getData().lineHeight -= Unit.dp.scl(4.3f);
|
||||||
}, skin.font(), skin.getFont("default-font-chat"), skin.getFont("korean"), skin.getFont("trad-chinese"), skin.getFont("simp-chinese"));
|
}, skin.font(), skin.getFont("default-font-chat"), skin.getFont("korean"), skin.getFont("trad-chinese"), skin.getFont("simp-chinese"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import io.anuke.mindustry.world.Block;
|
|||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.Floor;
|
import io.anuke.mindustry.world.blocks.Floor;
|
||||||
import io.anuke.mindustry.world.blocks.storage.CoreBlock.CoreEntity;
|
import io.anuke.mindustry.world.blocks.storage.CoreBlock.CoreEntity;
|
||||||
import io.anuke.mindustry.world.blocks.units.MechFactory;
|
|
||||||
import io.anuke.ucore.core.*;
|
import io.anuke.ucore.core.*;
|
||||||
import io.anuke.ucore.entities.EntityGroup;
|
import io.anuke.ucore.entities.EntityGroup;
|
||||||
import io.anuke.ucore.entities.trait.SolidTrait;
|
import io.anuke.ucore.entities.trait.SolidTrait;
|
||||||
@@ -74,7 +73,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
private Tile mining;
|
private Tile mining;
|
||||||
private CarriableTrait carrying;
|
private CarriableTrait carrying;
|
||||||
private Trail trail = new Trail(12);
|
private Trail trail = new Trail(12);
|
||||||
private Vector2 movement = new Vector2();
|
private Vector2 movement = new Translator();
|
||||||
private boolean moved;
|
private boolean moved;
|
||||||
|
|
||||||
public Player(){
|
public Player(){
|
||||||
@@ -227,10 +226,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
public void set(float x, float y){
|
public void set(float x, float y){
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
|
|
||||||
if(isFlying() && isLocal){
|
|
||||||
Core.camera.position.set(x, y, 0f);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -612,12 +607,17 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
if(moveTarget != null && !moveTarget.isDead()){
|
if(moveTarget != null && !moveTarget.isDead()){
|
||||||
targetX = moveTarget.getX();
|
targetX = moveTarget.getX();
|
||||||
targetY = moveTarget.getY();
|
targetY = moveTarget.getY();
|
||||||
|
boolean tapping = moveTarget instanceof TileEntity && moveTarget.getTeam() == team;
|
||||||
attractDst = 0f;
|
attractDst = 0f;
|
||||||
|
|
||||||
|
if(tapping){
|
||||||
|
velocity.setAngle(Mathf.slerpDelta(velocity.angle(), angleTo(moveTarget), 0.1f));
|
||||||
|
}
|
||||||
|
|
||||||
if(distanceTo(moveTarget) < 2f){
|
if(distanceTo(moveTarget) < 2f){
|
||||||
if(moveTarget instanceof CarriableTrait){
|
if(moveTarget instanceof CarriableTrait){
|
||||||
carry((CarriableTrait) moveTarget);
|
carry((CarriableTrait) moveTarget);
|
||||||
}else if(moveTarget instanceof TileEntity && ((TileEntity) moveTarget).tile.block() instanceof MechFactory){
|
}else if(tapping){
|
||||||
Tile tile = ((TileEntity) moveTarget).tile;
|
Tile tile = ((TileEntity) moveTarget).tile;
|
||||||
tile.block().tapped(tile, this);
|
tile.block().tapped(tile, this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDead(){
|
public boolean isDead(){
|
||||||
return dead;
|
return dead || tile.entity != this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void write(DataOutputStream stream) throws IOException{
|
public void write(DataOutputStream stream) throws IOException{
|
||||||
@@ -127,6 +127,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
tile.block().handleBulletHit(this, other);
|
tile.block().handleBulletHit(this, other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void kill(){
|
||||||
|
Call.onTileDestroyed(tile);
|
||||||
|
}
|
||||||
|
|
||||||
public void damage(float damage){
|
public void damage(float damage){
|
||||||
if(dead) return;
|
if(dead) return;
|
||||||
|
|
||||||
@@ -251,9 +255,9 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
if(health <= 0){
|
if(health <= 0){
|
||||||
onDeath();
|
onDeath();
|
||||||
}
|
}
|
||||||
|
Block previous = tile.block();
|
||||||
tile.block().update(tile);
|
tile.block().update(tile);
|
||||||
if(cons != null){
|
if(tile.block() == previous && cons != null){
|
||||||
cons.update(this);
|
cons.update(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ public class Bullet extends BulletEntity<BulletType> implements TeamTrait, SyncT
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean collides(SolidTrait other){
|
public boolean collides(SolidTrait other){
|
||||||
return type.collides && super.collides(other);
|
return type.collides && super.collides(other) && !supressCollision;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -208,6 +208,14 @@ public class Bullet extends BulletEntity<BulletType> implements TeamTrait, SyncT
|
|||||||
supressCollision = false;
|
supressCollision = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateLife(){
|
||||||
|
if(time >= type.lifetime){
|
||||||
|
if(!supressCollision) type.despawned(this);
|
||||||
|
remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset(){
|
public void reset(){
|
||||||
super.reset();
|
super.reset();
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
|||||||
|
|
||||||
vec.set(target.getX() - x, target.getY() - y);
|
vec.set(target.getX() - x, target.getY() - y);
|
||||||
|
|
||||||
float length = Mathf.clamp((distanceTo(target) - circleLength) / 100f, -1f, 1f);
|
float length = circleLength <= 0.001f ? 1f : Mathf.clamp((distanceTo(target) - circleLength) / 100f, -1f, 1f);
|
||||||
|
|
||||||
vec.setLength(type.speed * Timers.delta() * length);
|
vec.setLength(type.speed * Timers.delta() * length);
|
||||||
if(length < 0) vec.rotate(180f);
|
if(length < 0) vec.rotate(180f);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import io.anuke.mindustry.graphics.Palette;
|
|||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.type.ItemStack;
|
import io.anuke.mindustry.type.ItemStack;
|
||||||
|
import io.anuke.mindustry.type.ItemType;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock;
|
import io.anuke.mindustry.world.blocks.BuildBlock;
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
||||||
@@ -190,7 +191,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{
|
|||||||
public void update(){
|
public void update(){
|
||||||
ItemDrop item = (ItemDrop) target;
|
ItemDrop item = (ItemDrop) target;
|
||||||
|
|
||||||
if(item == null || inventory.isFull() || !inventory.canAcceptItem(item.getItem(), 1)){
|
if(item == null || inventory.isFull() || item.getItem().type != ItemType.material || !inventory.canAcceptItem(item.getItem(), 1)){
|
||||||
setState(drop);
|
setState(drop);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -220,6 +221,12 @@ public class Drone extends FlyingUnit implements BuilderTrait{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(inventory.getItem().item.type != ItemType.material){
|
||||||
|
inventory.clearItem();
|
||||||
|
setState(mine);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
target = getClosestCore();
|
target = getClosestCore();
|
||||||
|
|
||||||
if(target == null) return;
|
if(target == null) return;
|
||||||
|
|||||||
@@ -15,8 +15,10 @@ public enum GameMode{
|
|||||||
disableWaves = true;
|
disableWaves = true;
|
||||||
hidden = true;
|
hidden = true;
|
||||||
autoSpawn = true;
|
autoSpawn = true;
|
||||||
|
showPads = true;
|
||||||
}},
|
}},
|
||||||
pvp{{
|
pvp{{
|
||||||
|
showPads = true;
|
||||||
disableWaves = true;
|
disableWaves = true;
|
||||||
isPvp = true;
|
isPvp = true;
|
||||||
hidden = true;
|
hidden = true;
|
||||||
@@ -24,7 +26,7 @@ public enum GameMode{
|
|||||||
respawnTime = 60 * 10;
|
respawnTime = 60 * 10;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
public boolean infiniteResources, disableWaveTimer, disableWaves, hidden, autoSpawn, isPvp;
|
public boolean infiniteResources, disableWaveTimer, disableWaves, hidden, autoSpawn, isPvp, showPads;
|
||||||
public float enemyCoreBuildRadius = 400f;
|
public float enemyCoreBuildRadius = 400f;
|
||||||
public float enemyCoreShieldRadius = 140f;
|
public float enemyCoreShieldRadius = 140f;
|
||||||
public float respawnTime = 60 * 4;
|
public float respawnTime = 60 * 4;
|
||||||
|
|||||||
@@ -53,8 +53,10 @@ public class Shaders{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(){
|
public void apply(){
|
||||||
|
time = time % 158;
|
||||||
|
|
||||||
shader.setUniformf("u_resolution", Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
shader.setUniformf("u_resolution", Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||||
shader.setUniformf("u_time", time += Gdx.graphics.getDeltaTime() * 60f);
|
shader.setUniformi("u_time", (int)(time += Gdx.graphics.getDeltaTime() * 60f));
|
||||||
shader.setUniformf("u_uv", Draw.getBlankRegion().getU(), Draw.getBlankRegion().getV());
|
shader.setUniformf("u_uv", Draw.getBlankRegion().getU(), Draw.getBlankRegion().getV());
|
||||||
shader.setUniformf("u_scl", Unit.dp.scl(1f));
|
shader.setUniformf("u_scl", Unit.dp.scl(1f));
|
||||||
shader.setUniformf("u_uv2", Draw.getBlankRegion().getU2(), Draw.getBlankRegion().getV2());
|
shader.setUniformf("u_uv2", Draw.getBlankRegion().getU2(), Draw.getBlankRegion().getV2());
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package io.anuke.mindustry.graphics;
|
|||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.utils.FloatArray;
|
import com.badlogic.gdx.utils.FloatArray;
|
||||||
|
import io.anuke.ucore.core.Timers;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.graphics.Fill;
|
import io.anuke.ucore.graphics.Fill;
|
||||||
import io.anuke.ucore.graphics.Lines;
|
import io.anuke.ucore.graphics.Lines;
|
||||||
@@ -28,7 +29,7 @@ public class Trail{
|
|||||||
|
|
||||||
points.add(curx, cury);
|
points.add(curx, cury);
|
||||||
|
|
||||||
if(points.size > length * 2){
|
if(points.size > (int)(length * 2 / Math.min(Timers.delta(), 1f))){
|
||||||
float[] items = points.items;
|
float[] items = points.items;
|
||||||
System.arraycopy(items, 2, items, 0, points.size - 2);
|
System.arraycopy(items, 2, items, 0, points.size - 2);
|
||||||
points.size -= 2;
|
points.size -= 2;
|
||||||
|
|||||||
@@ -20,21 +20,22 @@ public class Changelogs{
|
|||||||
String description = value.getString("body").replace("\r", "");
|
String description = value.getString("body").replace("\r", "");
|
||||||
int id = value.getInt("id");
|
int id = value.getInt("id");
|
||||||
int build = Integer.parseInt(value.getString("tag_name").substring(1));
|
int build = Integer.parseInt(value.getString("tag_name").substring(1));
|
||||||
out.add(new VersionInfo(name, description, id, build));
|
out.add(new VersionInfo(name, description, id, build, value.getString("published_at")));
|
||||||
}
|
}
|
||||||
success.accept(out);
|
success.accept(out);
|
||||||
}, fail);
|
}, fail);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class VersionInfo{
|
public static class VersionInfo{
|
||||||
public final String name, description;
|
public final String name, description, date;
|
||||||
public final int id, build;
|
public final int id, build;
|
||||||
|
|
||||||
public VersionInfo(String name, String description, int id, int build){
|
public VersionInfo(String name, String description, int id, int build, String date){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.build = build;
|
this.build = build;
|
||||||
|
this.date = date;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import io.anuke.mindustry.world.consumers.ConsumePower;
|
|||||||
import io.anuke.ucore.function.BiFunction;
|
import io.anuke.ucore.function.BiFunction;
|
||||||
import io.anuke.ucore.function.IntPositionConsumer;
|
import io.anuke.ucore.function.IntPositionConsumer;
|
||||||
import io.anuke.ucore.function.TriFunction;
|
import io.anuke.ucore.function.TriFunction;
|
||||||
|
import io.anuke.ucore.util.Geometry;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
public class FortressGenerator{
|
public class FortressGenerator{
|
||||||
@@ -196,11 +197,21 @@ public class FortressGenerator{
|
|||||||
//big turrets
|
//big turrets
|
||||||
seeder.get(bigTurret, tile -> tile.block() instanceof StorageBlock && gen.random.chance(0.65)),
|
seeder.get(bigTurret, tile -> tile.block() instanceof StorageBlock && gen.random.chance(0.65)),
|
||||||
|
|
||||||
//walls (large)
|
|
||||||
seeder.get(wallLarge, tile -> !(tile.block() instanceof Wall) && !(tile.block() instanceof UnitPad)),
|
|
||||||
|
|
||||||
//walls
|
//walls
|
||||||
seeder.get(wall, tile -> !(tile.block() instanceof Wall) && !(tile.block() instanceof UnitPad)),
|
(x, y) -> {
|
||||||
|
if(!gen.canPlace(x, y, wall)) return;
|
||||||
|
|
||||||
|
for(GridPoint2 point : Geometry.d8){
|
||||||
|
Tile tile = gen.tile(x + point.x, y + point.y);
|
||||||
|
if(tile != null){
|
||||||
|
tile = tile.target();
|
||||||
|
if(tile.getTeamID() == team.ordinal() && !(tile.block() instanceof Wall) && !(tile.block() instanceof UnitPad)){
|
||||||
|
gen.setBlock(x, y, wall, team);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
//fill up turrets w/ ammo
|
//fill up turrets w/ ammo
|
||||||
(x, y) -> {
|
(x, y) -> {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class Generation{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!block.isValid(tiles[worldx][worldy])) continue;
|
if(!block.isValid(tiles[worldx][worldy]) || tiles[worldx][worldy].floor().drops == null) continue;
|
||||||
|
|
||||||
Item drop = tiles[worldx][worldy].floor().drops.item;
|
Item drop = tiles[worldx][worldy].floor().drops.item;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package io.anuke.mindustry.net;
|
|||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.IntMap;
|
import com.badlogic.gdx.utils.IntMap;
|
||||||
import com.badlogic.gdx.utils.ObjectMap;
|
import com.badlogic.gdx.utils.ObjectMap;
|
||||||
import com.badlogic.gdx.utils.TimeUtils;
|
|
||||||
import io.anuke.ucore.core.Settings;
|
import io.anuke.ucore.core.Settings;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.headless;
|
import static io.anuke.mindustry.Vars.headless;
|
||||||
@@ -31,15 +30,6 @@ public class Administration{
|
|||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAntiGrief(){
|
|
||||||
return Settings.getBool("antigrief");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAntiGrief(boolean antiGrief){
|
|
||||||
Settings.putBool("antigrief", antiGrief);
|
|
||||||
Settings.save();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean allowsCustomClients(){
|
public boolean allowsCustomClients(){
|
||||||
return Settings.getBool("allow-custom", !headless);
|
return Settings.getBool("allow-custom", !headless);
|
||||||
}
|
}
|
||||||
@@ -49,10 +39,6 @@ public class Administration{
|
|||||||
Settings.save();
|
Settings.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isValidateReplace(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAntiGriefParams(int maxBreak, int cooldown){
|
public void setAntiGriefParams(int maxBreak, int cooldown){
|
||||||
Settings.putInt("antigrief-max", maxBreak);
|
Settings.putInt("antigrief-max", maxBreak);
|
||||||
Settings.putInt("antigrief-cooldown", cooldown);
|
Settings.putInt("antigrief-cooldown", cooldown);
|
||||||
@@ -63,42 +49,6 @@ public class Administration{
|
|||||||
return editLogs;
|
return editLogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean validateBreak(String id, String ip){
|
|
||||||
if(!isAntiGrief() || isAdmin(id, ip)) return true;
|
|
||||||
|
|
||||||
PlayerInfo info = getCreateInfo(id);
|
|
||||||
|
|
||||||
if(info.lastBroken == null || info.lastBroken.length != Settings.getInt("antigrief-max")){
|
|
||||||
info.lastBroken = new long[Settings.getInt("antigrief-max")];
|
|
||||||
}
|
|
||||||
|
|
||||||
long[] breaks = info.lastBroken;
|
|
||||||
|
|
||||||
int shiftBy = 0;
|
|
||||||
for(int i = 0; i < breaks.length && breaks[i] != 0; i++){
|
|
||||||
if(TimeUtils.timeSinceMillis(breaks[i]) >= Settings.getInt("antigrief-cooldown")){
|
|
||||||
shiftBy = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < breaks.length; i++){
|
|
||||||
breaks[i] = (i + shiftBy >= breaks.length) ? 0 : breaks[i + shiftBy];
|
|
||||||
}
|
|
||||||
|
|
||||||
int remaining = 0;
|
|
||||||
for(int i = 0; i < breaks.length; i++){
|
|
||||||
if(breaks[i] == 0){
|
|
||||||
remaining = breaks.length - i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(remaining == 0) return false;
|
|
||||||
|
|
||||||
breaks[breaks.length - remaining] = TimeUtils.millis();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call when a player joins to update their information here.
|
* Call when a player joins to update their information here.
|
||||||
*/
|
*/
|
||||||
@@ -349,8 +299,6 @@ public class Administration{
|
|||||||
public boolean banned, admin;
|
public boolean banned, admin;
|
||||||
public long lastKicked; //last kicked timestamp
|
public long lastKicked; //last kicked timestamp
|
||||||
|
|
||||||
public long[] lastBroken;
|
|
||||||
|
|
||||||
PlayerInfo(String id){
|
PlayerInfo(String id){
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import io.anuke.annotations.Annotations.Remote;
|
|||||||
import io.anuke.annotations.Annotations.Variant;
|
import io.anuke.annotations.Annotations.Variant;
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.entities.Player;
|
import io.anuke.mindustry.entities.Player;
|
||||||
|
import io.anuke.ucore.util.Log;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.maxTextLength;
|
import static io.anuke.mindustry.Vars.maxTextLength;
|
||||||
import static io.anuke.mindustry.Vars.playerGroup;
|
import static io.anuke.mindustry.Vars.playerGroup;
|
||||||
@@ -17,6 +18,8 @@ public class NetEvents{
|
|||||||
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
throw new ValidateException(player, "Player has sent a message above the text limit.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log.info("&y{0}: &lb{1}", (player.name == null ? "" : player.name), message);
|
||||||
|
|
||||||
if(Vars.ui != null){
|
if(Vars.ui != null){
|
||||||
Vars.ui.chatfrag.addMessage(message, player == null ? null : colorizeName(player.id, player.name));
|
Vars.ui.chatfrag.addMessage(message, player == null ? null : colorizeName(player.id, player.name));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.badlogic.gdx.utils.ObjectMap;
|
|||||||
import com.badlogic.gdx.utils.OrderedMap;
|
import com.badlogic.gdx.utils.OrderedMap;
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.game.Content;
|
import io.anuke.mindustry.game.Content;
|
||||||
import io.anuke.mindustry.game.GameMode;
|
|
||||||
import io.anuke.mindustry.game.UnlockableContent;
|
import io.anuke.mindustry.game.UnlockableContent;
|
||||||
import io.anuke.mindustry.ui.ContentDisplay;
|
import io.anuke.mindustry.ui.ContentDisplay;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
@@ -35,7 +34,7 @@ public class Recipe implements UnlockableContent{
|
|||||||
|
|
||||||
public boolean desktopOnly = false, debugOnly = false;
|
public boolean desktopOnly = false, debugOnly = false;
|
||||||
//the only gamemode in which the recipe shows up
|
//the only gamemode in which the recipe shows up
|
||||||
public GameMode targetMode;
|
public boolean isPad;
|
||||||
|
|
||||||
private Block[] dependencies;
|
private Block[] dependencies;
|
||||||
private Recipe[] recipeDependencies;
|
private Recipe[] recipeDependencies;
|
||||||
@@ -104,8 +103,8 @@ public class Recipe implements UnlockableContent{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Recipe setMode(GameMode mode){
|
public Recipe setPad(){
|
||||||
this.targetMode = mode;
|
this.isPad = true;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class ChangelogDialog extends FloatingDialog{
|
|||||||
Table in = new Table("clear");
|
Table in = new Table("clear");
|
||||||
in.top().left().margin(10);
|
in.top().left().margin(10);
|
||||||
|
|
||||||
in.add("[accent]" + info.name);
|
in.add("[accent]" + info.name + "[LIGHT_GRAY] | " + info.date);
|
||||||
if(info.build == Version.build){
|
if(info.build == Version.build){
|
||||||
in.row();
|
in.row();
|
||||||
in.add("$text.changelog.current");
|
in.add("$text.changelog.current");
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ public class BlocksFragment extends Fragment{
|
|||||||
descTable = new Table("button");
|
descTable = new Table("button");
|
||||||
descTable.visible(() -> (hoverRecipe != null || input.recipe != null) && shown); //make sure it's visible when necessary
|
descTable.visible(() -> (hoverRecipe != null || input.recipe != null) && shown); //make sure it's visible when necessary
|
||||||
descTable.update(() -> {
|
descTable.update(() -> {
|
||||||
|
if(state.is(State.menu)){
|
||||||
|
descTable.clear();
|
||||||
|
control.input(0).recipe = null;
|
||||||
|
}
|
||||||
// note: This is required because there is no direct connection between input.recipe and the description ui.
|
// note: This is required because there is no direct connection between input.recipe and the description ui.
|
||||||
// If input.recipe gets set to null, a proper cleanup of the ui elements is required.
|
// If input.recipe gets set to null, a proper cleanup of the ui elements is required.
|
||||||
boolean anyRecipeShown = input.recipe != null || hoverRecipe != null;
|
boolean anyRecipeShown = input.recipe != null || hoverRecipe != null;
|
||||||
@@ -167,7 +171,7 @@ public class BlocksFragment extends Fragment{
|
|||||||
|
|
||||||
//add actual recipes
|
//add actual recipes
|
||||||
for(Recipe r : recipes){
|
for(Recipe r : recipes){
|
||||||
if((r.debugOnly && !debug) || (r.desktopOnly && mobile) || (r.targetMode != null && r.targetMode != state.mode)) continue;
|
if((r.debugOnly && !debug) || (r.desktopOnly && mobile) || (r.isPad && !state.mode.showPads)) continue;
|
||||||
|
|
||||||
ImageButton image = new ImageButton(new TextureRegion(), "select");
|
ImageButton image = new ImageButton(new TextureRegion(), "select");
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,8 @@ public class HudFragment extends Fragment{
|
|||||||
});
|
});
|
||||||
|
|
||||||
t.top().visible(() -> {
|
t.top().visible(() -> {
|
||||||
if(state.is(State.menu) || state.teams.get(players[0].getTeam()).cores.size == 0){
|
if(state.is(State.menu) || state.teams.get(players[0].getTeam()).cores.size == 0 ||
|
||||||
|
state.teams.get(players[0].getTeam()).cores.first().entity == null){
|
||||||
coreAttackTime = 0f;
|
coreAttackTime = 0f;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,9 +101,7 @@ public abstract class BaseBlock{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Returns how much power is accepted.*/
|
||||||
* Returns how much power is accepted.
|
|
||||||
*/
|
|
||||||
public float addPower(Tile tile, float amount){
|
public float addPower(Tile tile, float amount){
|
||||||
float canAccept = Math.min(powerCapacity - tile.entity.power.amount, amount);
|
float canAccept = Math.min(powerCapacity - tile.entity.power.amount, amount);
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public class BuildBlock extends Block{
|
|||||||
|
|
||||||
@Remote(called = Loc.server)
|
@Remote(called = Loc.server)
|
||||||
public static void onConstructFinish(Tile tile, Block block, int builderID, byte rotation, Team team){
|
public static void onConstructFinish(Tile tile, Block block, int builderID, byte rotation, Team team){
|
||||||
|
if(tile == null) return;
|
||||||
tile.setRotation(rotation);
|
tile.setRotation(rotation);
|
||||||
world.setBlock(tile, block, team);
|
world.setBlock(tile, block, team);
|
||||||
Effects.effect(Fx.placeBlock, tile.drawx(), tile.drawy(), block.size);
|
Effects.effect(Fx.placeBlock, tile.drawx(), tile.drawy(), block.size);
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ public class ItemTurret extends CooledTurret{
|
|||||||
@Override
|
@Override
|
||||||
public void handleItem(Item item, Tile tile, Tile source){
|
public void handleItem(Item item, Tile tile, Tile source){
|
||||||
TurretEntity entity = tile.entity();
|
TurretEntity entity = tile.entity();
|
||||||
|
if(entity == null) return;
|
||||||
|
|
||||||
AmmoType type = ammoMap.get(item);
|
AmmoType type = ammoMap.get(item);
|
||||||
entity.totalAmmo += type.quantityMultiplier;
|
entity.totalAmmo += type.quantityMultiplier;
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ public class ItemBridge extends Block{
|
|||||||
|
|
||||||
if(rel == rel2) return false;
|
if(rel == rel2) return false;
|
||||||
}else{
|
}else{
|
||||||
return source.block() instanceof ItemBridge && source.<ItemBridgeEntity>entity().link == tile.packedPosition();
|
return source.block() instanceof ItemBridge && source.<ItemBridgeEntity>entity().link == tile.packedPosition() && tile.entity.items.total() < itemCapacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
return tile.entity.items.total() < itemCapacity;
|
return tile.entity.items.total() < itemCapacity;
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ package io.anuke.mindustry.world.blocks.distribution;
|
|||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import io.anuke.mindustry.type.Liquid;
|
import io.anuke.mindustry.type.Liquid;
|
||||||
|
import io.anuke.mindustry.world.BarType;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.LiquidBlock;
|
import io.anuke.mindustry.world.blocks.LiquidBlock;
|
||||||
|
import io.anuke.mindustry.world.meta.BlockStat;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
|
|
||||||
//TODO fix
|
|
||||||
public class LiquidJunction extends LiquidBlock{
|
public class LiquidJunction extends LiquidBlock{
|
||||||
|
|
||||||
public LiquidJunction(String name){
|
public LiquidJunction(String name){
|
||||||
@@ -14,6 +15,18 @@ public class LiquidJunction extends LiquidBlock{
|
|||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBars(){
|
||||||
|
super.setBars();
|
||||||
|
bars.remove(BarType.liquid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStats(){
|
||||||
|
super.setStats();
|
||||||
|
stats.remove(BlockStat.liquidCapacity);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Tile tile){
|
public void draw(Tile tile){
|
||||||
Draw.rect(name(), tile.worldx(), tile.worldy());
|
Draw.rect(name(), tile.worldx(), tile.worldy());
|
||||||
@@ -30,8 +43,9 @@ public class LiquidJunction extends LiquidBlock{
|
|||||||
dir = (dir + 4) % 4;
|
dir = (dir + 4) % 4;
|
||||||
Tile to = tile.getNearby(dir);
|
Tile to = tile.getNearby(dir);
|
||||||
|
|
||||||
if(to.block().hasLiquids && to.block().acceptLiquid(to, tile, liquid, amount))
|
if(to.block().hasLiquids && to.block().acceptLiquid(to, tile, liquid, Math.min(to.block().liquidCapacity - to.entity.liquids.get(liquid) - 0.00001f, amount))){
|
||||||
to.block().handleLiquid(to, tile, liquid, amount);
|
to.block().handleLiquid(to, tile, liquid, Math.min(to.block().liquidCapacity - to.entity.liquids.get(liquid) - 0.00001f, amount));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -39,7 +53,6 @@ public class LiquidJunction extends LiquidBlock{
|
|||||||
int dir = source.relativeTo(dest.x, dest.y);
|
int dir = source.relativeTo(dest.x, dest.y);
|
||||||
dir = (dir + 4) % 4;
|
dir = (dir + 4) % 4;
|
||||||
Tile to = dest.getNearby(dir);
|
Tile to = dest.getNearby(dir);
|
||||||
return to != null && to.block().hasLiquids &&
|
return to != null && to.block().hasLiquids && to.block().acceptLiquid(to, dest, liquid, Math.min(to.block().liquidCapacity - to.entity.liquids.get(liquid) - 0.00001f, amount));
|
||||||
to.block().acceptLiquid(to, dest, liquid, amount);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ public class MassDriver extends Block{
|
|||||||
//whether this mass driver is waiting for a bullet to hit it and deliver items
|
//whether this mass driver is waiting for a bullet to hit it and deliver items
|
||||||
public boolean isRecieving;
|
public boolean isRecieving;
|
||||||
//whether this driver just recieved some items and is now unloading
|
//whether this driver just recieved some items and is now unloading
|
||||||
public boolean isUnloading;
|
public boolean isUnloading = true;
|
||||||
|
|
||||||
public float reload = 0f;
|
public float reload = 0f;
|
||||||
|
|
||||||
|
|||||||
@@ -121,8 +121,8 @@ public class NuclearReactor extends PowerGenerator{
|
|||||||
|
|
||||||
entity.heat = Mathf.clamp(entity.heat);
|
entity.heat = Mathf.clamp(entity.heat);
|
||||||
|
|
||||||
if(entity.heat >= 1f){
|
if(entity.heat >= 0.999f){
|
||||||
entity.damage((int) entity.health);
|
entity.kill();
|
||||||
}else{
|
}else{
|
||||||
distributePower(tile);
|
distributePower(tile);
|
||||||
}
|
}
|
||||||
@@ -141,9 +141,7 @@ public class NuclearReactor extends PowerGenerator{
|
|||||||
Effects.shake(6f, 16f, tile.worldx(), tile.worldy());
|
Effects.shake(6f, 16f, tile.worldx(), tile.worldy());
|
||||||
Effects.effect(ExplosionFx.nuclearShockwave, tile.worldx(), tile.worldy());
|
Effects.effect(ExplosionFx.nuclearShockwave, tile.worldx(), tile.worldy());
|
||||||
for(int i = 0; i < 6; i++){
|
for(int i = 0; i < 6; i++){
|
||||||
Timers.run(Mathf.random(40), () -> {
|
Timers.run(Mathf.random(40), () -> Effects.effect(BlockFx.nuclearcloud, tile.worldx(), tile.worldy()));
|
||||||
Effects.effect(BlockFx.nuclearcloud, tile.worldx(), tile.worldy());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Damage.damage(tile.worldx(), tile.worldy(), explosionRadius * tilesize, explosionDamage * 4);
|
Damage.damage(tile.worldx(), tile.worldy(), explosionRadius * tilesize, explosionDamage * 4);
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class CoreBlock extends StorageBlock{
|
|||||||
@Remote(called = Loc.server)
|
@Remote(called = Loc.server)
|
||||||
public static void setCoreSolid(Tile tile, boolean solid){
|
public static void setCoreSolid(Tile tile, boolean solid){
|
||||||
CoreEntity entity = tile.entity();
|
CoreEntity entity = tile.entity();
|
||||||
entity.solid = solid;
|
if(entity != null) entity.solid = solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import io.anuke.mindustry.graphics.Shaders;
|
|||||||
import io.anuke.mindustry.type.Mech;
|
import io.anuke.mindustry.type.Mech;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
|
import io.anuke.mindustry.world.consumers.ConsumePowerExact;
|
||||||
import io.anuke.mindustry.world.meta.BlockStat;
|
import io.anuke.mindustry.world.meta.BlockStat;
|
||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.core.Graphics;
|
import io.anuke.ucore.core.Graphics;
|
||||||
@@ -48,7 +49,7 @@ public class MechFactory extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
consumes.power(powerCapacity * 0.8f);
|
consumes.add(new ConsumePowerExact(powerCapacity * 0.8f));
|
||||||
super.init();
|
super.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class ConsumeItemFilter extends Consume{
|
|||||||
public boolean valid(Block block, TileEntity entity){
|
public boolean valid(Block block, TileEntity entity){
|
||||||
for(int i = 0; i < Item.all().size; i++){
|
for(int i = 0; i < Item.all().size; i++){
|
||||||
Item item = Item.getByID(i);
|
Item item = Item.getByID(i);
|
||||||
if(entity.items.has(item) && this.filter.test(item)){
|
if(entity.items != null && entity.items.has(item) && this.filter.test(item)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class ConsumeItems extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean valid(Block block, TileEntity entity){
|
public boolean valid(Block block, TileEntity entity){
|
||||||
return entity.items.has(items);
|
return entity.items != null && entity.items.has(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class ConsumeLiquidFilter extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean valid(Block block, TileEntity entity){
|
public boolean valid(Block block, TileEntity entity){
|
||||||
return filter.test(entity.liquids.current()) && entity.liquids.currentAmount() >= use(block);
|
return entity.liquids != null && filter.test(entity.liquids.current()) && entity.liquids.currentAmount() >= use(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import io.anuke.ucore.core.Timers;
|
|||||||
import io.anuke.ucore.scene.ui.layout.Table;
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
|
|
||||||
public class ConsumePower extends Consume{
|
public class ConsumePower extends Consume{
|
||||||
private final float use;
|
protected final float use;
|
||||||
|
|
||||||
public ConsumePower(float use){
|
public ConsumePower(float use){
|
||||||
this.use = use;
|
this.use = use;
|
||||||
@@ -27,11 +27,13 @@ public class ConsumePower extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Block block, TileEntity entity){
|
public void update(Block block, TileEntity entity){
|
||||||
|
if(entity.power == null) return;
|
||||||
entity.power.amount -= Math.min(use(block), entity.power.amount);
|
entity.power.amount -= Math.min(use(block), entity.power.amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean valid(Block block, TileEntity entity){
|
public boolean valid(Block block, TileEntity entity){
|
||||||
|
if(entity.power == null) return false;
|
||||||
return entity.power.amount >= use(block);
|
return entity.power.amount >= use(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +42,7 @@ public class ConsumePower extends Consume{
|
|||||||
stats.add(BlockStat.powerUse, use * 60f, StatUnit.powerSecond);
|
stats.add(BlockStat.powerUse, use * 60f, StatUnit.powerSecond);
|
||||||
}
|
}
|
||||||
|
|
||||||
float use(Block block){
|
protected float use(Block block){
|
||||||
return Math.min(use * Timers.delta(), block.powerCapacity);
|
return Math.min(use * Timers.delta(), block.powerCapacity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package io.anuke.mindustry.world.consumers;
|
||||||
|
|
||||||
|
import io.anuke.mindustry.world.Block;
|
||||||
|
|
||||||
|
public class ConsumePowerExact extends ConsumePower{
|
||||||
|
|
||||||
|
public ConsumePowerExact(float use){
|
||||||
|
super(use);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected float use(Block block){
|
||||||
|
return this.use;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ package io.anuke.mindustry.world.meta;
|
|||||||
|
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes one type of stat for a block.
|
* Describes one type of stat for a block.
|
||||||
*/
|
*/
|
||||||
@@ -53,6 +55,6 @@ public enum BlockStat{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Bundles.get("text.blocks." + name().toLowerCase());
|
return Bundles.get("text.blocks." + name().toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import io.anuke.mindustry.world.meta.values.*;
|
|||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
import io.anuke.ucore.util.Log;
|
import io.anuke.ucore.util.Log;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hold and organizes a list of block stats.
|
* Hold and organizes a list of block stats.
|
||||||
*/
|
*/
|
||||||
@@ -71,7 +73,7 @@ public class BlockStats{
|
|||||||
* Adds a stat value.
|
* Adds a stat value.
|
||||||
*/
|
*/
|
||||||
public void add(BlockStat stat, StatValue value){
|
public void add(BlockStat stat, StatValue value){
|
||||||
if(!Bundles.has("text.blocks." + stat.name().toLowerCase())){
|
if(!Bundles.has("text.blocks." + stat.name().toLowerCase(Locale.ROOT))){
|
||||||
if(!errorWhenMissing){
|
if(!errorWhenMissing){
|
||||||
Log.err("Warning: No bundle entry for stat type \"" + stat + "\"!");
|
Log.err("Warning: No bundle entry for stat type \"" + stat + "\"!");
|
||||||
}else{
|
}else{
|
||||||
@@ -79,9 +81,9 @@ public class BlockStats{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Bundles.has("text.category." + stat.category.name().toLowerCase())){
|
if(!Bundles.has("text.category." + stat.category.name().toLowerCase(Locale.ROOT))){
|
||||||
if(!errorWhenMissing){
|
if(!errorWhenMissing){
|
||||||
Log.err("Warning: No bundle entry for stat cateogry \"" + stat.category + "\"!");
|
Log.err("Warning: No bundle entry for stat category \"" + stat.category + "\"!");
|
||||||
}else{
|
}else{
|
||||||
throw new RuntimeException("No bundle entry for stat category \"" + stat.category + "\"!");
|
throw new RuntimeException("No bundle entry for stat category \"" + stat.category + "\"!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package io.anuke.mindustry.world.meta;
|
|||||||
|
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a unit of measurement for block stats.
|
* Defines a unit of measurement for block stats.
|
||||||
*/
|
*/
|
||||||
@@ -19,6 +21,6 @@ public enum StatUnit{
|
|||||||
items;
|
items;
|
||||||
|
|
||||||
public String localized(){
|
public String localized(){
|
||||||
return Bundles.get("text.unit." + name().toLowerCase());
|
return Bundles.get("text.unit." + name().toLowerCase(Locale.ROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,20 +11,25 @@ public class LiquidModule extends BlockModule{
|
|||||||
private float total;
|
private float total;
|
||||||
private Liquid current = Liquid.getByID(0);
|
private Liquid current = Liquid.getByID(0);
|
||||||
|
|
||||||
/**
|
/**Returns total amount of liquids.*/
|
||||||
* Returns total amount of liquids.
|
|
||||||
*/
|
|
||||||
public float total(){
|
public float total(){
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**Last recieved or loaded liquid. Only valid for liquid modules with 1 type of liquid.*/
|
||||||
* Last recieved or loaded liquid. Only valid for liquid modules with 1 type of liquid.
|
|
||||||
*/
|
|
||||||
public Liquid current(){
|
public Liquid current(){
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void reset(Liquid liquid, float amount){
|
||||||
|
for(int i = 0; i < liquids.length; i++){
|
||||||
|
liquids[i] = 0f;
|
||||||
|
}
|
||||||
|
liquids[liquid.id] = amount;
|
||||||
|
total = amount;
|
||||||
|
current = liquid;
|
||||||
|
}
|
||||||
|
|
||||||
public float currentAmount(){
|
public float currentAmount(){
|
||||||
return liquids[current.id];
|
return liquids[current.id];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,8 +132,10 @@ public class KryoServer implements ServerProvider {
|
|||||||
//this only opens the default port due to security concerns (?)
|
//this only opens the default port due to security concerns (?)
|
||||||
if(port == Vars.port){
|
if(port == Vars.port){
|
||||||
async(() -> {
|
async(() -> {
|
||||||
if(!UPnP.isMappedTCP(port)) UPnP.openPortTCP(port);
|
try{
|
||||||
if(!UPnP.isMappedUDP(port)) UPnP.openPortUDP(port);
|
if(!UPnP.isMappedTCP(port)) UPnP.openPortTCP(port);
|
||||||
|
if(!UPnP.isMappedUDP(port)) UPnP.openPortUDP(port);
|
||||||
|
}catch(Throwable ignored){}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,11 +111,11 @@ public class Generators {
|
|||||||
|
|
||||||
image.draw(type.weapon.equipRegion,
|
image.draw(type.weapon.equipRegion,
|
||||||
-(int)type.weaponOffsetX + (image.width() - type.weapon.equipRegion.getRegionWidth())/2,
|
-(int)type.weaponOffsetX + (image.width() - type.weapon.equipRegion.getRegionWidth())/2,
|
||||||
(int)type.weaponOffsetY - (image.height() - type.weapon.equipRegion.getRegionHeight())/2,
|
(int)type.weaponOffsetY - (image.height() - type.weapon.equipRegion.getRegionHeight())/2 + 1,
|
||||||
false, false);
|
false, false);
|
||||||
image.draw(type.weapon.equipRegion,
|
image.draw(type.weapon.equipRegion,
|
||||||
(int)type.weaponOffsetX + (image.width() - type.weapon.equipRegion.getRegionWidth())/2,
|
(int)type.weaponOffsetX + (image.width() - type.weapon.equipRegion.getRegionWidth())/2,
|
||||||
(int)type.weaponOffsetY - (image.height() - type.weapon.equipRegion.getRegionHeight())/2,
|
(int)type.weaponOffsetY - (image.height() - type.weapon.equipRegion.getRegionHeight())/2 + 1,
|
||||||
true, false);
|
true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,9 @@ public class CrashHandler{
|
|||||||
|
|
||||||
//add all relevant info, ignoring exceptions
|
//add all relevant info, ignoring exceptions
|
||||||
ex(() -> value.addChild("build", new JsonValue(Version.build)));
|
ex(() -> value.addChild("build", new JsonValue(Version.build)));
|
||||||
ex(() -> value.addChild("mode", new JsonValue(Vars.state.mode.toString())));
|
ex(() -> value.addChild("mode", new JsonValue(Vars.state.mode.name())));
|
||||||
ex(() -> value.addChild("difficulty", new JsonValue(Vars.state.difficulty.toString())));
|
ex(() -> value.addChild("state", new JsonValue(Vars.state.getState().name())));
|
||||||
|
ex(() -> value.addChild("difficulty", new JsonValue(Vars.state.difficulty.name())));
|
||||||
ex(() -> value.addChild("players", new JsonValue(Vars.playerGroup.size())));
|
ex(() -> value.addChild("players", new JsonValue(Vars.playerGroup.size())));
|
||||||
ex(() -> value.addChild("os", new JsonValue(System.getProperty("os.name"))));
|
ex(() -> value.addChild("os", new JsonValue(System.getProperty("os.name"))));
|
||||||
ex(() -> value.addChild("trace", new JsonValue(parseException(e))));
|
ex(() -> value.addChild("trace", new JsonValue(parseException(e))));
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import io.anuke.mindustry.game.Version;
|
|||||||
import io.anuke.mindustry.gen.Call;
|
import io.anuke.mindustry.gen.Call;
|
||||||
import io.anuke.mindustry.io.SaveIO;
|
import io.anuke.mindustry.io.SaveIO;
|
||||||
import io.anuke.mindustry.maps.Map;
|
import io.anuke.mindustry.maps.Map;
|
||||||
import io.anuke.mindustry.net.Administration;
|
|
||||||
import io.anuke.mindustry.net.Administration.PlayerInfo;
|
import io.anuke.mindustry.net.Administration.PlayerInfo;
|
||||||
import io.anuke.mindustry.net.EditLog;
|
import io.anuke.mindustry.net.EditLog;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
@@ -339,35 +338,6 @@ public class ServerControl extends Module{
|
|||||||
info("Debug mode is now {0}.", value ? "on" : "off");
|
info("Debug mode is now {0}.", value ? "on" : "off");
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.register("antigrief", "[on/off] [max-break] [cooldown-in-ms]", "Enable or disable anti-grief.", arg -> {
|
|
||||||
if(arg.length == 0){
|
|
||||||
info("Anti-grief is currently &lc{0}.", netServer.admins.isAntiGrief() ? "on" : "off");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String s = arg[0];
|
|
||||||
if(s.equalsIgnoreCase("on")){
|
|
||||||
netServer.admins.setAntiGrief(true);
|
|
||||||
info("Anti-grief enabled.");
|
|
||||||
}else if(s.equalsIgnoreCase("off")){
|
|
||||||
netServer.admins.setAntiGrief(false);
|
|
||||||
info("Anti-grief disabled.");
|
|
||||||
}else{
|
|
||||||
err("Incorrect command usage.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(arg.length >= 2){
|
|
||||||
try{
|
|
||||||
int maxbreak = Integer.parseInt(arg[1]);
|
|
||||||
int cooldown = (arg.length >= 3 ? Integer.parseInt(arg[2]) : Administration.defaultBreakCooldown);
|
|
||||||
netServer.admins.setAntiGriefParams(maxbreak, cooldown);
|
|
||||||
info("Anti-grief parameters set.");
|
|
||||||
}catch(NumberFormatException e){
|
|
||||||
err("Invalid number format.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
handler.register("allow-custom-clients", "[on/off]", "Allow or disallow custom clients.", arg -> {
|
handler.register("allow-custom-clients", "[on/off]", "Allow or disallow custom clients.", arg -> {
|
||||||
if(arg.length == 0){
|
if(arg.length == 0){
|
||||||
info("Custom clients are currently &lc{0}.", netServer.admins.allowsCustomClients() ? "allowed" : "disallowed");
|
info("Custom clients are currently &lc{0}.", netServer.admins.allowsCustomClients() ? "allowed" : "disallowed");
|
||||||
|
|||||||
Reference in New Issue
Block a user