Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features
Conflicts: core/src/mindustry/content/Blocks.java
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 369 B |
@@ -460,6 +460,7 @@ toolmode.drawteams = Draw Teams
|
||||
toolmode.drawteams.description = Draw teams instead of blocks.
|
||||
|
||||
filters.empty = [lightgray]No filters! Add one with the button below.
|
||||
|
||||
filter.distort = Distort
|
||||
filter.noise = Noise
|
||||
filter.enemyspawn = Enemy Spawn Select
|
||||
@@ -476,6 +477,7 @@ filter.clear = Clear
|
||||
filter.option.ignore = Ignore
|
||||
filter.scatter = Scatter
|
||||
filter.terrain = Terrain
|
||||
|
||||
filter.option.scale = Scale
|
||||
filter.option.chance = Chance
|
||||
filter.option.mag = Magnitude
|
||||
@@ -675,6 +677,7 @@ unit.nobuild = [scarlet]Unit can't build
|
||||
lastaccessed = [lightgray]Last Accessed: {0}
|
||||
block.unknown = [lightgray]???
|
||||
|
||||
stat.showinmap = <load map to show>
|
||||
stat.description = Purpose
|
||||
stat.input = Input
|
||||
stat.output = Output
|
||||
@@ -1164,8 +1167,9 @@ block.spore-cluster.name = Spore Cluster
|
||||
block.metal-floor.name = Metal Floor 1
|
||||
block.metal-floor-2.name = Metal Floor 2
|
||||
block.metal-floor-3.name = Metal Floor 3
|
||||
block.metal-floor-5.name = Metal Floor 4
|
||||
block.metal-floor-damaged.name = Metal Floor Damaged
|
||||
block.metal-floor-4.name = Metal Floor 4
|
||||
block.metal-floor-5.name = Metal Floor 5
|
||||
block.metal-floor-damaged.name = Damaged Metal Floor
|
||||
block.dark-panel-1.name = Dark Panel 1
|
||||
block.dark-panel-2.name = Dark Panel 2
|
||||
block.dark-panel-3.name = Dark Panel 3
|
||||
|
||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
|
||||
schematic.rename = Entwurf umbenennen
|
||||
schematic.info = {0}x{1}, {2} Blöcke
|
||||
schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden.
|
||||
schematic.tags = Tags:
|
||||
schematic.edittags = Tags bearbeiten
|
||||
schematic.addtag = Tag hinzufügen
|
||||
schematic.texttag = Text-Tag
|
||||
schematic.icontag = Bild-Tag
|
||||
schematic.renametag = Tag umbenennen
|
||||
schematic.tagdelconfirm = Dieses Tag wirklich löschen?
|
||||
schematic.tagexists = Dieses Tag gibt es schon.
|
||||
|
||||
stats = Statistiken
|
||||
stat.wave = Wellen besiegt:[accent] {0}
|
||||
@@ -306,7 +314,6 @@ data.exported = Daten exportiert.
|
||||
data.invalid = Dies sind keine gültigen Spieldaten.
|
||||
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]\n\nSobald der Import abgeschlossen ist, wird dein Spiel sofort beendet.
|
||||
quit.confirm = Willst du wirklich aufhören?
|
||||
quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
|
||||
loading = [accent]Wird geladen...
|
||||
reloading = [accent]Lade Mods neu...
|
||||
saving = [accent]Speichere...
|
||||
@@ -477,6 +484,7 @@ filter.option.circle-scale = Kreisskalierung
|
||||
filter.option.octaves = Oktaven
|
||||
filter.option.falloff = Rückgang
|
||||
filter.option.angle = Winkel
|
||||
filter.option.rotate = Drehung
|
||||
filter.option.amount = Menge
|
||||
filter.option.block = Block
|
||||
filter.option.floor = Boden
|
||||
@@ -498,6 +506,7 @@ load = Laden
|
||||
save = Speichern
|
||||
fps = FPS: {0}
|
||||
ping = Ping: {0}ms
|
||||
tps = TPS: {0}
|
||||
memory = Arbeitsspeicher: {0}mb
|
||||
memory2 = Arbeitsspeicher:\n {0}mb +\n {1}mb
|
||||
language.restart = Starte dein Spiel neu, um die Spracheinstellungen zu übernehmen.
|
||||
@@ -530,7 +539,7 @@ launch.from = Items werden von [accent]{0} []gestartet
|
||||
launch.destination = Ziel: {0}
|
||||
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
|
||||
add = Hinzufügen...
|
||||
boss.health = Boss-Lebenspunkte
|
||||
guardian = Boss
|
||||
|
||||
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
|
||||
error.unreachable = Server nicht erreichbar.
|
||||
@@ -574,6 +583,7 @@ sector.attacked = Sektor [accent]{0}[white] wird angegriffen!
|
||||
sector.lost = Sektor [accent]{0}[white] verloren!
|
||||
#note: the missing space in the line below is intentional
|
||||
sector.captured = Sektor [accent]{0}[white]erobert!
|
||||
sector.changeicon = Bild ändern
|
||||
|
||||
threat.low = Niedrig
|
||||
threat.medium = Mittel
|
||||
@@ -626,6 +636,7 @@ status.wet.name = Nass
|
||||
status.muddy.name = Schlammig
|
||||
status.melting.name = Schmelzend
|
||||
status.sapped.name = Schwächend
|
||||
status.electrified.name = Elektrisch
|
||||
status.spore-slowed.name = Sporen-verlangsamt
|
||||
status.tarred.name = Teerend
|
||||
status.overclock.name = Übertaktend
|
||||
@@ -654,6 +665,7 @@ settings.clearcampaignsaves.confirm = Möchtest du wirklich alle Kampagne-Speich
|
||||
paused = [accent]< Pausiert >
|
||||
clear = Leeren
|
||||
banned = [scarlet]Verbannt
|
||||
unsupported.environment = [scarlet]Umgebung nicht unterstützt
|
||||
yes = Ja
|
||||
no = Nein
|
||||
info.title = Info
|
||||
@@ -682,8 +694,6 @@ stat.size = Größe
|
||||
stat.displaysize = Bildschirmgröße
|
||||
stat.liquidcapacity = Flüssigkeitskapazität
|
||||
stat.powerrange = Stromreichweite
|
||||
stat.weapons = Waffen
|
||||
stat.bullet = Geschoss
|
||||
stat.linkrange = Verbindungsradius
|
||||
stat.instructions = Befehle
|
||||
stat.powerconnections = Maximale Stromverbindungen
|
||||
@@ -694,6 +704,9 @@ stat.memorycapacity = Speicherkapazität
|
||||
stat.basepowergeneration = Basis-Stromerzeugung
|
||||
stat.productiontime = Produktionszeit
|
||||
stat.repairtime = Zeit zur vollständigen Reparatur
|
||||
stat.repairspeed = Heilungsgeschwindigkeit
|
||||
stat.weapons = Waffen
|
||||
stat.bullet = Geschoss
|
||||
stat.speedincrease = Geschwindigkeitserhöhung
|
||||
stat.range = Reichweite
|
||||
stat.drilltier = Abbaubare Erze
|
||||
@@ -737,13 +750,15 @@ stat.speedmultiplier = Geschwindigkeit-Multiplikator
|
||||
stat.reloadmultiplier = Nachlade-Multiplikator
|
||||
stat.buildspeedmultiplier = Baugeschwindigkeit-Multiplikator
|
||||
stat.reactive = Reagiert mit
|
||||
stat.healing = Heilung
|
||||
|
||||
ability.forcefield = Kraftfeld
|
||||
ability.repairfield = Heilungsfeld
|
||||
ability.statusfield = Statusfeld
|
||||
ability.statusfield = {0} Statusfeld
|
||||
ability.unitspawn = {0} Fabrik
|
||||
ability.shieldregenfield = Schild-regenerations-Feld
|
||||
ability.movelightning = Bewegungsblitze
|
||||
ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele
|
||||
|
||||
bar.drilltierreq = Besserer Bohrer benötigt
|
||||
bar.noresources = Fehlende Ressourcen
|
||||
@@ -766,6 +781,7 @@ bar.power = Strom
|
||||
bar.progress = Baufortschritt
|
||||
bar.input = Input
|
||||
bar.output = Output
|
||||
bar.strength = [stat]{0}[lightgray]x Stärke
|
||||
|
||||
units.processorcontrol = [lightgray]Prozessorgesteuert
|
||||
|
||||
@@ -974,6 +990,7 @@ rules.wavetimer = Wellen-Timer
|
||||
rules.waves = Wellen
|
||||
rules.attack = Angriff-Modus
|
||||
rules.buildai = KI kann bauen
|
||||
rules.corecapture = Kern nach Zerstörung einnehmen
|
||||
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
|
||||
rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
|
||||
rules.blockdamagemultiplier = Block-Schaden-Multiplikator
|
||||
@@ -1029,6 +1046,7 @@ item.blast-compound.name = Explosive Mischung
|
||||
item.pyratite.name = Pyratit
|
||||
item.metaglass.name = Metaglas
|
||||
item.scrap.name = Schrott
|
||||
|
||||
liquid.water.name = Wasser
|
||||
liquid.slag.name = Schlacke
|
||||
liquid.oil.name = Öl
|
||||
@@ -1060,6 +1078,11 @@ unit.minke.name = Minke
|
||||
unit.bryde.name = Bryde
|
||||
unit.sei.name = Sei
|
||||
unit.omura.name = Omura
|
||||
unit.retusa.name = Retusa
|
||||
unit.oxynoe.name = Oxynoe
|
||||
unit.cyerce.name = Cyerce
|
||||
unit.aegires.name = Aegires
|
||||
unit.navanax.name = Navanax
|
||||
unit.alpha.name = Alpha
|
||||
unit.beta.name = Beta
|
||||
unit.gamma.name = Gamma
|
||||
@@ -1120,6 +1143,7 @@ block.sand-water.name = Sandiges Wasser
|
||||
block.darksand-water.name = Dunkles sandiges Wasser
|
||||
block.char.name = Holzkohle
|
||||
block.dacite.name = Dazit
|
||||
block.rhyolite.name = Rhyolith
|
||||
block.dacite-wall.name = Dazitwand
|
||||
block.dacite-boulder.name = Dazitgeröll
|
||||
block.ice-snow.name = Eisschnee
|
||||
@@ -1203,7 +1227,7 @@ block.pneumatic-drill.name = Pneumatischer Bohrer
|
||||
block.laser-drill.name = Laser-Bohrer
|
||||
block.water-extractor.name = Wasser-Extraktor
|
||||
block.cultivator.name = Kultivierer
|
||||
block.conduit.name = Leitungsrohr
|
||||
block.conduit.name = Kanal
|
||||
block.mechanical-pump.name = Mechanische Pumpe
|
||||
block.item-source.name = Materialquelle
|
||||
block.item-void.name = Materialschlucker
|
||||
@@ -1227,6 +1251,7 @@ block.solar-panel.name = Solarpanel
|
||||
block.solar-panel-large.name = Großes Solarpanel
|
||||
block.oil-extractor.name = Öl-Extraktor
|
||||
block.repair-point.name = Reparaturpunkt
|
||||
block.repair-turret.name = Reparaturstation
|
||||
block.pulse-conduit.name = Impulskanal
|
||||
block.plated-conduit.name = Gepanzerter Kanal
|
||||
block.phase-conduit.name = Phasenkanal
|
||||
@@ -1269,6 +1294,12 @@ block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
|
||||
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
||||
block.payload-conveyor.name = Einheitenförderband
|
||||
block.payload-router.name = Einheitenverteiler
|
||||
block.duct.name = Rohrleitung
|
||||
block.duct-router.name = Rohrleitungsverteiler
|
||||
block.duct-bridge.name = Rohrleitungsbrücke
|
||||
block.payload-propulsion-tower.name = Frachtantriebsturm
|
||||
block.payload-void.name = Frachtschlucker
|
||||
block.payload-source.name = Frachtquelle
|
||||
block.disassembler.name = Großer Trenner
|
||||
block.silicon-crucible.name = Silizium Schmelztiegel
|
||||
block.overdrive-dome.name = Beschleunigungs-Maschine
|
||||
@@ -1287,13 +1318,12 @@ block.large-logic-display.name = Großer Logik-Bildschirm
|
||||
block.memory-cell.name = Speicherzelle
|
||||
block.memory-bank.name = Große Speicherzelle
|
||||
|
||||
team.blue.name = Blau
|
||||
team.crux.name = Rot
|
||||
team.sharded.name = Orange
|
||||
team.orange.name = Orange
|
||||
team.derelict.name = Derelikt
|
||||
team.green.name = Grün
|
||||
team.purple.name = Lila
|
||||
team.blue.name = blau
|
||||
team.crux.name = rot
|
||||
team.sharded.name = gelb
|
||||
team.derelict.name = derelikt
|
||||
team.green.name = grün
|
||||
team.purple.name = lila
|
||||
|
||||
hint.skip = Überspringen
|
||||
hint.desktopMove = Drücke [accent][[WASD][], um dich zu bewegen.
|
||||
@@ -1311,6 +1341,7 @@ hint.placeConveyor.mobile = Förderbänder bewegen Materialien zwischen verschie
|
||||
hint.placeTurret = Platziere \uf861 [accent]Geschütze[], um deine Basis vor Gegnern zu beschützen.\n\nGeschütze benötigen Munition - in diesem Fall \uf838Kupfer.\nBenutze Bohrer und Förderbänder, um dies zu besorgen.
|
||||
hint.breaking = Benutze [accent]Rechtsklick[] und bewege deine Maus, um zu zerstören.
|
||||
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts und tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm, um eine Fläche auszuwählen.
|
||||
hint.blockInfo = Genauere Blockinformationen können im [accent]Baumenü[] rechts beim [accent][[?][]-Symbol gefunden werden.
|
||||
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
|
||||
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
|
||||
hint.unitControl = Halte [accent][[L-STRG][] und [accent]klicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
||||
@@ -1344,7 +1375,7 @@ item.graphite.description = Wird als Munition oder elektrischer Leiter eingesetz
|
||||
item.sand.description = Nützlich für die Herstellung vieler anderer Materialien.
|
||||
item.coal.description = Kann als Brennstoff oder zur Herstellung anderer Materialien verwendet werden.
|
||||
item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon lange vor dem Seeding gebildet hat.
|
||||
item.titanium.description = Wird im Flüssigkeitsbereich, im Bohrerbereich und für Flugzeuge vielfältig eingesetzt.
|
||||
item.titanium.description = Wird für Flüssigkeiten, Bohrer und Fabriken vielfältig eingesetzt.
|
||||
item.thorium.description = Wird als festes Baumaterial oder radioaktiver Kraftstoff verwendet.
|
||||
item.scrap.description = Wird in Pulverisierer und Schmelzer zu anderen Materialien bearbeitet.
|
||||
item.scrap.details = Übriggebliebene Reste alter Blöcke oder Einheiten.
|
||||
@@ -1565,7 +1596,7 @@ logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.
|
||||
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
||||
lenum.shoot = Schießt auf eine Position.
|
||||
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
||||
lenum.configure = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
||||
lenum.config = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
||||
lenum.enabled = Ob der Block an oder aus ist.
|
||||
|
||||
laccess.color = Illuminiererfarbe.
|
||||
@@ -1573,6 +1604,7 @@ laccess.controller = Einheitensteurer. Gibt "processor" zurück, wenn die Einhei
|
||||
laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist.
|
||||
laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0.
|
||||
laccess.commanded = [red]Veraltet. Wird bald entfernt![]\nBenutze stattdessen [accent]controlled[].
|
||||
laccess.progress = Fortschritt, von 0 bis 1.\nGibt Produktion, Nachladestatus or Baufortschritt zurück.
|
||||
|
||||
graphicstype.stroke = Setzt die Linienbreite fest.
|
||||
graphicstype.line = Zeichnet eine Linie.
|
||||
@@ -1602,11 +1634,17 @@ lenum.xor = Bitwise XOR.
|
||||
|
||||
lenum.min = Die Größte von zwei Zahlen.
|
||||
lenum.max = Die Kleinste von zwei Zahlen.
|
||||
lenum.angle = Angle of vector in degrees.
|
||||
lenum.len = Length of vector.
|
||||
lenum.angle = Vektorwinkel in Grad.
|
||||
lenum.len = Vektorlänge.
|
||||
|
||||
lenum.sin = Sinus in Grad.
|
||||
lenum.cos = Cosinus in Grad.
|
||||
lenum.tan = Tangens in Grad.
|
||||
|
||||
lenum.asin = Arkussinus in Grad.
|
||||
lenum.acos = Arkuskosinus in Grad.
|
||||
lenum.atan = Arkustangens in Grad.
|
||||
|
||||
#not a typo, look up 'range notation'
|
||||
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
||||
lenum.log = Logarithmus (ln).
|
||||
|
||||
@@ -41,7 +41,7 @@ be.ignore = Abaikan
|
||||
be.noupdates = Tidak ada pembaruan yang ditemukan.
|
||||
be.check = Cek versi baru
|
||||
|
||||
mod.featured.dialog.title = Browser Mod
|
||||
mods.browser = Browser Mod
|
||||
mods.browser.selected = Mod yang Dipilih
|
||||
mods.browser.add = Pasang mod
|
||||
mods.browser.reinstall = Pasang kembali
|
||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Bagan ini akan benar-benar dihapus.
|
||||
schematic.rename = Ganti Nama Bagan
|
||||
schematic.info = {0}x{1}, {2} blok
|
||||
schematic.disabled = [scarlet]Bagan dilarang[]\nAnda tidak diperbolehkan untuk menggunakan bagan di [accent]peta[] atau [accent]server ini.
|
||||
schematic.tags = Tanda:
|
||||
schematic.edittags = Ubah Tanda
|
||||
schematic.addtag = Tambah Tanda
|
||||
schematic.texttag = Tanda Tulisan
|
||||
schematic.icontag = Tanda Ikon
|
||||
schematic.renametag = Ubah Nama Tanda
|
||||
schematic.tagdelconfirm = Hapus tanda ini sepenuhnya?
|
||||
schematic.tagexists = Tanda ini sudah ada.
|
||||
|
||||
stats = Statistik
|
||||
stat.wave = Gelombang Terkalahkan:[accent] {0}
|
||||
@@ -530,7 +538,7 @@ launch.from = Meluncurkan Dari: [accent]{0}
|
||||
launch.destination = Destinasi: {0}
|
||||
configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}.
|
||||
add = Menambahkan...
|
||||
boss.health = Darah Penjaga
|
||||
guardian = Penjaga
|
||||
|
||||
connectfail = [scarlet]Gagal menyambung ke server:\n\n[accent]{0}
|
||||
error.unreachable = Server tak terjangkau.\nApakah alamatnya benar?
|
||||
@@ -975,6 +983,7 @@ rules.wavetimer = Pengaturan Waktu Gelombang
|
||||
rules.waves = Gelombang
|
||||
rules.attack = Mode Penyerangan
|
||||
rules.buildai = Bangunan A.I.
|
||||
rules.corecapture = Tangkap Inti Saat Kehancuran
|
||||
rules.enemyCheat = Sumber Daya A.I. Musuh (Tim Merah) Tak Terbatas
|
||||
rules.blockhealthmultiplier = Penggandaan Darah Blok
|
||||
rules.blockdamagemultiplier = Penggandaan Kekuatan Blok
|
||||
@@ -1304,7 +1313,6 @@ block.memory-bank.name = Bank Memori
|
||||
team.blue.name = biru
|
||||
team.crux.name = merah
|
||||
team.sharded.name = kuning
|
||||
team.orange.name = jingga
|
||||
team.derelict.name = abu-abu
|
||||
team.green.name = hijau
|
||||
team.purple.name = ungu
|
||||
|
||||
@@ -13,6 +13,7 @@ link.google-play.description = Página da Google Play store
|
||||
link.f-droid.description = Listamento de catalogo do F-Droid
|
||||
link.wiki.description = Wiki oficial do Mindustry
|
||||
link.suggestions.description = Sugira novos conteúdos
|
||||
link.bug.description = Achou algum? Reporte-o aqui
|
||||
linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferência.
|
||||
screenshot = Screenshot salvo para {0}
|
||||
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
|
||||
@@ -36,7 +37,7 @@ be.update.confirm = Baixar e reiniciar o jogo agora?
|
||||
be.updating = Atualizando...
|
||||
be.ignore = Ignorar
|
||||
be.noupdates = Nenhuma atualização encontrada.
|
||||
be.check = Cheque por atualizações
|
||||
be.check = Checar por atualizações
|
||||
|
||||
schematic = Esquema
|
||||
schematic.add = Salvar esquema
|
||||
@@ -56,6 +57,14 @@ schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
||||
schematic.rename = Renomear esquema
|
||||
schematic.info = {0}x{1}, {2} blocos
|
||||
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
||||
schematic.tags = Tags:
|
||||
schematic.edittags = Editar Tags
|
||||
schematic.addtag = Adicionar Tag
|
||||
schematic.texttag = Tag de Texto
|
||||
schematic.icontag = Tag de Ícone
|
||||
schematic.renametag = Renomear Tag
|
||||
schematic.tagdelconfirm = Deletar essa tag completamente?
|
||||
schematic.tagexists = Essa tag já existe.
|
||||
|
||||
stat.wave = Hordas derrotadas:[accent] {0}
|
||||
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
||||
@@ -267,6 +276,9 @@ cancel = Cancelar
|
||||
openlink = Abrir Link
|
||||
copylink = Copiar link
|
||||
back = Voltar
|
||||
crash.export = Exportar Históricos de Crashes.
|
||||
crash.none = Nenhum Histórico de Crashes Encontrado.
|
||||
crash.exported = Históricos de Crashes Exportado.
|
||||
data.export = Exportar dados
|
||||
data.import = Importar dados
|
||||
data.openfolder = Abrir pasta de dados
|
||||
@@ -331,7 +343,7 @@ editor.generation = Geração:
|
||||
editor.ingame = Editar em jogo
|
||||
editor.publish.workshop = Publicar na oficina
|
||||
editor.newmap = Novo mapa
|
||||
editor.center = Center
|
||||
editor.center = Centro
|
||||
workshop = Oficina
|
||||
waves.title = Hordas
|
||||
waves.remove = Remover
|
||||
@@ -472,7 +484,7 @@ mapeditor = Editor de mapa
|
||||
abandon = Abandonar
|
||||
abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo.
|
||||
locked = Trancado
|
||||
complete = [lightgray]Completo:
|
||||
complete = [lightgray]Complete:
|
||||
requirement.wave = Alcançar a Horda {0} em {1}
|
||||
requirement.core = Destruir o núcleo inimigo em {0}
|
||||
requirement.research = Pesquise {0}
|
||||
@@ -531,26 +543,50 @@ planet.sun.name = Sol
|
||||
sector.groundZero.name = Marco Zero
|
||||
sector.craters.name = As Crateras
|
||||
sector.frozenForest.name = Floresta Congelada
|
||||
sector.biomassFacility.name = Instalação de Síntese de Biomassa
|
||||
sector.ruinousShores.name = Costas Ruinosas
|
||||
sector.windsweptIslands.name = Ilhas Ventadas
|
||||
sector.stainedMountains.name = Montanhas Manchadas
|
||||
sector.desolateRift.name = Fenda Desolada
|
||||
sector.nuclearComplex.name = Complexo de Prodção Nuclear
|
||||
sector.nuclearComplex.name = Complexo de Produção Nuclear
|
||||
sector.overgrowth.name = Supercrescimento
|
||||
sector.tarFields.name = Campos de Piche
|
||||
sector.tarFields.name = Campos de Petróleo
|
||||
sector.saltFlats.name = Planícies de Sal
|
||||
sector.fungalPass.name = Passagem Fúngica
|
||||
sector.impact0078.name = Impacto 0078
|
||||
sector.extractionOutpost.name = Posto Avançado de Extração
|
||||
sector.planetaryTerminal.name = Terminal de Lançamento Planetário.
|
||||
|
||||
sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue.
|
||||
sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores.
|
||||
sector.biomassFacility.description = A origem dos esporos. Essa é a instalação onde eles foram pesquisados e produzidos inicialmente. Pesquise a tecnologia contido na instalação. Cultive esporos para a produção de combustíveis e plásticos. \n\nNo falecimento da instalação, os esporos foram liberados. Nada no ecossistema local conseguia competir com um organismo tão invasivo.
|
||||
sector.saltFlats.description = Nos arredores do deserto ficam as planícies de sal. Muitos recursos podem ser encontrados nesse local.\n\nO inimigo construiu um complexo de armazenamento de recursos aqui. Destrua o núcleo deles. Não deixe nada sobrando.
|
||||
sector.craters.description = A água se acumulou nessa cratera, relíquias de guerras antigas. Re-conquiste a área. Colete areia. Faça metavidro. Use a água para melhorar suas brocas e torretas.
|
||||
sector.ruinousShores.description = Passando o terreno desolado, está localizada a costa. Antigamente, este local abrigava uma rede de defesa costeira. Não restou muita coisa. Apenas as estruturas de defesas básicas permaneceram ilesas, o resto foi reduzido a sucata.\nContinue expandindo seus territórios, re-descubra a tecnologia.
|
||||
sector.windsweptIslands.description = Um pouco depois do literal tem essa remota série de ilhas. Registros mostram eles haviam estruturas produtoras de [accent]Plastânio[].\n\nAfase as unidades navais inimigas. Estabeleça uma base nas ilhas. Pesquise essas fábricas.
|
||||
sector.stainedMountains.description = Mais para o interior estão as montanhas, ainda não contaminadas pelos esporos.\nExtraia o titânio que é abundante nessa área. Aprenda a usá-lo.\n\nA presença inimiga é maior aqui. Não dê tempo a eles de trazerem fortes unidades.
|
||||
sector.overgrowth.description = Essa área coberta por vegetação, próxima ao local de origem dos esporos.\nO inimigo estabeleceu um posto de controle aqui. Faça unidades Titan. Destrua eles. Recupere o que foi perdido.
|
||||
sector.tarFields.description = Nos arredores de uma zone de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas de piche utilizáveis.\nMesmo abandonada, essa área tem forças inimigas por perto. Não subestime-os.\n\n[lightgray]Pesquise a tecnologia de processamento de petróleo se possível.
|
||||
sector.desolateRift.description = Uma zona extremamente perigosa. Uma zona com recursos abundantes, mas pouco espaço. Grande risco de destruição. Saia o quanto antes. Não se deixe levar pelo tempo entre os ataques inimigos.
|
||||
sector.nuclearComplex.description = Uma antiga instalação de produção e processamento de tório, reduzida a ruínas.\n[lightgray]Pesquise sobre o tório e seu vários usos.\n\nO inimigo está presente aqui em grande número, constantemente procurando por atacantes.
|
||||
sector.fungalPass.description = Uma área de transição entre altas montanhas e terras baixas, repletas de esporos. Uma pequena base de reconhecimento inimiga está aqui.\nDestrua o núcleo.
|
||||
sector.impact0078.description = Aqui repousas restos de um reservatório de transporte interestelar que entrou nesse sistema primeiro.\n\Salve o quanto puder dos destroços. Pesquise qualquer tecnologia intacta.
|
||||
sector.extractionOutpost.description = Um posto avançado remoto, construído pelo inimigo com o objetivo de lançar recursos para outros setores.\n\nTecnologia de transporte entre setores é essencial para mais conquista de território. Destrua a base. Pesquise suas Plataformas de Lançamento.
|
||||
sector.planetaryTerminal.description = O último alvo.\n\nEssa base costeira contém a estrutura capaz de lançar Núcleos para planetas locais. É extremamente bem guardado.\n\nProduza unidades navais. Elimine o inimigo o mais rápido o possível. pesquise a estrutura de lançamento.
|
||||
|
||||
status.burning.name = Queimando
|
||||
status.freezing.name = Congelado
|
||||
status.wet.name = Molhado
|
||||
status.muddy.name = Barrento
|
||||
status.melting.name = Derretendo
|
||||
status.sapped.name = Enfraquecido
|
||||
status.electrified.name = Eletrificado
|
||||
status.spore-slowed.name = Esporo-Desaceleração
|
||||
status.tarred.name = Alcatroado
|
||||
status.overclock.name = Overclock
|
||||
status.shocked.name = Chocado
|
||||
status.blasted.name = Impactado
|
||||
status.unmoving.name = Imóvel
|
||||
|
||||
settings.language = Idioma
|
||||
settings.data = Dados do jogo
|
||||
@@ -588,13 +624,15 @@ stat.output = Saída
|
||||
stat.booster = Apoio
|
||||
stat.tiles = Required Tiles
|
||||
stat.affinities = Afinidades
|
||||
stat.opposites = Opostos
|
||||
stat.powercapacity = Capacidade de Energia
|
||||
stat.powershot = Energia/tiro
|
||||
stat.weapons = Armas
|
||||
stat.damage = Dano
|
||||
stat.targetsair = Mira no ar
|
||||
stat.targetsground = Mira no chão
|
||||
stat.itemsmoved = Velocidade de movimento
|
||||
stat.launchtime = Tempo entre Disparos.
|
||||
stat.launchtime = Tempo entre Disparos
|
||||
stat.shootrange = Alcance
|
||||
stat.size = Tamanho
|
||||
stat.displaysize = Tamanho do Display
|
||||
@@ -617,6 +655,7 @@ stat.drillspeed = Velocidade base da Broca
|
||||
stat.boosteffect = Efeito do Impulso
|
||||
stat.maxunits = Máximo de unidades ativas
|
||||
stat.health = Saúde
|
||||
stat.armor = Armadura
|
||||
stat.buildtime = Tempo de construção
|
||||
stat.maxconsecutive = Max Consecutive
|
||||
stat.buildcost = Custo de construção
|
||||
@@ -624,31 +663,45 @@ stat.inaccuracy = Imprecisão
|
||||
stat.shots = Tiros
|
||||
stat.reload = Tempo de recarga
|
||||
stat.ammo = Munição
|
||||
stat.ammouse = Consumo de Munição
|
||||
stat.damagemultiplier = Multiplicador de Dano
|
||||
stat.healthmultiplier = Multiplicador de Vida
|
||||
stat.speedmultiplier = Multiplicador de Velocidade
|
||||
stat.reloadmultiplier = Multiplicador de Recarregamento
|
||||
stat.buildspeedmultiplier = Multiplicador de Velocidade de Construção
|
||||
stat.reactive = Reage
|
||||
stat.healing = Reparo
|
||||
|
||||
stat.shieldhealth = Vida do Escudo
|
||||
stat.cooldowntime = Tempo de espera
|
||||
stat.explosiveness = Explosividade
|
||||
stat.basedeflectchance = Chance Base de Esquiva
|
||||
stat.lightningchance = Lightning Chance
|
||||
stat.lightningchance = Chance de Raio
|
||||
stat.lightningdamage = Dano por Raio
|
||||
stat.flammability = Inflamabilidade
|
||||
stat.charge = Carga de Eletricidade
|
||||
stat.radioactivity = Radioatividade
|
||||
stat.heatcapacity = Capacidade de Aquecimento
|
||||
stat.viscosity = Viscosidade
|
||||
stat.temperature = Temperatura
|
||||
stat.speed = Velocidade
|
||||
stat.repairspeed = Taxa de Reparo
|
||||
stat.buildspeed = Velocidade de Construção
|
||||
stat.minespeed = Velocidade de Mineração
|
||||
stat.minetier = Nível de Mineração
|
||||
stat.payloadcapacity = Capacidade de Carga
|
||||
stat.commandlimit = Limite de Comando
|
||||
stat.abilities = Habilidades
|
||||
stat.canboost = Pode impulsionar
|
||||
stat.flying = Voador
|
||||
|
||||
ability.forcefield = Campo de Força
|
||||
ability.repairfield = Campo de Reparação
|
||||
ability.statusfield = Status Field
|
||||
ability.unitspawn = {0} Fábrica
|
||||
ability.statusfield = Campo de Status {0}
|
||||
ability.unitspawn = Fábrica de {0}
|
||||
ability.shieldregenfield = Raio de Regeneração do Escudo
|
||||
ability.movelightning = Raio de Movimento
|
||||
ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[]
|
||||
|
||||
bar.drilltierreq = Broca melhor necessária.
|
||||
bar.noresources = Recursos Insuficientes
|
||||
@@ -665,12 +718,13 @@ bar.items = Itens: {0}
|
||||
bar.capacity = Capacidade: {0}
|
||||
bar.unitcap = {0} {1}/{2}
|
||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
||||
bar.liquid = Liquido
|
||||
bar.liquid = Líquido
|
||||
bar.heat = Aquecer
|
||||
bar.power = Poder
|
||||
bar.progress = Progresso da construção
|
||||
bar.input = Entrada
|
||||
bar.output = Saída
|
||||
bar.strength = [stat]{0}[lightgray]x força
|
||||
|
||||
units.processorcontrol = [lightgray]Processor Controlled
|
||||
|
||||
@@ -678,13 +732,13 @@ bullet.damage = [stat]{0}[lightgray] de dano
|
||||
bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgray] bloco(s)
|
||||
bullet.incendiary = [stat]Incendiário
|
||||
bullet.homing = [stat]Guiado
|
||||
bullet.shock = [stat]Choque
|
||||
bullet.frag = [stat]Fragmentação
|
||||
bullet.knockback = [stat]{0}[lightgray]Impulso
|
||||
bullet.lightning = [stat]{0}[lightgray]x raio ~ [stat]{1}[lightgray] dano
|
||||
bullet.buildingdamage = [stat]{0}%[lightgray] dano em construção
|
||||
bullet.knockback = [stat]{0}[lightgray] Impulso
|
||||
bullet.pierce = [stat]{0}[lightgray]x perfuração
|
||||
bullet.infinitepierce = [stat]perfuração
|
||||
bullet.freezing = [stat]Congelamento
|
||||
bullet.tarred = [stat]Grudento
|
||||
bullet.healpercent = [stat]{0}[lightgray]% reparo
|
||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
|
||||
bullet.reload = [stat]{0}[lightgray]x cadência de tiro
|
||||
|
||||
@@ -693,12 +747,12 @@ unit.blockssquared = Blocos²
|
||||
unit.powersecond = unidades de energia por segundo
|
||||
unit.liquidsecond = líquido segundo
|
||||
unit.itemssecond = itens por segundo
|
||||
unit.liquidunits = unidades de liquido
|
||||
unit.liquidunits = unidades de líquido
|
||||
unit.powerunits = unidades de energia
|
||||
unit.degrees = Graus
|
||||
unit.seconds = segundos
|
||||
unit.minutes = mins
|
||||
unit.persecond = por segundo
|
||||
unit.persecond = /segundo
|
||||
unit.perminute = /min
|
||||
unit.timesspeed = x Velocidade
|
||||
unit.percent = %
|
||||
@@ -707,6 +761,7 @@ unit.items = itens
|
||||
unit.thousands = k
|
||||
unit.millions = m
|
||||
unit.billions = b
|
||||
unit.pershot = /disparo
|
||||
category.general = Geral
|
||||
category.power = Energia
|
||||
category.liquids = Líquidos
|
||||
@@ -719,8 +774,11 @@ setting.shadows.name = Sombras
|
||||
setting.blockreplace.name = Sugestões automáticas de blocos
|
||||
setting.linear.name = Filtragem linear
|
||||
setting.hints.name = Dicas
|
||||
setting.logichints.name = Dicas de Lógica
|
||||
setting.flow.name = Mostrar Fluxo de Recursos[scarlet] (experimental)
|
||||
setting.buildautopause.name = Pausar construções automaticamente
|
||||
setting.buildautopause.name = Pausar Automaticamente Quando for Construir
|
||||
setting.doubletapmine.name = Clique Duplo Para Minerar
|
||||
setting.modcrashdisable.name = Desativar Mods em Crash de Começo
|
||||
setting.animatedwater.name = Água animada
|
||||
setting.animatedshields.name = Escudos animados
|
||||
setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[]
|
||||
@@ -740,7 +798,7 @@ setting.difficulty.normal = Normal
|
||||
setting.difficulty.hard = Difícil
|
||||
setting.difficulty.insane = Insano
|
||||
setting.difficulty.name = Dificuldade
|
||||
setting.screenshake.name = Balanço da Tela
|
||||
setting.screenshake.name = Vibração da Tela
|
||||
setting.effects.name = Efeitos
|
||||
setting.destroyedblocks.name = Mostrar Blocos Destruídos
|
||||
setting.blockstatus.name = Mostrar a Propriedade dos Blocos
|
||||
@@ -773,6 +831,7 @@ setting.chatopacity.name = Opacidade do chat
|
||||
setting.lasersopacity.name = Opacidade do laser
|
||||
setting.bridgeopacity.name = Opacidade da ponte
|
||||
setting.playerchat.name = Mostrar chat em jogo
|
||||
setting.showweather.name = Mostrar Gráficos do Clima
|
||||
public.confirm = Você quer fazer sua partida pública?\n[accent]Qualquer um será capaz de entrar na sua partida.\n[lightgray]Isso pode ser mudado depois em Configurações->Jogo->Visibilidade da partida pública.
|
||||
public.beta = Note que as versões beta do jogo não podem fazer salas públicas.
|
||||
uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos...
|
||||
@@ -837,6 +896,7 @@ keybind.menu.name = Menu
|
||||
keybind.pause.name = Pausar
|
||||
keybind.pause_building.name = Parar/Resumir a construção
|
||||
keybind.minimap.name = Minimapa
|
||||
keybind.research.name = Pesquisa
|
||||
keybind.chat.name = Conversa
|
||||
keybind.player_list.name = Lista de jogadores
|
||||
keybind.console.name = Console
|
||||
@@ -851,8 +911,8 @@ keybind.zoom_minimap.name = Ampliar minimapa
|
||||
mode.help.title = Descrição dos modos
|
||||
mode.survival.name = Sobrevivência
|
||||
mode.survival.description = O modo normal. Recursos limitados e hordas automáticas.
|
||||
mode.sandbox.name = Criativo
|
||||
mode.sandbox.description = Recursos infinitos e sem tempo para ataques.
|
||||
mode.sandbox.name = Sandbox
|
||||
mode.sandbox.description = Recursos infinitos não há tempo entre ondas.
|
||||
mode.editor.name = Editor
|
||||
mode.pvp.name = JxJ
|
||||
mode.pvp.description = Luta contra outros jogadores locais.
|
||||
@@ -910,8 +970,8 @@ item.thorium.name = Tório
|
||||
item.silicon.name = Silício
|
||||
item.plastanium.name = Plastânio
|
||||
item.phase-fabric.name = Tecido de fase
|
||||
item.surge-alloy.name = Liga de súrgio
|
||||
item.spore-pod.name = Pedaço de esporo
|
||||
item.surge-alloy.name = Liga de surto
|
||||
item.spore-pod.name = Casulo de esporo
|
||||
item.sand.name = Areia
|
||||
item.blast-compound.name = Composto Explosivo
|
||||
item.pyratite.name = Piratita
|
||||
@@ -920,22 +980,25 @@ item.scrap.name = Sucata
|
||||
liquid.water.name = Água
|
||||
liquid.slag.name = Escória
|
||||
liquid.oil.name = Petróleo
|
||||
liquid.cryofluid.name = Fluído Criogênico
|
||||
liquid.cryofluid.name = Crio-fluido
|
||||
|
||||
unit.dagger.name = Adaga
|
||||
unit.dagger.name = Dagger
|
||||
unit.mace.name = Mace
|
||||
unit.fortress.name = Fortaleza
|
||||
unit.fortress.name = Fortress
|
||||
unit.scepter.name = Scepter
|
||||
unit.reign.name = Reign
|
||||
unit.nova.name = Nova
|
||||
unit.pulsar.name = Pulsar
|
||||
unit.quasar.name = Quasar
|
||||
unit.crawler.name = Rastejante
|
||||
unit.atrax.name = Atrax
|
||||
unit.vela.name = Vela
|
||||
unit.corvus.name = Corvus
|
||||
unit.crawler.name = Rastejador
|
||||
unit.spiroct.name = Spiroct
|
||||
unit.arkyid.name = Arkyid
|
||||
unit.toxopid.name = Toxopid
|
||||
unit.flare.name = Flare
|
||||
unit.horizon.name = Horizon
|
||||
unit.zenith.name = Zênite
|
||||
unit.zenith.name = Zenith
|
||||
unit.antumbra.name = Antumbra
|
||||
unit.eclipse.name = Eclipse
|
||||
unit.mono.name = Mono
|
||||
@@ -951,10 +1014,59 @@ unit.omura.name = Omura
|
||||
unit.alpha.name = Alpha
|
||||
unit.beta.name = Beta
|
||||
unit.gamma.name = Gamma
|
||||
unit.scepter.name = Sceptro
|
||||
unit.reign.name = Reign
|
||||
unit.vela.name = Vela
|
||||
unit.corvus.name = Corvus
|
||||
|
||||
unit.dagger.description = Dispara projéteis padrões em todos os inimigos em volta.
|
||||
unit.mace.description = Dispara corrents de chamas em todos os inimigos em volta.
|
||||
unit.fortress.description = Dispara artilharia de longo alcance em alvos terrestres.
|
||||
unit.scepter.description = Dispara uma barragem de projéteis carregados em todos os inimigos em volta.
|
||||
unit.reign.description = Dispara uma barragem de projéteis perfuradoes massivos em todos os inimigos em volta.
|
||||
unit.nova.description = Dispara raios-lasers que danificam inimigos e repara estruturas aliadas. Capaz de voar.
|
||||
unit.pulsar.description = Dispara arcos de eletricidade que danificam inimigos e repara estruturas aliadas. Capaz de voar.
|
||||
unit.quasar.description = Dispara feixes penetradores de lasers que danificam inimigos e repara estruturas aliadas. Capaz de voar. Possui um escudo.
|
||||
unit.vela.description = Dispara um massivo feixe de laser massivo que danificam inimigos, causa fogo e repara estruturas aliadas. Capaz de voar.
|
||||
unit.corvus.description = Dispara um massivo laser que danificam inimigos e repara estruturas aliadas. Pode pisar em cima da maioria do terreno.
|
||||
unit.crawler.description = Corre atrás de inimigos e se destrói, causando uma grande explosão.
|
||||
unit.atrax.description = Dispara orbes debilitantes de escória em alvos terrestres. Pode pisar em cima da maioria do terreno.
|
||||
unit.spiroct.description = Dispara lasers enfraquecedores em inimigos, se reparando no processo. Pode pisar em cima da maioria do terreno.
|
||||
unit.arkyid.description = Dispara grandes lasers enfraquecedores em inimigos, se reparando no processo. Pode pisar em cima da maioria do terreno.
|
||||
unit.toxopid.description = Dispara grande granadas agrupadas elétricas e lasers penetradoes em inimigos. Pode pisar em cima da maioria do terreno.
|
||||
unit.flare.description = Dispara projéteis padrões em alvos terrestres.
|
||||
unit.horizon.description = Larga aglomerados de bombas em alvos terrestres.
|
||||
unit.zenith.description = Dispara salvos de mísseis em todos os inimigos em volta.
|
||||
unit.antumbra.description = Dispara uma barragem de projéteis em todos os inimigos em volta.
|
||||
unit.eclipse.description = Dispara dois lasers penetradores e uma barragem de fogo antiaéreo em todos os inimigos em volta.
|
||||
unit.mono.description = Automaticamente minera cobre e chumbo, depositando-os no núcleo.
|
||||
unit.poly.description = Automaticamente reconstrói estruturas destruídas e ajuda outras unidades em construção.
|
||||
unit.mega.description = Automaticamente repara estruturas danificadas. Capaz de carregar blocos e unidades de chão pequenas.
|
||||
unit.quad.description = Larga grandes bombas em alvos terrestres, reparando estruturas aliadas e danificando inimigos. Capaz de carregar unidades terrestres de tamanho médio.
|
||||
unit.oct.description = Protege aliados em volta com o seu escudo regenerador. Capaz de carregar a maioria das unidades terrestres.
|
||||
unit.risso.description = Dispara uma barragem de mísseis e projéteis em todos os inimigos em volta.
|
||||
unit.minke.description = Dispara granadas e projéteis padrões em alvos terrestres.
|
||||
unit.bryde.description = Dispara granadas de artilharia de longo alcance e mísseis em todos os inimigos em volta.
|
||||
unit.sei.description = Dispara uma barragem de mísseis e projéteis penetradoras de armadura em inimigos.
|
||||
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos. Constrói unidades flare.
|
||||
unit.alpha.description = Defende o Fragmento do Núcleo de inimigos. Constrói estruturas.
|
||||
unit.beta.description = Defende a Fundação do Núcleo de inimigos. Constrói estruturas.
|
||||
unit.gamma.description = Defende o Centro do Núcleo de inimigos. Constrói estruturas.
|
||||
|
||||
lst.read = Lê um número de uma célula de memória conectada.
|
||||
lst.write = Escreve um número a uma célula de memória conectada.
|
||||
lst.print = Adiciona texto ao gravador principal.\nNão vai mostrar nada até que [accent]Print Flush[] seja usado.
|
||||
lst.draw = Adiciona uma operação ao monitor principal.\nNão vai mostrar nada até que [accent]Draw Flush[] seja usado.
|
||||
lst.drawflush = Coloca as operações [accent]Draw[] na fila para um monitor.
|
||||
lst.printflush = Coloca as operações [accent]Write[] na fila para um bloco de mensagem.
|
||||
lst.getlink = Pega um vínculo de processador por índice. Começa no 0.
|
||||
lst.control = Controla uma construção.
|
||||
lst.radar = Localiza unidades em volta de uma construção com alcance.
|
||||
lst.sensor = Pega dados de uma unidade ou construção.
|
||||
lst.set = Define uma variável.
|
||||
lst.operation = Performa uma operação com 1-2 variáveis.
|
||||
lst.end = Pula para o topo da pilha de instruções.
|
||||
lst.jump = Condicionalmente pula para um outro comando.
|
||||
lst.unitbind = Vincula a próxima unidade de um tipo, e armazena-a em [accent]@unit[].
|
||||
lst.unitcontrol = Controla a unidade atualmente vinculada.
|
||||
lst.unitradar = Localiza unidades em volta da unidade vinculada.
|
||||
lst.unitlocate = Localiza um tipo específico de posição/construção em qualquer lugar do mapa.\nRequer uma unidade vinculada.
|
||||
|
||||
block.resupply-point.name = Ponto de Reabastecimento
|
||||
block.parallax.name = Paralaxe
|
||||
@@ -1048,7 +1160,7 @@ block.thorium-wall.name = Muro de Tório
|
||||
block.thorium-wall-large.name = Muralha de Tório
|
||||
block.door.name = Porta
|
||||
block.door-large.name = Porta grande
|
||||
block.duo.name = Torreta dupla
|
||||
block.duo.name = Duo
|
||||
block.scorch.name = Lança-chamas
|
||||
block.scatter.name = Dispersão
|
||||
block.hail.name = Artilharia
|
||||
@@ -1066,12 +1178,12 @@ block.inverted-sorter.name = Ordenador invertido
|
||||
block.message.name = Mensagem
|
||||
block.illuminator.name = Iluminador
|
||||
block.illuminator.description = Uma fonte de luz pequena, configurável e compacta. Precisa de energia para funcionar.
|
||||
block.overflow-gate.name = Portão de Fluxo
|
||||
block.underflow-gate.name = Portão de Fluxo invertido
|
||||
block.overflow-gate.name = Portão de Sobrecarga
|
||||
block.underflow-gate.name = Portão de Sobrecarga Invertido
|
||||
block.silicon-smelter.name = Fundidora de silício
|
||||
block.phase-weaver.name = Palheta de fase
|
||||
block.pulverizer.name = Pulverizador
|
||||
block.cryofluid-mixer.name = Misturador de Crio Fluido
|
||||
block.cryofluid-mixer.name = Misturador de Crio-Fluido
|
||||
block.melter.name = Aparelho de fusão
|
||||
block.incinerator.name = Incinerador
|
||||
block.spore-press.name = Prensa de Esporo
|
||||
@@ -1079,7 +1191,7 @@ block.separator.name = Separador
|
||||
block.coal-centrifuge.name = Centrífugador de Carvão
|
||||
block.power-node.name = Célula de energia
|
||||
block.power-node-large.name = Célula de energia grande
|
||||
block.surge-tower.name = Torre de súrgio
|
||||
block.surge-tower.name = Torre de surto
|
||||
block.diode.name = Diodo
|
||||
block.battery.name = Bateria
|
||||
block.battery-large.name = Bateria grande
|
||||
@@ -1107,15 +1219,16 @@ block.tsunami.name = Tsunami
|
||||
block.swarmer.name = Enxame
|
||||
block.salvo.name = Salvo
|
||||
block.ripple.name = Ondulação
|
||||
block.phase-conveyor.name = Transportador de Fase
|
||||
block.phase-conveyor.name = Esteira de Fase
|
||||
block.bridge-conveyor.name = Esteira-Ponte
|
||||
block.plastanium-compressor.name = Compressor de Plastânio
|
||||
block.pyratite-mixer.name = Misturador de Piratita
|
||||
block.blast-mixer.name = Misturador de Explosão
|
||||
block.solar-panel.name = Painel Solar
|
||||
block.solar-panel-large.name = Painel Solar Grande
|
||||
block.oil-extractor.name = Bomba de Petróleo
|
||||
block.oil-extractor.name = Extrator de Petróleo
|
||||
block.repair-point.name = Ponto de Reparo
|
||||
block.repair-turret.name = Torre de Reparo
|
||||
block.pulse-conduit.name = Cano de Pulso
|
||||
block.plated-conduit.name = Cano Blindado
|
||||
block.phase-conduit.name = Cano de Fase
|
||||
@@ -1158,9 +1271,15 @@ block.exponential-reconstructor.name = Reconstrutor Exponencial
|
||||
block.tetrative-reconstructor.name = Reconstrutor Tetrativo
|
||||
block.payload-conveyor.name = Esteira de Carga
|
||||
block.payload-router.name = Roteador de Carga
|
||||
block.payload-propulsion-tower.name = Torre de Propulsão De Cargas
|
||||
block.payload-void.name = Destruidor de Cargas
|
||||
block.payload-source.name = Criador de Cargas
|
||||
block.disassembler.name = Desmontador
|
||||
block.silicon-crucible.name = Fornalha De Silício
|
||||
block.overdrive-dome.name = Domo de Sobrecarga
|
||||
block.duct.name = Duto
|
||||
block.duct-router.name = Duto Roteador
|
||||
block.duct-bridge.name = Duto-Ponte
|
||||
|
||||
block.switch.name = Alavanca
|
||||
block.micro-processor.name = Micro Processador
|
||||
@@ -1201,93 +1320,102 @@ tutorial.waves = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por
|
||||
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
|
||||
tutorial.launch = Quando você atinge uma horda específica, você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
|
||||
|
||||
item.copper.description = O material mais básico. Usado em todos os tipos de blocos.
|
||||
item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos.
|
||||
item.metaglass.description = Composto de vidro super resistente. Extensivamente usado para distribuição e armazenagem de líquidos.
|
||||
item.graphite.description = Carbono mineralizado, usado como munição e para isolação elétrica.
|
||||
item.sand.description = Um material comum que é usado extensivamente em derretimento, tanto em ligas como em fluxo.
|
||||
item.coal.description = Matéria vegetal fossilizada, formada muito depois de semeada. Usado extensivamente para produção de combustível e recursos.
|
||||
item.titanium.description = Um material raro super leve usado extensivamente no transporte de líquidos, em brocas e drones aéreos.
|
||||
item.thorium.description = Um metal denso e radioativo, Usado como suporte material e combustivel nuclear.
|
||||
item.scrap.description = Pedaços remanescentes de estruturas e unidades destruidas. Contem traços de diferentes metais.
|
||||
item.silicon.description = Condutor extremamente importante, com aplicação em paineis solares e dispositivos complexos.
|
||||
item.plastanium.description = Material leve e maleável usado em drones aéreos avançados e como munição de fragmentação.
|
||||
item.phase-fabric.description = Uma substância quase sem peso usada em eletrônica avançada e tecnologia de auto-reparo.
|
||||
item.surge-alloy.description = Uma liga avançada com propriedades elétricas únicas.
|
||||
item.spore-pod.description = Uma cápsula de esporos sintéticos, sintetizada de concentrações atmosféricas para propósitos industriais. Usada para conversão em petróleo, explosivos e combustíveis.
|
||||
item.blast-compound.description = Um composto instável usado em bombas e em explosivos. Sintetizado de cápsulas de esporos e outras substâncias voláteis. Uso como combustível não é recomendado.
|
||||
item.pyratite.description = Substância extremamente inflamável usada em armas incendiárias.
|
||||
liquid.water.description = O líquido mais útil, comumente usado em resfriamento de máquinas e no processamento de lixo. Dá pra beber, também.
|
||||
item.copper.description = Usado em todos os tipos de construção e munição.
|
||||
item.copper.details = Cobre. Metal anormalmente abundante em Serpulo. Estruturalmente fraco a não ser que seja reforçado.
|
||||
item.lead.description = Usado em transportação de líquido e estruturas elétricas.
|
||||
item.lead.details = Denso. Inerte. Extensivamente usado em baterias.\nObservação: Provavelmente tóxico para formas de vida biológica. Não que tenha muito restando aqui.
|
||||
item.metaglass.description = Usado para estruturas de distribuição e armazenagem de líquidos.
|
||||
item.graphite.description = Usado em componentes elétricos e como munição de torretas.
|
||||
item.sand.description = Usado na produção de outros materiais refinados.
|
||||
item.coal.description = Usado como combustível e produção de materiais refinados.
|
||||
item.coal.details = Matéria vegetal fossilizada, formada muito depois de semeada. Usado extensivamente para produção de combustível e recursos.
|
||||
item.titanium.description = Usado em estruturas de transportação de líquido, brocas e fábricas.
|
||||
item.thorium.description = Usado em estruturas duráveis e como combustível nuclear.
|
||||
item.scrap.description = Usado em Aparelhos de Fusão e Pulverizadores para refinar em outros materiais.
|
||||
item.scrap.details = Pedaços restantes de estruturas e unidades destruidas. Contém traços de diferentes metais.
|
||||
item.silicon.description = Usado em paineis solares, eletrônicos complexos e como munição perseguidora em torretas.
|
||||
item.plastanium.description = Usado em unidades avançadas, isolamento e munição de fragmentação.
|
||||
item.phase-fabric.description = Usado em eletrônicos avançados e estruturas reparadoras.
|
||||
item.surge-alloy.description = Usada em armamento avançado e estruturas defensia reativas.
|
||||
item.spore-pod.description = Usado para a conversão em óleo, explosivos e combustível.
|
||||
item.spore-pod.details = Esporos. Provavelmente uma forma de vida sintética. Emite gases tóxicos para outra vida biológica. Extremamente invasivo. Altamente inflamável em certas condições.
|
||||
item.blast-compound.description = Usado em bombas e como munição explosiva.
|
||||
item.pyratite.description = Usado em armamento incendiário e geradores abastecidos com combustão.
|
||||
liquid.water.description = Usado para refrigerar máquinas e no processamento de lixo.
|
||||
liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser separado em seus minerais constituentes, ou jogado nas unidades inimigas como uma arma.
|
||||
liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma.
|
||||
liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto.
|
||||
liquid.oil.description = Usado na produção de materiais avançados e como munição incendiária
|
||||
liquid.cryofluid.description = Usado como refrigerador em reatores, torretas e fábricas.
|
||||
|
||||
block.message.description = Mostra uma mensagem. Usado para comunicação entre aliados.
|
||||
block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro.
|
||||
block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente.
|
||||
block.silicon-smelter.description = Reduz areia a silício usando carvão puro. Produz silício.
|
||||
block.kiln.description = Derrete chumbo e areia no composto conhecido como metavidro. Requer pequenas quantidades de energia.
|
||||
block.plastanium-compressor.description = Produz plastânio usando petróleo e titânio.
|
||||
block.phase-weaver.description = Produz tecido de fase usando tório radioativo e areia. Requer massivas quantidades de energia para funcionar.
|
||||
block.alloy-smelter.description = Combina titânio, chumbo, silício e cobre para produzir liga de surto.
|
||||
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório.
|
||||
block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão.
|
||||
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita altamente inflamável.
|
||||
block.melter.description = Derrete sucata em escória para processamento posterior ou uso em torretas.
|
||||
block.separator.description = Separa escória em seus minerais componentes, oferece o resultado refriado.
|
||||
block.graphite-press.description = Comprime carvão em grafite.
|
||||
block.multi-press.description = Comprime carvão em grafite. Usada água como refrigerador.
|
||||
block.silicon-smelter.description = Refina silício com carvão e areia.
|
||||
block.silicon-crucible.description = Refina silício com carvão e areia, usando piratita como uma fonte de calor adicional. Mais eficiente em locais quentes.
|
||||
block.kiln.description = Derrete areia e chumbo em metavidro.
|
||||
block.plastanium-compressor.description = Produz plastânio do petróleo e titânio.
|
||||
block.phase-weaver.description = Sintetiza tecido de fase usando tório e areia.
|
||||
block.alloy-smelter.description = Funde titânio, chumbo, silício e cobre para produzir liga de surto.
|
||||
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir crio-fluido.
|
||||
block.blast-mixer.description = Produz composto explosivo da piratita e capsulas de esporo.
|
||||
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita.
|
||||
block.melter.description = Derrete sucata em escória.
|
||||
block.separator.description = Separa escória em seus minerais componentes.
|
||||
block.disassembler.description = Separa escória em traços de minerais componentes exóticos. Pode produzir tório.
|
||||
block.spore-press.description = Comprime cápsulas de esporos em petróleo.
|
||||
block.pulverizer.description = Esmaga sucata em areia. Util quando esta em falta de areia natural.
|
||||
block.pulverizer.description = Esmaga sucata em areia.
|
||||
block.coal-centrifuge.description = Solidifica petróleo em carvão.
|
||||
block.incinerator.description = Se livra de itens em excesso ou liquidos.
|
||||
block.power-void.description = Destroi qualquer energia que entra dentro. Apenas no modo sandbox.
|
||||
block.power-source.description = Infinitivamente da energia. Apenas no modo sandbox.
|
||||
block.item-source.description = Infinitamente dá itens. Apenas caixa de areia.
|
||||
block.item-void.description = Destroi qualquer item que entre sem requerir energia. Apenas no modo sandbox.
|
||||
block.liquid-source.description = Infinitivamente dá Liquidos. Apenas no modo sanbox.
|
||||
block.liquid-void.description = Destroi qualquer líquidos que entrar dentro. Apenas no modo sandbox.
|
||||
block.copper-wall.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.
|
||||
block.copper-wall-large.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos.
|
||||
block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.
|
||||
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos.
|
||||
block.incinerator.description = Vaporiza qualquer item ou líquido que recebe.
|
||||
block.power-void.description = Destroi qualquer energia que é recebida. Apenas no modo sandbox.
|
||||
block.power-source.description = Infinitivamente dá energia. Apenas no modo sandbox.
|
||||
block.item-source.description = Infinitamente dá itens. Apenas no modo sandbox.
|
||||
block.item-void.description = Destroi qualquer item que entrar. Apenas no modo sandbox.
|
||||
block.liquid-source.description = Infinitivamente dá líquidos. Apenas no modo sandbox.
|
||||
block.liquid-void.description = Destroi qualquer líquido que entrar. Apenas no modo sandbox.
|
||||
block.copper-wall.description = Um bloco defensivo barato. Útil para proteger o núcleo e torretas no começo.
|
||||
block.copper-wall-large.description = Um bloco defensivo barato. Útil para proteger o núcleo e torretas no começo. Ocupa múltiplos blocos.
|
||||
block.titanium-wall.description = Um bloco defensivo moderadamente forte. Providencia defesa moderada contra inimigos.
|
||||
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte. Providencia defesa moderada contra inimigos. Ocupa múltiplos blocos.
|
||||
block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
|
||||
block.plastanium-wall-large.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.\nOcupa múltiplos blocos.
|
||||
block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.
|
||||
block.thorium-wall-large.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.\nOcupa múltiplos blocos.
|
||||
block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.
|
||||
block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas ao impacto.\nOcupa múltiplos blocos.
|
||||
block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.
|
||||
block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.\nOcupa multiplos blocos.
|
||||
block.thorium-wall.description = Um bloco defensivo forte. Boa proteção contra inimigos.
|
||||
block.thorium-wall-large.description = Um bloco defensivo forte. Boa proteção contra inimigos. Ocupa múltiplos blocos.
|
||||
block.phase-wall.description = Um muro revestido com tecido de fase. Reflete a maioria das balas no impacto.
|
||||
block.phase-wall-large.description = Um muro revestido com tecido de fase. Reflete a maioria das balas ao impacto. Ocupa múltiplos blocos.
|
||||
block.surge-wall.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.
|
||||
block.surge-wall-large.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente. Ocupa multiplos blocos.
|
||||
block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar.
|
||||
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos.
|
||||
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficácia.
|
||||
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades.\nAquece demais se o escudo tomar dano. Pode usar líquidos para evitar superaquecimento. Pode-se usar tecido de fase para aumentar o tamanho do escudo.
|
||||
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisivel ao inimigo.
|
||||
block.conveyor.description = Bloco de transporte de item basico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
||||
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar. Ocupa múltiplos blocos.
|
||||
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas. Pode usar silício para aumentar o alcance e a eficácia.
|
||||
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos. Pode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas. Pode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||
block.overdrive-dome.description = Aumenta a velocidade de construções vizinhas. Requer tecido de fase e silício para operar.
|
||||
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades. Superaquece se muito dano for recebido. Opcionalmente usa refrigeradores para evitar superaquecimento. Tecido de fase aumenta o tamanho do escudo.
|
||||
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisível ao inimigo.
|
||||
block.conveyor.description = Bloco de transporte de item básico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
||||
block.titanium-conveyor.description = Bloco de transporte de item avançado. Move itens mais rapidos que esteiras padrões.
|
||||
block.plastanium-conveyor.description = Move os itens por grupos.\nRecebe os itens por trás, e despeja eles nas três outras direções.
|
||||
block.junction.description = Funciona como uma ponte para duas esteiras que estejam se cruzando. Util em situações que tenha duas esteiras separadas carregando materiais diferentes para lugares diferentes.
|
||||
block.bridge-conveyor.description = Bloco de transporte de itens avancado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
||||
block.phase-conveyor.description = Bloco de transporte de item avançado. Usa energia para teleportar itens a uma esteira de fase sobre uma severa distancia.
|
||||
block.plastanium-conveyor.description = Move os itens por grupos.Recebe os itens por trás, e despeja eles nas três outras direções.
|
||||
block.junction.description = Funciona como uma ponte para duas esteiras que estejam se cruzando. Útil em situações que tenha duas esteiras separadas carregando materiais diferentes para lugares diferentes.
|
||||
block.bridge-conveyor.description = Bloco de transporte de itens avançado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
||||
block.phase-conveyor.description = Instantaneamente transporta itens em cima de terreno ou contruções. Alcance mais longo do que uma esteira-ponte, mas requer energia.
|
||||
block.sorter.description = Filtra itens passando o selecionado para frente e os outros para os lados.
|
||||
block.inverted-sorter.description = Filtra os itens como um ordenador normal, porém, os itens escolhidos sairão pelas laterais.
|
||||
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Util para espalhar materiais de uma fonte para multiplos alvos.
|
||||
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Útil para espalhar materiais de uma fonte para multiplos alvos.
|
||||
block.router.details = Um mal necessário. Usar próximo de entradas de produção não é recomendado, pois ele vai ser entupido pela saída de itens.
|
||||
block.distributor.description = Um roteador avançado que espalhas os itens em 7 direções igualmente.
|
||||
block.overflow-gate.description = Uma combinação de roteador e divisor que apenas manda para a esquerda e direita se a frente estiver bloqueada.
|
||||
block.underflow-gate.description = O oposto de um portão de sobrecarga. Manda pra frente se a esquerda e a direita estiverem bloqueadas.
|
||||
block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia.
|
||||
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, sem consumo de energia.
|
||||
block.overflow-gate.description = Apenas manda itens para a esquerda e direita se a frente estiver bloqueada.
|
||||
block.underflow-gate.description = O oposto de um portão de sobrecarga. Apenas manda itens para frente se a esquerda e a direita estiverem bloqueadas.
|
||||
block.mass-driver.description = Estrutura de transporte de itens de longo alcance. Coleta grupos de itens e os atira em outras catapultas electromagnéticas.
|
||||
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos que não consome energia.
|
||||
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
|
||||
block.thermal-pump.description = A bomba final.
|
||||
block.thermal-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia.
|
||||
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
|
||||
block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões.
|
||||
block.pulse-conduit.description = Bloco avancado de transporte de líquido. Transporta líquidos mais rápido e armazena mais que os canos padrões.
|
||||
block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos.
|
||||
block.liquid-router.description = Aceita liquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de liquido. Útil para espalhar líquidos de uma fonte para múltiplos alvos.
|
||||
block.liquid-tank.description = Armazena grandes quantidades de liquido. Use quando a demanda de materiais não for constante ou para guardar itens para resfriar blocos vitais.
|
||||
block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando liquidos diferentes até localizações diferentes.
|
||||
block.bridge-conduit.description = Bloco de transporte de liquidos avancados. Possibilita o transporte de liquido sobre 3 blocos acima de construções ou paredes
|
||||
block.phase-conduit.description = Bloco avancado de transporte de liquido. Usa energia para teleportar liquidos para outro cano de fase em uma grande distância.
|
||||
block.liquid-router.description = Aceita líquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de líquido. Útil para espalhar líquidos de uma fonte para múltiplos alvos.
|
||||
block.liquid-tank.description = Armazena grandes quantidades de líquido. Manda para todos os lados, similarmente a um roteador de líquido.
|
||||
block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando líquidos diferentes até localizações diferentes.
|
||||
block.bridge-conduit.description = Bloco de transporte de líquidos avancados. Possibilita o transporte de líquido sobre 3 blocos acima de construções ou paredes
|
||||
block.phase-conduit.description = Bloco avancado de transporte de líquido. Usa energia para teleportar líquidos para outro cano de fase em uma grande distância.
|
||||
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
|
||||
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
|
||||
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
|
||||
@@ -1309,6 +1437,7 @@ block.laser-drill.description = Possibilita mineração ainda mais rapida usando
|
||||
block.blast-drill.description = A melhor mineradora. Requer muita energia.
|
||||
block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água disponível na superficie.
|
||||
block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
|
||||
block.cultivator.details = Tecnologia recuperada. Costumava produzir quantidades massivas de biomassa o mais eficiente o possível. Provavelmente o primeiro incubador de esporos cobrindo Serpulo agora.
|
||||
block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
|
||||
block.core-shard.description = A primeira iteração do núcleo. Uma vez destruído, todo o contato com a região é perdido. Não deixe isso acontecer.
|
||||
block.core-foundation.description = A segunda versão do núcleo. Armadurado melhor. Armazena mais recursos.
|
||||
@@ -1318,19 +1447,41 @@ block.container.description = Guarda uma pequena quantidade de itens. Usado para
|
||||
block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador.
|
||||
block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo.
|
||||
block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente.
|
||||
block.duo.description = Uma pequena torre de baixo custo. Útil contra unidades terrestres.
|
||||
block.scatter.description = Uma torre antiaérea essencial para a defesa. Dispara vários tiros aglomerados de chumbo, sucata ou metavidro.
|
||||
block.scorch.description = Uma torre que queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto.
|
||||
block.hail.description = Uma pequena torre de artilharia com grande alcance.
|
||||
block.wave.description = Uma torre de tamanho médio. Lança jatos de líquidos nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou fluido criogênico.
|
||||
block.lancer.description = Uma torre laser anti-terrestre média. Carrega e dispara poderosos feixes de energia.
|
||||
block.arc.description = Uma pequena torre elétrica com curto alcance. Dispara arcos de eletricidade nos seus inimigos.
|
||||
block.swarmer.description = Uma torre de mísseis de tamanho médio. Ataca ambos terrestre e aéreo disparando misseis teleguiados.
|
||||
block.salvo.description = Uma grande, versão avançada da dupla. Dispara rápidas rajadas de tiros nos seus inimigos.
|
||||
block.fuse.description = Uma torre grande com curto alcance. Dispara três feixes perfurantes nos seus inimigos.
|
||||
block.ripple.description = Uma torre de artilharia extremamente poderosa. Dispara varios tiros aglomerados a uma grande distância nos seus inimigos.
|
||||
block.cyclone.description = Uma grande torre que dispara balas explosivas que se fragmentam em unidades aéreas e terrestres próximas.
|
||||
block.spectre.description = Um grande canhão massivo. Dispara grandes tiros perfuradores de blindagem em inimigos aéreos e terrestres.
|
||||
block.meltdown.description = Um grande canhão laser massivo. Carrega e dispara um poderoso e persistente feixe nos seus inimigos. Requer um resfriamento para ser operada.
|
||||
block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
|
||||
block.duo.description = Dispara balas alternadas em inimigos.
|
||||
block.scatter.description = Dispara tiros aglomerados de chumbo, sucata ou metavidro em unidades aéreas.
|
||||
block.scorch.description = Queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto.
|
||||
block.hail.description = Dispara pequenas granadas em inimigos terrestres a longas distâncias.
|
||||
block.wave.description = Lança jatos de líquido nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou crio-fluido.
|
||||
block.tsunami.description = Lança poderosos jatos de líquido em inimigos. Automaticamente apaga incêndios se for abastecido com água ou crio-fluido.
|
||||
block.lancer.description = Carrega e dispara poderosos feixes de energia.
|
||||
block.arc.description = Dispara arcos de eletricidade em alvos terrestres.
|
||||
block.parallax.description = Dispara um feixe de energia que puxa unidades aéreas, danificando-as no processo.
|
||||
block.segment.description = Destrói projéteis inimigos que se aproximam. Feixes não serão detectados.
|
||||
block.swarmer.description = Dispara misseis teleguiados em inimigos.
|
||||
block.salvo.description = Dispara rápidas rajadas de tiros em inimigos.
|
||||
block.fuse.description = Dispara três feixes perfurantes em inimigos.
|
||||
block.ripple.description = Dispara grupos de granadas em alvos terrestres a longas distâncias.
|
||||
block.cyclone.description = Dispara aglomerados de fogo antiaéreo explosivos em inimigos próximos.
|
||||
block.spectre.description = Dispara grandes tiros perfuradores de armaduras tanto em inimigos aéreos quanto terrestres.
|
||||
block.meltdown.description = Carrega e dispara um poderoso e persistente feixe de laser em inimigos. Requer refrigeradores para operar.
|
||||
block.foreshadow.description = Dispara um feixe gigante de único alvo a grandes distâncias. Prioriza inimigos com maior vida máxima.
|
||||
block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
|
||||
block.payload-conveyor.description = Move cargas grandes, como unidades de fábricas.
|
||||
block.payload-router.description = Separa cargas recebidas em 3 direções de saída.
|
||||
block.command-center.description = Controla o comportamento de unidades com vários comandos diferentes.
|
||||
block.ground-factory.description = Produz unidades terrestres. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||
block.air-factory.description = Produz unidades aéreas. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||
block.naval-factory.description = Produz unidades navais. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||
block.additive-reconstructor.description = Melhora unidades recebidas para o seu segundo nível.
|
||||
block.multiplicative-reconstructor.description = Melhora unidades recebidas para o seu terceiro nível.
|
||||
block.exponential-reconstructor.description = Melhora unidades recebidas para o seu quarto nível.
|
||||
block.tetrative-reconstructor.description = Melhora unidades recebidas para o seu quinto e último nível.
|
||||
block.micro-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções.
|
||||
block.logic-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções. Mais rápido que um micro processador.
|
||||
block.hyper-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções. Mais rápido que um processador lógico.
|
||||
block.memory-cell.description = Guarda informações para um processador lógico.
|
||||
block.memory-bank.description = Guarda informações para um processador lógico. Capacidade alta.
|
||||
block.logic-display.description = Exibe gráficos arbitrários de um processador lógico.
|
||||
block.large-logic-display.description = Exibe gráficos arbitrários de um processador lógico.
|
||||
block.switch.description = Uma alavanca alternável. O seu estado pode ser lido e controlado com processadores lógicos.
|
||||
block.interplanetary-accelerator.description = Uma torre-canhão eletromagnético gigante. Acelera núcleos escapando a velocidade para instalação interplanetária.
|
||||
|
||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Schema această va fi ștearsă permanent.
|
||||
schematic.rename = Redenumește Schema
|
||||
schematic.info = {0}x{1}, {2} blocuri
|
||||
schematic.disabled = [scarlet]Schemele sunt dezactivate[]\nNu ai voie să folosești scheme pe această [accent]hartă[] sau [accent]server.
|
||||
schematic.tags = Etichete:
|
||||
schematic.edittags = Editează Etichetele
|
||||
schematic.addtag = Adaugă Etichetă
|
||||
schematic.texttag = Etichetă Text
|
||||
schematic.icontag = Etichetă Iconiță
|
||||
schematic.renametag = Redenumește Eticheta
|
||||
schematic.tagdelconfirm = Vrei să ștergi permanent eticheta?
|
||||
schematic.tagexists = Acea etichetă există deja.
|
||||
|
||||
stats = Informații
|
||||
stat.wave = Valuri Învinse:[accent] {0}
|
||||
@@ -306,9 +314,8 @@ data.exported = Date exportate.
|
||||
data.invalid = Aceste date de joc nu sunt valide.
|
||||
data.import.confirm = Importul de date externe va suprascrie[scarlet] toate[] datele tale de joc curente.\n[accent]Acest proces este ireversibil![]\n\nOdată ce datele sunt importate, jocul tău se va opri imediat.
|
||||
quit.confirm = Sigur vrei să abandonezi?
|
||||
quit.confirm.tutorial = Sigur știi ce faci?\nTutorialul poate fi reluat în[accent] Setări->Joc->Reia Tutorialul.[]
|
||||
loading = [accent]Se încarcă...
|
||||
reloading = [accent]Se Reincarcă Modurile...
|
||||
reloading = [accent]Se Reîncarcă Modurile...
|
||||
saving = [accent]Se salvează...
|
||||
respawn = [accent][[{0}][] ca să te refaci în nucleu
|
||||
cancelbuilding = [accent][[{0}][] pt a curăța planul
|
||||
@@ -479,6 +486,7 @@ filter.option.circle-scale = Scară circulară
|
||||
filter.option.octaves = Octave
|
||||
filter.option.falloff = Cădere
|
||||
filter.option.angle = Unghi
|
||||
filter.option.rotate = Rotește
|
||||
filter.option.amount = Cantitate
|
||||
filter.option.block = Bloc
|
||||
filter.option.floor = Podea
|
||||
@@ -499,6 +507,7 @@ campaign = Campanie
|
||||
load = Încarcă
|
||||
save = Salvează
|
||||
fps = FPS: {0}
|
||||
tps = TPS: {0}
|
||||
ping = Ping: {0}ms
|
||||
language.restart = Repornește jocul pentru ca setările de limbă să aibă efect.
|
||||
settings = Setări
|
||||
@@ -530,7 +539,7 @@ launch.from = Lansează Din: [accent]{0}
|
||||
launch.destination = Destinație: {0}
|
||||
configure.invalid = Cantitatea trebuie să fie un număr între 0 și {0}.
|
||||
add = Adaugă...
|
||||
boss.health = Viața Gardianului
|
||||
guardian = Gardian
|
||||
|
||||
connectfail = [scarlet]Eroare de conexiune:\n\n[accent]{0}
|
||||
error.unreachable = Nu s-a putut ajunge la server.\nesigur adresa e scrisă corect?
|
||||
@@ -574,6 +583,7 @@ sector.attacked = Sectorul [accent]{0}[white] este atacat!
|
||||
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
||||
#spațiul lipsă de mai jos e intenționat
|
||||
sector.captured = Ai capturat sectorul [accent]{0}[white]!
|
||||
sector.changeicon = Schimbă Iconița
|
||||
|
||||
threat.low = Scăzută
|
||||
threat.medium = Medie
|
||||
@@ -626,7 +636,8 @@ status.wet.name = Umed
|
||||
status.muddy.name = Noroios
|
||||
status.melting.name = Topește
|
||||
status.sapped.name = Slăbește
|
||||
status.spore-slowed.name = Împiedicat de Spori
|
||||
status.electrified.name = Electrificat
|
||||
status.spore-slowed.name = Încetinit de Spori
|
||||
status.tarred.name = Păcurit
|
||||
status.overclock.name = Suprasolicitat
|
||||
status.shocked.name = Șoc
|
||||
@@ -654,6 +665,7 @@ settings.clearcampaignsaves.confirm = Sigur vrei să ștergi toate salvările di
|
||||
paused = [accent]< Pauză >
|
||||
clear = Curăță
|
||||
banned = [scarlet]Interzis
|
||||
unsupported.environment = [scarlet]Mediu Neacceptat
|
||||
yes = Da
|
||||
no = Nu
|
||||
info.title = Info
|
||||
@@ -692,6 +704,7 @@ stat.memorycapacity = Capacitate Memorie
|
||||
stat.basepowergeneration = Generare Electricitate (Bază)
|
||||
stat.productiontime = Timp Producție
|
||||
stat.repairtime = Durată Reparare Bloc
|
||||
stat.repairspeed = Viteză Reparare
|
||||
stat.weapons = Arme
|
||||
stat.bullet = Glonț
|
||||
stat.speedincrease = Creștere Viteză
|
||||
@@ -737,13 +750,15 @@ stat.speedmultiplier = Multiplicator Viteză
|
||||
stat.reloadmultiplier = Multiplicator Lovituri/sec
|
||||
stat.buildspeedmultiplier = Multiplicator Viteză Construcție
|
||||
stat.reactive = Reacționează la
|
||||
stat.healing = Reparare
|
||||
|
||||
ability.forcefield = Câmp de Forță
|
||||
ability.repairfield = Câmp de Reparare
|
||||
ability.statusfield = Câmp Suprasolicitare Unități
|
||||
ability.statusfield = {0} Câmp Suprasolicitare Unități
|
||||
ability.unitspawn = Fabrică de {0}
|
||||
ability.shieldregenfield = Scut Regenerabil
|
||||
ability.movelightning = Mișcare Fulger
|
||||
ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte
|
||||
|
||||
bar.drilltierreq = Burghiu Mai Bun Necesar
|
||||
bar.noresources = Resurse lipsă
|
||||
@@ -766,6 +781,7 @@ bar.power = Electricitate
|
||||
bar.progress = Progres
|
||||
bar.input = Necesită
|
||||
bar.output = Produce
|
||||
bar.strength = [stat]{0}[lightgray]x putere
|
||||
|
||||
units.processorcontrol = [lightgray]Controlat de Procesor
|
||||
|
||||
@@ -974,6 +990,7 @@ rules.wavetimer = Valuri pe Timp
|
||||
rules.waves = Valuri
|
||||
rules.attack = Modul Atac
|
||||
rules.buildai = AI-ul Construiește
|
||||
rules.corecapture = Capturează Nucleele Distruse
|
||||
rules.enemyCheat = Resurse infinite pt AI (echipa roșie)
|
||||
rules.blockhealthmultiplier = Multiplicatorul Vieții Blocurilor
|
||||
rules.blockdamagemultiplier = Multiplicatorul Deteriorării Blocurilor
|
||||
@@ -1029,6 +1046,7 @@ item.blast-compound.name = Compus Explozibil
|
||||
item.pyratite.name = Piratită
|
||||
item.metaglass.name = Metasticlă
|
||||
item.scrap.name = Fier Vechi
|
||||
|
||||
liquid.water.name = Apă
|
||||
liquid.slag.name = Zgură
|
||||
liquid.oil.name = Petrol
|
||||
@@ -1060,6 +1078,11 @@ unit.minke.name = Minke
|
||||
unit.bryde.name = Bryde
|
||||
unit.sei.name = Sei
|
||||
unit.omura.name = Omura
|
||||
unit.retusa.name = Retusa
|
||||
unit.oxynoe.name = Oxynoe
|
||||
unit.cyerce.name = Cyerce
|
||||
unit.aegires.name = Aegires
|
||||
unit.navanax.name = Navanax
|
||||
unit.alpha.name = Alpha
|
||||
unit.beta.name = Beta
|
||||
unit.gamma.name = Gamma
|
||||
@@ -1119,6 +1142,7 @@ block.craters.name = Cratere
|
||||
block.sand-water.name = Apă cu Nisip
|
||||
block.darksand-water.name = Apă cu Nisip Negru
|
||||
block.char.name = Turbă
|
||||
block.rhyolite.name = Riolit
|
||||
block.dacite.name = Dacit
|
||||
block.dacite-boulder.name = Bolovan de Dacit
|
||||
block.dacite-wall.name = Perete de Dacit
|
||||
@@ -1206,9 +1230,9 @@ block.cultivator.name = Cultivator
|
||||
block.conduit.name = Conductă
|
||||
block.mechanical-pump.name = Pompă Mecanică
|
||||
block.item-source.name = Sursă de Material
|
||||
block.item-void.name = Portal de Material
|
||||
block.item-void.name = Vid de Material
|
||||
block.liquid-source.name = Sursă de Lichid
|
||||
block.liquid-void.name = Portal de Lichid
|
||||
block.liquid-void.name = Vid de Lichid
|
||||
block.power-void.name = Consumator de Electricitate
|
||||
block.power-source.name = Sursă de Electricitate
|
||||
block.unloader.name = Descărcător
|
||||
@@ -1227,6 +1251,7 @@ block.solar-panel.name = Panou Solar
|
||||
block.solar-panel-large.name = Panou Solar Mare
|
||||
block.oil-extractor.name = Extractor de Petrol
|
||||
block.repair-point.name = Punct de Reparare
|
||||
block.repair-turret.name = Pistol de Reparare
|
||||
block.pulse-conduit.name = Conductă cu Puls
|
||||
block.plated-conduit.name = Conductă Armată
|
||||
block.phase-conduit.name = Conductă de Fază
|
||||
@@ -1269,6 +1294,12 @@ block.exponential-reconstructor.name = Reconstructor Exponențial
|
||||
block.tetrative-reconstructor.name = Reconstructor Tetrativ
|
||||
block.payload-conveyor.name = Bandă în Masă
|
||||
block.payload-router.name = Router în Masă
|
||||
block.duct.name = Canal
|
||||
block.duct-router.name = Router de Canal
|
||||
block.duct-bridge.name = Pod de Canal
|
||||
block.payload-propulsion-tower.name = Turn Propulsor de Încărcătură
|
||||
block.payload-void.name = Vid de Încărcătură
|
||||
block.payload-source.name = Sursă de Încărcătură
|
||||
block.disassembler.name = Dezasamblator
|
||||
block.silicon-crucible.name = Creuzet de Silicon
|
||||
block.overdrive-dome.name = Dom de Suprasolicitare
|
||||
@@ -1290,7 +1321,6 @@ block.memory-bank.name = Bancă de Memorie
|
||||
team.blue.name = albastră
|
||||
team.crux.name = roșie
|
||||
team.sharded.name = portocalie
|
||||
team.orange.name = portocalie
|
||||
team.derelict.name = abandonată
|
||||
team.green.name = verde
|
||||
team.purple.name = mov
|
||||
@@ -1311,6 +1341,7 @@ hint.placeConveyor.mobile = Benzile transportă materiale din burghie către alt
|
||||
hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie.
|
||||
hint.breaking = Ține apăsat [accent]click-dreapta[] și trage pe ecran pt a distruge blocuri.
|
||||
hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și dă click pt a distruge blocuri.\n\nȚine apăsat cu degetul pt o secundă și trage pt a distruge mai multe blocuri deodată.
|
||||
hint.blockInfo = Poți vedea informații despre un bloc selectându-l în [accent]meniul de construcție[] și dând click pe butonul [accent][[?][] din dreapta.
|
||||
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
|
||||
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
|
||||
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
|
||||
@@ -1344,7 +1375,7 @@ item.graphite.description = Folosit pt componente electrice și alimentarea arme
|
||||
item.sand.description = Folosit pt producție sau alte materiale rafinate.
|
||||
item.coal.description = Folosit extensiv ca combustibil și pt producerea de materiale rafinate.
|
||||
item.coal.details = Pare să fie materie vegetală fosilizată, formată cu mult înainte de evenimentul însămânțării.
|
||||
item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și aeronautică.
|
||||
item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și în fabrici.
|
||||
item.thorium.description = Folosit în structuri durabile și combustibil nuclear.
|
||||
item.scrap.description = Folosit in topitoare și pulverizatoare pt a fi rafinat în alte materiale.
|
||||
item.scrap.details = Rămășițe ale structurilor și unităților vechi.
|
||||
@@ -1565,7 +1596,7 @@ logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind pr
|
||||
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
||||
lenum.shoot = Lovește către o locație.
|
||||
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
||||
lenum.configure = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
||||
lenum.config = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
||||
lenum.enabled = Specifică dacă clădirea este pornită.
|
||||
|
||||
laccess.color = Culoarea iluminatorului.
|
||||
@@ -1573,6 +1604,7 @@ laccess.controller = Controlorul unității. Dacă e controlată de procesor, re
|
||||
laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă.
|
||||
laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0.
|
||||
laccess.commanded = [red]Învechit. Se va șterge![]\nFolosește [accent]controlled[].
|
||||
laccess.progress = Progresul acțiunii, de la 0 la 1.\nReturnează progresul producției, al construcției sau reîncărcarea armelor.
|
||||
|
||||
graphicstype.clear = Umple monitorul cu o culoare.
|
||||
graphicstype.color = Setează culoarea pt următoarele instrucțiuni Draw.
|
||||
@@ -1604,9 +1636,15 @@ lenum.min = Minimul a două numere.
|
||||
lenum.max = Maximul a două numere.
|
||||
lenum.angle = Unghiul unui vector în grade.
|
||||
lenum.len = Lungimea unui vector.
|
||||
|
||||
lenum.sin = Sinus în grade.
|
||||
lenum.cos = Cosinus în grade.
|
||||
lenum.tan = Tangentă în grade.
|
||||
|
||||
lenum.asin = Arcsinus în grade.
|
||||
lenum.acos = Arccosinus în grade.
|
||||
lenum.atan = Arctangentă în grade.
|
||||
|
||||
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
||||
lenum.rand = Număr natural aleatoriu în intervalul [0, val).
|
||||
lenum.log = Logaritm natural (ln).
|
||||
|
||||
@@ -1506,7 +1506,7 @@ block.memory-cell.description = Хранит информацию для лог
|
||||
block.memory-bank.description = Хранит информацию для логического процессора. Большая ёмкость.
|
||||
block.logic-display.description = Отображает произвольную графику из логического процессора.
|
||||
block.large-logic-display.description = Отображает произвольную графику из логического процессора.
|
||||
block.interplanetary-accelerator.description = Массивный рельсотронный ускоритель. Ускоряет ядро, позволяя преодолеть гравитацию для межпланетного развёртывания
|
||||
block.interplanetary-accelerator.description = Массивная электромагнитная башня-рельсотрон. Ускоряет ядро, позволяя преодолеть гравитацию для межпланетного развёртывания.
|
||||
|
||||
unit.dagger.description = Стреляет стандартными пулями по всем врагам поблизости.
|
||||
unit.mace.description = Стреляет потоками огня по всем врагам поблизости.
|
||||
|
||||
@@ -13,11 +13,14 @@ link.google-play.description = Google Play mağaza sayfası
|
||||
link.f-droid.description = F-Droid kataloğu
|
||||
link.wiki.description = Resmi Mindustry wikisi
|
||||
link.suggestions.description = Yeni özellikler öner
|
||||
link.bug.description = Hata mı buldun? Hemen şikayet et!
|
||||
linkfail = Link açılamadı!\nURL kopyalandı.
|
||||
screenshot = Ekran görüntüsü {0} konumuna kaydedildi
|
||||
screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok.
|
||||
gameover = Kaybettin
|
||||
gameover.waiting = [accent]Harita Bekleniyor...
|
||||
gameover.pvp = [accent] {0}[] Takımı kazandı!
|
||||
gameover.disconnect = Bağlantı Koptu!
|
||||
highscore = [accent]Yeni rekor!
|
||||
copied = Panoya Kopyalandı.
|
||||
indev.popup = [accent]v6[] şu anda [accent]beta aşamasındadır[].\n[lightgray]Bu demektir ki:[]\n[scarlet]- Mücadele modu tamamlanmamıştır[]\n- Müzik ve ses efektleri tamamlanmamıştır veya eksiktir\n- Gördüğün her şey değişime ya da kaldırılmaya açıktır.\n\nHataları ve çökmeleri [accent]Github[]'da bildir.
|
||||
@@ -38,11 +41,13 @@ be.ignore = Hayır
|
||||
be.noupdates = Yeni güncelleme bulunamadı.
|
||||
be.check = Güncellemeleri kontrol et
|
||||
|
||||
mod.featured.title = Mod Tarayıcısı
|
||||
mod.featured.dialog.title = Mod Tarayıcısı
|
||||
mods.browser.selected = Seçilen Mod
|
||||
mods.browser.add = Modu İndir
|
||||
mods.github.open = Modun GitHub Sayfasını Aç
|
||||
mods.browser = Mod Tarayıcı
|
||||
mods.browser.selected = Seçilmiş Mod
|
||||
mods.browser.add = Yükle
|
||||
mods.browser.reinstall = Yeniden Yükle
|
||||
mods.github.open = Repo
|
||||
mods.browser.sortdate = En Yeniye göre Sırala
|
||||
mods.browser.sortstars = Yıldıza göre Sırala
|
||||
|
||||
schematic = Şema
|
||||
schematic.add = Şemayı Kaydet...
|
||||
@@ -62,7 +67,16 @@ schematic.delete.confirm = Bu şema tamamen yok edilecek.
|
||||
schematic.rename = Şemayı yeniden adlandır
|
||||
schematic.info = {0}x{1}, {2} blok
|
||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
||||
schematic.tags = Etiketler:
|
||||
schematic.edittags = Etiketleri Düzenle
|
||||
schematic.addtag = Etiket Ekle
|
||||
schematic.texttag = Yazı Etiketi
|
||||
schematic.icontag = İcon Etiketi
|
||||
schematic.renametag = Etiketi Yeniden Adlandır
|
||||
schematic.tagdelconfirm = Bu Etiketi Silmek istediğine emin misin?
|
||||
schematic.tagexists = Böyle bir Etiket zaten var.
|
||||
|
||||
stats = İstatistikler
|
||||
stat.wave = Yenilen Dalgalar:[accent] {0}
|
||||
stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0}
|
||||
stat.built = İnşa Edilen Yapılar:[accent] {0}
|
||||
@@ -86,6 +100,7 @@ joingame = Oyuna Katıl
|
||||
customgame = Özel Oyun
|
||||
newgame = Yeni Oyun
|
||||
none = <yok>
|
||||
none.found = [lightgray]<Bulunamadı>
|
||||
minimap = Harita
|
||||
position = Pozisyon
|
||||
close = Kapat
|
||||
@@ -106,17 +121,20 @@ committingchanges = Değişiklikler Uygulanıyor
|
||||
done = Bitti
|
||||
feature.unsupported = Cihazınızda bu özellik desteklenmemektedir.
|
||||
|
||||
mods.alphainfo = Modların alfa aşamasında olduğunu ve [scarlet]oldukça hatalı olabileceklerini[] unutmayın.\nBulduğunuz sorunları Mindustry GitHub'ı veya Discord'una bildirin.
|
||||
mods.initfailed = [red]⚠[] OH NO! Mindustry Çöktü. Bu Büyük ihtimalle bir moddan kaynaklandı.\n\nSonsuz Çökmeyi önlemek için, [red]tüm modlar kapatıldı.[]\n\nBu özelliği kapamak için, [accent]Ayarlar->Oyun->Modları Çökmede Kapa[].
|
||||
mods = Modlar
|
||||
mods.none = [lightgray]Hiç mod bulunamadı!
|
||||
mods.guide = Mod Rehberi
|
||||
mods.report = Hata bildir
|
||||
mods.openfolder = Mod klasörünü aç
|
||||
mods.viewcontent = İçeriği Görüntüle
|
||||
mods.reload = Yeniden Yükle
|
||||
mods.reloadexit = Modları yeniden yüklemek için oyun kapanacak.
|
||||
mod.installed = [[Yüklendi]
|
||||
mod.display = [gray]Mod:[orange] {0}
|
||||
mod.enabled = [lightgray]Etkin
|
||||
mod.disabled = [scarlet]Devre Dışı
|
||||
mod.multiplayer.compatible = [gray]Çok Oyunculuya Uygun
|
||||
mod.disable = Devre Dışı Bırak
|
||||
mod.content = İçerik:
|
||||
mod.delete.error = Mod silinemiyor. Dosya kullanımda olabilir.
|
||||
@@ -150,7 +168,11 @@ launchcore = Kalkış
|
||||
filename = Dosya Adı:
|
||||
unlocked = Yeni içerik açıldı!
|
||||
completed = [accent]Tamamlandı
|
||||
available = Yeni Araştırma Mümkün!
|
||||
techtree = Teknoloji Ağacı
|
||||
research.legacy = [accent]5.0[] Araştırma Datası Bulnudu.\n[accent]Bu datayı Yüklemek ister misin?[], yoksa [accent]silip[] baştan mı başlamak istersin? (önerilir)?
|
||||
research.load = Yükle
|
||||
research.discard = Sil
|
||||
research.list = [lightgray]Araştırmalar:
|
||||
research = Araştır
|
||||
researched = [lightgray]{0} Araştırıldı.
|
||||
@@ -181,8 +203,8 @@ host.info = [accent]host[], [scarlet]6567[] portunda bir sunucuya ev sahipliği
|
||||
join.info = Burada, bağlanmak istediğin sunucunun [accent]IP[] adresini girebilir veya [accent]yerel ağ[] sunucularını görebilirsin..\nHem yerel ağ hem de geniş alan ağı çoklu oyuncu için destekleniyor.\n\n[lightgray]Not: Otomatik bir global sunucu listesi yok; eğer birisine IP adresi kullanarak bağlanmak istiyorsan IP adresini istemelisin.
|
||||
hostserver = Çok Oyunculu Oyun Aç
|
||||
invitefriends = Arkadaşlarını Davet Et
|
||||
hostserver.mobile = Oyun Kur
|
||||
host = Kur
|
||||
hostserver.mobile = Sunucu Kur
|
||||
host = Sunucu Kur
|
||||
hosting = [accent]Sunucu açılıyor...
|
||||
hosts.refresh = Yenile
|
||||
hosts.discovering = Yerel ağ oyunu aranıyor
|
||||
@@ -195,10 +217,17 @@ servers.local = Yerel Sunucular
|
||||
servers.remote = Uzak Sunucular
|
||||
servers.global = Topluluk Sunucuları
|
||||
|
||||
servers.disclaimer = Topluluk Sunucuları, [accent]Yapımcı tarafından yönetilmiyor!\n\nSunucularda, her yaşa uygun olmayan yapı ve içerikler içerebilir!
|
||||
servers.showhidden = Gizli Sunucuları Göster
|
||||
server.shown = Görünür
|
||||
server.hidden = Gizli
|
||||
|
||||
trace = Oyuncuyu Takip Et
|
||||
trace.playername = Oyuncu İsmi: [accent]{0}
|
||||
trace.ip = IP: [accent]{0}
|
||||
trace.id = Özel ID: [accent]{0}
|
||||
trace.times.joined = Girme Sayısı: [accent]{0}
|
||||
trace.times.kicked = Atılma Sayısı: [accent]{0}
|
||||
trace.mobile = Mobil Sürüm: [accent]{0}
|
||||
trace.modclient = Özel Sürüm: [accent]{0}
|
||||
invalidid = Geçersiz Sürüm ID'si! Bir hata raporu gönder.
|
||||
@@ -228,6 +257,7 @@ disconnect.timeout = Zaman aşımı.
|
||||
disconnect.data = Dünya verisi yüklenemedi!
|
||||
cantconnect = Oyuna girilemiyor ([accent]{0}[]).
|
||||
connecting = [accent]Bağlanılıyor...
|
||||
reconnecting = [accent]Yeniden Bağlanılıyor...
|
||||
connecting.data = [accent]Dünya verisi yükleniyor...
|
||||
server.port = Port:
|
||||
server.addressinuse = Adres zaten kullanılıyor!
|
||||
@@ -273,6 +303,10 @@ cancel = İptal
|
||||
openlink = Bağlantıyı Aç
|
||||
copylink = Bağlantıyı Kopyala
|
||||
back = Geri
|
||||
max = Maks
|
||||
crash.export = Çökme Hatasını Günlüğünü Dışarı Aktar
|
||||
crash.none = Çökme Hatası Günlüğü Bulunamadı.
|
||||
crash.exported = Çökme Hatası Günlüğü Dışarı Aktarıldı.
|
||||
data.export = Veriyi Dışa Aktar
|
||||
data.import = Veriyi İçe Aktar
|
||||
data.openfolder = Veri Klasörü Aç
|
||||
@@ -280,7 +314,6 @@ data.exported = Veri dışa aktarıldı.
|
||||
data.invalid = Bu oyun verisi geçerli değil.
|
||||
data.import.confirm = Dışarıdan içeri veri aktarmak şu anki verilerinizin [scarlet]tamamını[] silecektir.[accent]Bu işlem geri alınamaz![]\n\nVeri içeri aktarıldığında oyundan çıkacaksınız.
|
||||
quit.confirm = Çıkmak istediğinize emin misiniz?
|
||||
quit.confirm.tutorial = Ne yaptığınıza emin misiniz?\nÖğreticiyi [accent] Ayarlar -> Oyun -> Öğreticiyi Yeniden Al[]'dan tekrar yapabilirsiniz.
|
||||
loading = [accent]Yükleniyor...
|
||||
reloading = [accent]Modlar Yeniden Yükleniyor...
|
||||
saving = [accent]Kayıt ediliyor...
|
||||
@@ -289,6 +322,8 @@ cancelbuilding = [accent][[{0}][] Planı temizle
|
||||
selectschematic = [accent][[{0}][] Seç ve kopyala
|
||||
pausebuilding = [accent][[{0}][] İnşaatı durdur
|
||||
resumebuilding = [scarlet][[{0}][] İnşaata devam et
|
||||
enablebuilding = [scarlet][[{0}][] İnşa Etmeyi Başlat
|
||||
showui = UI Kapalı.\nAçmak için [accent][[{0}][] bas.
|
||||
wave = [accent]Dalga {0}
|
||||
wave.cap = [accent]Dalga {0}/{1}
|
||||
wave.waiting = [lightgray]{0} saniye içinde dalga başlayacak
|
||||
@@ -296,6 +331,8 @@ wave.waveInProgress = [lightgray]Dalga gerçekleşiyor
|
||||
waiting = [lightgray]Bekleniliyor...
|
||||
waiting.players = Oyuncular bekleniliyor...
|
||||
wave.enemies = [lightgray]{0} Tane Düşman Kaldı
|
||||
wave.enemycores = [accent]{0}[lightgray] Düşman Çekirdekler
|
||||
wave.enemycore = [accent]{0}[lightgray] Düşman Çekirdek
|
||||
wave.enemy = [lightgray]{0} Tane Düşman Kaldı
|
||||
wave.guardianwarn = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
||||
wave.guardianwarn.one = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
||||
@@ -341,7 +378,6 @@ editor.center = Ortala
|
||||
workshop = Atölye
|
||||
waves.title = Dalgalar
|
||||
waves.remove = Kaldır
|
||||
waves.never = <asla>
|
||||
waves.every = her
|
||||
waves.waves = dalga(lar)
|
||||
waves.perspawn = doğma noktası başına
|
||||
@@ -356,6 +392,7 @@ waves.invalid = Panoda geçersiz dalga sayısı var.
|
||||
waves.copied = Dalgalar kopyalandı.
|
||||
waves.none = Düşman bulunamadı.\nBoş dalga düzenlerin otomatik olarak varsayılan düzenle değiştirileceğini unutmayın
|
||||
|
||||
#bunlar özellikle küçük başlıyor.
|
||||
wavemode.counts = miktarlar
|
||||
wavemode.totals = toplamlar
|
||||
wavemode.health = can
|
||||
@@ -447,6 +484,7 @@ filter.option.circle-scale = Daire Ölçek
|
||||
filter.option.octaves = Oktavlar
|
||||
filter.option.falloff = Düşüş
|
||||
filter.option.angle = Açı
|
||||
filter.option.rotate = Döndür
|
||||
filter.option.amount = Miktar
|
||||
filter.option.block = Blok
|
||||
filter.option.floor = Zemin
|
||||
@@ -468,6 +506,9 @@ load = Yükle
|
||||
save = Kaydet
|
||||
fps = FPS: {0}
|
||||
ping = Ping: {0}ms
|
||||
tps = TPS: {0}
|
||||
memory = Mem: {0}mb
|
||||
memory2 = Mem:\n {0}mb +\n {1}mb
|
||||
language.restart = Dil ayarlarının çalışması için lütfen oyunu yeniden başlatın.
|
||||
settings = Ayarlar
|
||||
tutorial = Öğretici
|
||||
@@ -482,26 +523,23 @@ complete = [lightgray]Ulaş:
|
||||
requirement.wave = Bölge {1}'de Dalga {0}
|
||||
requirement.core = {0}`da Düşman Çekirdeği Yok Et
|
||||
requirement.research = {0} araştır
|
||||
requirement.produce = {0} üret
|
||||
requirement.capture = {0} sektörünü ele geçir
|
||||
bestwave = [lightgray]En İyi Dalga: {0}
|
||||
launch.text = Kalkış
|
||||
research.multiplayer = Sadece kurucu araştırma yapabilir.
|
||||
uncover = Aç
|
||||
configure = Ekipmanı Yapılandır
|
||||
|
||||
loadout = Yükleme
|
||||
resources = Kaynaklar
|
||||
bannedblocks = Yasaklı Bloklar
|
||||
addall = Hepsini Ekle
|
||||
launch.from = [accent]{0} dan fırlatılıyor.
|
||||
launch.destination = Varış Yeri: {0}
|
||||
configure.invalid = Miktar 0 ve {0} arasında bir sayı olmalı.
|
||||
zone.unlocked = [lightgray]{0} kilidi açıldı.
|
||||
zone.requirement.complete = {0}. dalgaya ulaşıldı:\n{1} bölge şartları karşılandı.
|
||||
zone.resources = [lightgray]Tespit Edilen Kaynaklar:
|
||||
zone.objective = [lightgray]Hedef: [accent]{0}
|
||||
zone.objective.survival = Hayatta Kal
|
||||
zone.objective.attack = Düşman Merkezini Yok Et
|
||||
add = Ekle...
|
||||
boss.health = Boss Canı
|
||||
guardian = Gardian
|
||||
|
||||
connectfail = [crimson]Bağlantı hatası:\n\n[accent]{0}
|
||||
error.unreachable = Sunucuya ulaşılamıyor.\nAdresin doğru yazıldığına emin misiniz?
|
||||
@@ -523,28 +561,57 @@ weather.fog.name = Sis
|
||||
sectors.unexplored = [lightgray]Keşfedilmemiş
|
||||
sectors.resources = Kaynaklar:
|
||||
sectors.production = Üretim:
|
||||
sectors.export = İhracat:
|
||||
sectors.time = Zaman:
|
||||
sectors.threat = Tehlike:
|
||||
sectors.wave = Dalga:
|
||||
sectors.stored = Depolanan:
|
||||
sectors.resume = Devam Et
|
||||
sectors.launch = Kalkış
|
||||
sectors.launch = Fırlat
|
||||
sectors.select = Seç
|
||||
sectors.nonelaunch = [lightgray]yok (güneş)
|
||||
sectors.rename = Sektörü Yeniden Adlandır
|
||||
sectors.enemybase = [scarlet]Düşman Base
|
||||
sectors.vulnerable = [scarlet]Dayanıksız
|
||||
sectors.underattack = [scarlet]Saldırı Altında! [accent]{0}% hasarlı
|
||||
sectors.survives = [accent]{0} Dalgaya dayanabilir!
|
||||
sectors.go = Git
|
||||
sector.curcapture = Sektör Yakalandı
|
||||
sector.curlost = Sektör Kaybedildi
|
||||
sector.missingresources = [scarlet]Yetersiz Çekirdek Kaynakları
|
||||
sector.attacked = Sektör [accent]{0}[white] saldırı altında!
|
||||
sector.lost = Sektör [accent]{0}[white] kaybedildi!
|
||||
#note: the missing space in the line below is intentional
|
||||
sector.captured = Sektör [accent]{0}[white]yakalandı!
|
||||
sector.changeicon = İkon Değiştir
|
||||
|
||||
threat.low = Düşük
|
||||
threat.medium = Orta
|
||||
threat.high = Yüksek
|
||||
threat.extreme = Aşırı
|
||||
threat.eradication = İmkansız
|
||||
|
||||
planets = Gezegenler
|
||||
|
||||
planet.serpulo.name = Serpulo
|
||||
planet.sun.name = Güneş
|
||||
|
||||
sector.impact0078.name = 0078 Darbesi
|
||||
sector.groundZero.name = Sıfır Noktası
|
||||
sector.craters.name = Kraterler
|
||||
sector.frozenForest.name = Donmuş Orman
|
||||
sector.ruinousShores.name = Harap Kıyılar
|
||||
sector.stainedMountains.name = Lekeli Dağlar
|
||||
sector.desolateRift.name = Issız Aralık
|
||||
sector.nuclearComplex.name = Kompleks Nükleer Üretimi
|
||||
sector.overgrowth.name = Fazla Büyüme
|
||||
sector.tarFields.name = Katran Alanları
|
||||
sector.desolateRift.name = Issız Kanyon
|
||||
sector.nuclearComplex.name = Nüleer Santral Kompleksi
|
||||
sector.overgrowth.name = Aşırı Büyüme
|
||||
sector.tarFields.name = Katran Çölü
|
||||
sector.saltFlats.name = Tuz Düzlükleri
|
||||
sector.fungalPass.name = Mantar Geçidi
|
||||
sector.biomassFacility.name = Sentetik BioMadde Santrali
|
||||
sector.windsweptIslands.name = Rüzgarlı Adalar
|
||||
sector.extractionOutpost.name = Kazı Üssü
|
||||
sector.planetaryTerminal.name = Gezegenler Arası Terminal
|
||||
|
||||
sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle.
|
||||
sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren.
|
||||
@@ -557,6 +624,25 @@ sector.tarFields.description = Bir petrol üretim bölgesinin eteklerinde, dağl
|
||||
sector.desolateRift.description = Aşırı tehlikeli bir bölge. Bol kaynaklar, ama az yer mevcut. Yüksek yıkım riski. Mümkün olduğunca çabuk ayrılmaya çalış. Düşman saldırıları arasındaki uzun mesafeye aldanma.
|
||||
sector.nuclearComplex.description = Toryum üretimi ve işlenmesi için eski bir tesistir, harabeye dönüşmüştür.\n[lightgray]Toryumu ve onun birçok kullanımını araştır. \n\nDüşman burada çok sayıda mevcut ve sürekli saldırganları arıyorlar.
|
||||
sector.fungalPass.description = Yüksek dağlar ve daha alçak, sporla dolu topraklar arasında bir geçiş alanıdır. Burada küçük bir düşman keşif üssü bulunuyor.\nOnu yok et.\nDagger ve Crawler birlikleri kullan. İki çekirdeği çıkar.
|
||||
sector.biomassFacility.description = Sporların ana kaynağı. Burası, onların üretim yeri.\nOnların içindeki gücü araştır. Sporları parçala, enerji ve plastik üret..\n\n[lightgray]Bu Fabrika yıkıldığında, sporlar etrafa yayldı. Hiçbir yaşam formu, bu forma üstün gelemedi.
|
||||
sector.windsweptIslands.description = Kıyının hemen yanında, bir adalar topluluğu. Kayıtlar bir zamanlar, [accent]Plastik[]-üreten binalar olduğunu gösteriyor.\n\nDüşman gemilerini batır, bir üs inşa et ve plastik üretmeye başla.
|
||||
sector.extractionOutpost.description = Uzak bir üs, düşman tarafından inşa edildiği düşünülüyor.\n\nSektörler arası aktarım, gelecek için çok önemli bir kademe. Üssü yok et, Fırlatış rampasını aç!
|
||||
sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yaralan.
|
||||
sector.planetaryTerminal.description = Son aşama.\n\nBu üs, başka gezegenlere gitmeyi sağlayan teknolojiyi barıdırıyor. Aşırı iyi bir şekilde korunuyor.\n\nOlabildiğince hızlı bir şekilde gemi üret ve düşman üssü elegeçir. Gezegenler Arası Hızladırıcıyı aç!
|
||||
|
||||
status.burning.name = Yanıyor
|
||||
status.freezing.name = Donuyor
|
||||
status.wet.name = Islak
|
||||
status.muddy.name = Çamurlu
|
||||
status.melting.name = Eriyor
|
||||
status.sapped.name = Emilmiş
|
||||
status.electrified.name = Elektirklenmiş
|
||||
status.spore-slowed.name = Sporlanmış
|
||||
status.tarred.name = Ziftlenmiş
|
||||
status.overclock.name = Hızlandırlımış
|
||||
status.shocked.name = Çarpılmış
|
||||
status.blasted.name = Patlatılmış
|
||||
status.unmoving.name =Sabit
|
||||
|
||||
settings.language = Dil
|
||||
settings.data = Oyun Verisi
|
||||
@@ -589,11 +675,13 @@ unit.nobuild = [scarlet]Birlik inşa edemiyor
|
||||
lastaccessed = [lightgray]Son Erişme: {0}
|
||||
block.unknown = [lightgray]???
|
||||
|
||||
stat.description = Amaç
|
||||
stat.input = Giriş
|
||||
stat.output = Çıkış
|
||||
stat.booster = Güçlendirici
|
||||
stat.tiles = Gereken Kare
|
||||
stat.affinities = Yakınlıklar
|
||||
stat.opposites = Zıtlıklar
|
||||
stat.powercapacity = Enerji Kapasitesi
|
||||
stat.powershot = Enerji/Atış
|
||||
stat.damage = Hasar
|
||||
@@ -615,7 +703,10 @@ stat.itemcapacity = Eşya Kapasitesi
|
||||
stat.memorycapacity = Bellek Kapasitesi
|
||||
stat.basepowergeneration = Temel Enerji Üretimi
|
||||
stat.productiontime = Üretim Süresi
|
||||
stat.repairtime = Tamir Tamir Edilme Süresi
|
||||
stat.repairtime = Tamir Edilme Süresi
|
||||
stat.repairspeed = Tamir Hızı
|
||||
stat.weapons = Silahlar
|
||||
stat.bullet = Mermi
|
||||
stat.speedincrease = Hız Artışı
|
||||
stat.range = Menzil
|
||||
stat.drilltier = Kazılabilenler
|
||||
@@ -623,6 +714,7 @@ stat.drillspeed = Temel Matkap Hızı
|
||||
stat.boosteffect = Hızlandırma Efekti
|
||||
stat.maxunits = Maksimum Aktif Birim
|
||||
stat.health = Can
|
||||
stat.armor = Zırh
|
||||
stat.buildtime = İnşaat Süresi
|
||||
stat.maxconsecutive = Art Arda En Fazla
|
||||
stat.buildcost = İnşaat Fiyatı
|
||||
@@ -638,6 +730,7 @@ stat.lightningchance = Yıldırım Çarpma Şansı
|
||||
stat.lightningdamage = Yıldırım Hasarı
|
||||
stat.flammability = Yanıcılık
|
||||
stat.radioactivity = Radyoaktivite
|
||||
stat.charge = Elektirk Yükü
|
||||
stat.heatcapacity = Isı Kapasitesi
|
||||
stat.viscosity = Viskosite
|
||||
stat.temperature = Sıcaklık
|
||||
@@ -648,12 +741,24 @@ stat.minetier = Kazı Seviyesi
|
||||
stat.payloadcapacity = Yük Kapasitesi
|
||||
stat.commandlimit = Komut Limiti
|
||||
stat.abilities = Kabiliyetler
|
||||
stat.canboost = Can Boost
|
||||
stat.flying = Uçuyor
|
||||
stat.ammouse = Mermi Kullanıyor
|
||||
stat.damagemultiplier = Hasar Çarpanı
|
||||
stat.healthmultiplier = Can Çarpanı
|
||||
stat.speedmultiplier = Hız Çarpanı
|
||||
stat.reloadmultiplier = Yeniden Yükleme Çarpanı
|
||||
stat.buildspeedmultiplier = İnşa Hızı Çarpanı
|
||||
stat.reactive = Tepki Verir
|
||||
stat.healing = İyileştirir
|
||||
|
||||
ability.forcefield = Güç Kalkanı
|
||||
ability.repairfield = Onarma Alanı
|
||||
ability.statusfield = Hızlandırma Alanı
|
||||
ability.unitspawn = {0} Birliği Fabrikası
|
||||
ability.shieldregenfield = Kalkan Yenileme Alanı
|
||||
ability.movelightning = Hareket Enerjisi
|
||||
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
|
||||
|
||||
bar.drilltierreq = Daha İyi Matkap Gerekli
|
||||
bar.noresources = Eksik Kaynaklar
|
||||
@@ -676,6 +781,7 @@ bar.power = Enerji
|
||||
bar.progress = İnşa İlerlemesi
|
||||
bar.input = Girdi
|
||||
bar.output = Çıktı
|
||||
bar.strength = [stat]{0}[lightgray]x Güç
|
||||
|
||||
units.processorcontrol = [lightgray]İşlemci Kontrolünde
|
||||
|
||||
@@ -710,8 +816,10 @@ unit.percent = %
|
||||
unit.shieldhealth = kalkan canı
|
||||
unit.items = eşya
|
||||
unit.thousands = k
|
||||
unit.millions = mil
|
||||
unit.millions = m
|
||||
unit.billions = b
|
||||
unit.pershot = /vuruş
|
||||
category.purpose = Amaç
|
||||
category.general = Genel
|
||||
category.power = Enerji
|
||||
category.liquids = Sıvılar
|
||||
@@ -724,8 +832,12 @@ setting.shadows.name = Gölgeler
|
||||
setting.blockreplace.name = Otomatik Blok önerileri
|
||||
setting.linear.name = Lineer Filtreleme
|
||||
setting.hints.name = İpuçları
|
||||
setting.flow.name = Kaynak Geçiş Hızını Göster[scarlet] (deneysel)
|
||||
setting.logichints.name = İşemci İpuçları
|
||||
setting.flow.name = Kaynak Geçiş Hızını Göster[scarlet]
|
||||
setting.backgroundpause.name = Arka Planda Durdur
|
||||
setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur
|
||||
setting.doubletapmine.name = İki Tıklamayla Kaz
|
||||
setting.modcrashdisable.name = Modları Çökmede Kapa
|
||||
setting.animatedwater.name = Animasyonlu Su
|
||||
setting.animatedshields.name = Animasyonlu Kalkanlar
|
||||
setting.antialias.name = Düzgünleştirme [lightgray](yeniden başlatma gerekebilir)[]
|
||||
@@ -743,7 +855,7 @@ setting.difficulty.training = Eğitim
|
||||
setting.difficulty.easy = Kolay
|
||||
setting.difficulty.normal = Normal
|
||||
setting.difficulty.hard = Zor
|
||||
setting.difficulty.insane = Çılgın
|
||||
setting.difficulty.insane = İmkansız
|
||||
setting.difficulty.name = Zorluk:
|
||||
setting.screenshake.name = Ekranı Salla
|
||||
setting.effects.name = Efektleri Görüntüle
|
||||
@@ -753,7 +865,6 @@ setting.conveyorpathfinding.name = Konveyör Yol Bulma
|
||||
setting.sensitivity.name = Kontrolcü Hassasiyeti
|
||||
setting.saveinterval.name = Kayıt Aralığı
|
||||
setting.seconds = {0} Saniye
|
||||
setting.blockselecttimeout.name = Blok Seçme Zaman Aşımı
|
||||
setting.milliseconds = {0} milisaniye
|
||||
setting.fullscreen.name = Tam Ekran
|
||||
setting.borderlesswindow.name = Kenarsız Pencere [lightgray](yeniden açmak gerekebilir)
|
||||
@@ -764,7 +875,7 @@ setting.pixelate.name = Pixelleştir [lightgray](animasyonları kapatır)
|
||||
setting.minimap.name = Haritayı Göster
|
||||
setting.coreitems.name = Çekirdekteki Eşyaları Göster [lightgray](üzerinde çalışılıyor)
|
||||
setting.position.name = Oyuncu Noktasını Göster
|
||||
setting.musicvol.name = Müzik
|
||||
setting.musicvol.name = Müzik Sesi
|
||||
setting.atmosphere.name = Gezegen Atmosferini Göster
|
||||
setting.ambientvol.name = Çevresel Ses
|
||||
setting.mutemusic.name = Müziği Kapat
|
||||
@@ -778,7 +889,9 @@ setting.chatopacity.name = Mesajlaşma Opaklığı
|
||||
setting.lasersopacity.name = Enerji Lazeri Opaklığı
|
||||
setting.bridgeopacity.name = Köprü Opaklığı
|
||||
setting.playerchat.name = Oyun-içi Konuşmayı Göster
|
||||
setting.showweather.name = Hava Durmu Grafiklerini Göster
|
||||
public.confirm = Oyununuzu halka açık yapmak ister misiniz?\n[accent]Oyunlarınıza herkes katılabilecektir.\n[lightgray]Bu seçenek daha sonra Ayarlar->Oyun->Halka Açık Oyunlar'dan değiştirilebilir.
|
||||
public.confirm.really = Eğer Arkadaşlarınla oynamak istiyorsan [green]Arkadaş Davet Et[] e bas. [scarlet]Halka Açık Sunucuya Değil[]!\nOyununu Gerçekten Halka açık yapmak istediğine [scarlet]Emin Misin[]?
|
||||
public.beta = Oyunun beta sürümlerinin halka açık lobiler yapamayacağını unutmayın.
|
||||
uiscale.reset = Arayüz ölçeği değiştirildi.\nBu ölçeği onaylamak için "Tamam" butonuna basın.\n[accent] {0}[] [scarlet]saniye içinde eski ayarlara geri dönülüp oyundan çıkılıyor…[]
|
||||
uiscale.cancel = İptal Et ve Çık
|
||||
@@ -842,6 +955,9 @@ keybind.menu.name = Menü
|
||||
keybind.pause.name = Durdur
|
||||
keybind.pause_building.name = İnşaatı Duraklat/İnşaata Devam Et
|
||||
keybind.minimap.name = Harita
|
||||
keybind.planet_map.name = Gezegen Haritası
|
||||
keybind.research.name = Araştırma
|
||||
keybind.block_info.name = Blok Bilgisi
|
||||
keybind.chat.name = Konuş
|
||||
keybind.player_list.name = Oyuncu Listesi
|
||||
keybind.console.name = Konsol
|
||||
@@ -851,6 +967,7 @@ keybind.toggle_menus.name = Menüleri Aç/Kapa
|
||||
keybind.chat_history_prev.name = Sohbet geçmişi önceki
|
||||
keybind.chat_history_next.name = Sohbet geçmişi sonraki
|
||||
keybind.chat_scroll.name = Sohbet Kaydırma
|
||||
keybind.chat_mode.name = Konuşma Modunu Değiştir
|
||||
keybind.drop_unit.name = Birlik Düşürme
|
||||
keybind.zoom_minimap.name = Haritada Yakınlaştırma/Uzaklaştırma
|
||||
mode.help.title = Modların açıklamaları
|
||||
@@ -867,17 +984,21 @@ mode.custom = Özel Kurallar
|
||||
|
||||
rules.infiniteresources = Sınırsız Kaynaklar
|
||||
rules.reactorexplosions = Reaktör Patlamaları
|
||||
rules.coreincinerates = Çekirdek Taşanları Eritir
|
||||
rules.schematic = Schematics Allowed
|
||||
rules.wavetimer = Dalga Zamanlayıcısı
|
||||
rules.waves = Dalgalar
|
||||
rules.attack = Saldırı Modu
|
||||
rules.buildai = Yapay Zeka İnşası
|
||||
rules.corecapture = Yıkımca Çekirdeği Elegeçir
|
||||
rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları
|
||||
rules.blockhealthmultiplier = Blok Canı Çarpanı
|
||||
rules.blockdamagemultiplier = Blok Hasarı Çarpanı
|
||||
rules.unitbuildspeedmultiplier = Birim Üretim Hızı Çarpanı
|
||||
rules.unithealthmultiplier = Birim Canı Çarpanı
|
||||
rules.unitdamagemultiplier = Birim Hasarı Çapanı
|
||||
rules.unitcapvariable = Çekirdekler Eleman Sınırını Etkiler
|
||||
rules.unitcap = Sabit eleman Sınırı
|
||||
rules.enemycorebuildradius = Düşman Çekirdeği İnşa Yasağı Yarıçapı: [lightgray](kare)
|
||||
rules.wavespacing = Dalga Aralığı: [lightgray](sn)
|
||||
rules.buildcostmultiplier = İnşa Ücreti Çarpanı
|
||||
@@ -899,12 +1020,15 @@ rules.explosions = Blok/Birlik Patlama Hasarı
|
||||
rules.ambientlight = Ortam Işığı
|
||||
rules.weather = Hava
|
||||
rules.weather.frequency = Sıklık:
|
||||
rules.weather.always = Herzaman
|
||||
rules.weather.duration = Süreklilik:
|
||||
|
||||
content.item.name = Eşyalar
|
||||
content.item.name = Malzemeler
|
||||
content.liquid.name = Sıvılar
|
||||
content.unit.name = Birimler
|
||||
content.block.name = Bloklar
|
||||
content.status.name = Durum Etkileri
|
||||
content.sector.name = Sektörler
|
||||
|
||||
item.copper.name = Bakır
|
||||
item.lead.name = Kurşun
|
||||
@@ -922,6 +1046,7 @@ item.blast-compound.name = Patlayıcı Bileşik
|
||||
item.pyratite.name = Pirratit
|
||||
item.metaglass.name = Metacam
|
||||
item.scrap.name = Hurda
|
||||
|
||||
liquid.water.name = Su
|
||||
liquid.slag.name = Cüruf
|
||||
liquid.oil.name = Petrol
|
||||
@@ -953,6 +1078,11 @@ unit.minke.name = Minke
|
||||
unit.bryde.name = Bryde
|
||||
unit.sei.name = Sei
|
||||
unit.omura.name = Omura
|
||||
unit.retusa.name = Retusa
|
||||
unit.oxynoe.name = Oxynoe
|
||||
unit.cyerce.name = Cyerce
|
||||
unit.aegires.name = Aegires
|
||||
unit.navanax.name = Navanax
|
||||
unit.alpha.name = Alpha
|
||||
unit.beta.name = Beta
|
||||
unit.gamma.name = Gamma
|
||||
@@ -961,10 +1091,11 @@ unit.reign.name = Reign
|
||||
unit.vela.name = Vela
|
||||
unit.corvus.name = Corvus
|
||||
|
||||
block.resupply-point.name = Resupply Point
|
||||
block.resupply-point.name = İkmal Noktası
|
||||
block.parallax.name = Parallax
|
||||
block.cliff.name = Uçurum
|
||||
block.sand-boulder.name = Kumlu Kaya Parçaları
|
||||
block.basalt-boulder.name = Bazalt Kaya
|
||||
block.grass.name = Çimen
|
||||
block.slag.name = Cüruf
|
||||
block.space.name = Uzay
|
||||
@@ -1012,6 +1143,7 @@ block.sand-water.name = Kumlu Su
|
||||
block.darksand-water.name = Kara Kumlu Su
|
||||
block.char.name = Kömür
|
||||
block.dacite.name = Dakit
|
||||
block.rhyolite.name = Riyolit
|
||||
block.dacite-wall.name = Dakit Duvar
|
||||
block.dacite-boulder.name = Dakit Kaya Parçaları
|
||||
block.ice-snow.name = Buzlu Kar
|
||||
@@ -1062,7 +1194,6 @@ block.conveyor.name = Konveyör
|
||||
block.titanium-conveyor.name = Titanyum Konveyör
|
||||
block.plastanium-conveyor.name = Plastanyum Konveyör
|
||||
block.armored-conveyor.name = Zırhlı Konveyör
|
||||
block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez.
|
||||
block.junction.name = Kavşak
|
||||
block.router.name = Yönlendirici
|
||||
block.distributor.name = Dağıtıcı
|
||||
@@ -1070,7 +1201,6 @@ block.sorter.name = Ayıklayıcı
|
||||
block.inverted-sorter.name = Ters Ayıklayıcı
|
||||
block.message.name = Mesaj
|
||||
block.illuminator.name = Aydınlatıcı
|
||||
block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir.
|
||||
block.overflow-gate.name = Taşma Geçidi
|
||||
block.underflow-gate.name = Yana Taşma Geçidi
|
||||
block.silicon-smelter.name = Silikon Fırını
|
||||
@@ -1121,6 +1251,7 @@ block.solar-panel.name = Güneş Paneli
|
||||
block.solar-panel-large.name = Büyük Güneş Paneli
|
||||
block.oil-extractor.name = Petrol Çıkarıcı
|
||||
block.repair-point.name = Tamir Noktası
|
||||
block.repair-turret.name = Tamir Turreti
|
||||
block.pulse-conduit.name = Dalga Borusu
|
||||
block.plated-conduit.name = Kaplı Boru
|
||||
block.phase-conduit.name = Faz Borusu
|
||||
@@ -1163,9 +1294,20 @@ block.exponential-reconstructor.name = Üstel Yeniden Yapılandırıcı
|
||||
block.tetrative-reconstructor.name = Dörtlü Yeniden Yapılandırıcı
|
||||
block.payload-conveyor.name = Yük Konveyörü
|
||||
block.payload-router.name = Yük Yönlendirici
|
||||
block.duct.name = Tüp
|
||||
block.duct-router.name = Tüp Yönlendirici
|
||||
block.duct-bridge.name = Tüp Köprü
|
||||
block.payload-propulsion-tower.name = Yük Aktarma Kulesi
|
||||
block.payload-void.name = Yük Yokedici
|
||||
block.payload-source.name = Yük Kaynağı
|
||||
block.disassembler.name = Sökücü
|
||||
block.silicon-crucible.name = Büyük Silikon Fırını
|
||||
block.overdrive-dome.name = Hızlandırma Kubbesi
|
||||
#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega
|
||||
block.block-forge.name = Blok Fabrikası
|
||||
block.block-loader.name = Blok Yükleyici
|
||||
block.block-unloader.name = Blok Boşaltıcı
|
||||
block.interplanetary-accelerator.name = Gezegenler Arası Hızlandırıcı
|
||||
|
||||
block.switch.name = Düğme
|
||||
block.micro-processor.name = Mikro İşlemci
|
||||
@@ -1179,54 +1321,83 @@ block.memory-bank.name = Bellek Bankası
|
||||
team.blue.name = mavi
|
||||
team.crux.name = öz
|
||||
team.sharded.name = parçalanmış
|
||||
team.orange.name = turuncu
|
||||
team.derelict.name = sahipsiz
|
||||
team.green.name = yeşil
|
||||
team.purple.name = mor
|
||||
|
||||
tutorial.next = [lightgray]<Devam etmek için dokunun.>
|
||||
tutorial.intro = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\n[accent]Bakır kazarak[] başlayın. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır
|
||||
tutorial.intro.mobile = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\nHareket etmek için ekranı kaydırın.\nYakınlaştırmak ve uzaklaştırmak için [accent]iki parmakla kıstırın[].\n[accent]Bakır kazarak[] başlayın. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır
|
||||
tutorial.drill = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatikman kazabilir.\nSağ alttaki matkap sekmesine tıklayınız.\n[accent]Mekanik matkabı[] seçiniz. Tıklayarak bir bakır madenine yerleştirin.\n Yapımı durdurmak için [accent]sağ tıklayın[] ve yakınlaştırmak ve uzaklaştırmak için [accent]CTRL basılı tutarak tekerleği kaydırın[].
|
||||
tutorial.drill.mobile = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatik olarak kazabilir.\nSağ alttaki matkap sekmesine dokunun.\n[accent]Mekanik matkabı[] seçin. \nDokunarak bir bakır madenine yerleştirin, sonra seçiminizi onaylamak için alttaki [accent] tik düğmesine[] basın.\nYerleştirmenizi iptal etmek için [accent] X butonuna[] basın.
|
||||
tutorial.blockinfo = Her bloğun farklı istatistikleri vardır. Her matkap sadece belirli madenleri kazabilir.\nBir bloğun bilgi ve istatistiklerine bakmak için,[accent] yapım menüsünde seçerken "?" tuşuna dokunun.[]\n\n[accent]Şimdi mekanik matkabın istatistiklerine erişin.[]
|
||||
tutorial.conveyor = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapın.\n[accent]Bir sıra halinde yerleştirmek için farenizi basılı tutun.[]\nÇaprazlama bir yol konveyör yerleştirmek için [accent]CTRL[] tuşunu basılı tutun.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün.
|
||||
tutorial.conveyor.mobile = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapın.\n[accent] Bir sıra halinde yerleştirmek için parmağınızı birkaç saniye basılı tutup[] bir yöne çekin.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün.
|
||||
tutorial.turret = Bir eşya merkezinize girdiğinde, inşa için kullanılabilir.\nHer eşyaların sadece inşa için kullanılmadığını aklınızda tutun.\nİnşa için kullanılmayan eşyalar,[accent] kömür[] ya da[accent] hurda[] gibi materyaller merkeze konulamaz.\n[lightgray]Düşmanı[] püskürtmek için savunma yapıları inşa edilmelidir.\nÜssünüze yakın bir yerde [accent] duo tareti[] inşa edin.
|
||||
tutorial.drillturret = Duo taretleri ateş etmek için [accent]bakır mühimmata[] ihtiyaç duyar.\nTaretin yakınına bir matkap yerleştirin.\nKonveyörleri tarete yönelterek tarete bakır ikmal edin.\n\n[accent]İkmal edilen mühimmat: 0/1
|
||||
tutorial.pause = Mücadele sırasında [accent]oyunu durdurabilirsiniz.[]\nOyun durmaktayken inşaat emirlerini kuyruğa alabilirsiniz.\n\n[accent]Oyunu durdurmak için boşluk tuşuna basın.
|
||||
tutorial.pause.mobile = Mücadele sırasında [accent]oyunu durdurabilirsiniz.[]\nOyun durmaktayken inşaat emirlerini kuyruğa alabilirsiniz.\n\n[accent]Oyunu durdurmak için sol üstteki bu butona basın.
|
||||
tutorial.unpause = Şimdi devam etmek için boşluk tuşuna tekrar basın.
|
||||
tutorial.unpause.mobile = Şimdi devam etmek için butona tekrar basın.
|
||||
tutorial.breaking = Blokların sık sık yok edilmesi gerekir.\n[accent]Sağ fare butonuna basılı tutarak[] bir alan içindeki blokları seçip yok edebilirsiniz.[]\n\n[accent]Çekirdeğinizin solundaki bütün hurda bloklarını bu şekilde yok edin.
|
||||
tutorial.breaking.mobile = Blokların sık sık yok edilmesi gerekir.\n[accent]Yıkım modunu seçin[], sonra bir bloğa dokunarak onu yok edin. Ekrana birkaç saniye basılı tutarak bir alan içindeki blokları seçip yok edebilirsiniz.\nTik butonuna basarak yıkım işlemini onaylayın.\n\n[accent]Çekirdeğinizin solundaki bütün hurda bloklarını bu şekilde yok edin.
|
||||
tutorial.withdraw = Bazı durumlarda bloklardan materyalleri direkt olarak almak gerekir.\nBunun için önce içinde materyaller olan [accent]bir bloğa dokunun[], sonra envanterdeki [accent]malzemeye dokunun[].\n[accent]dokunup basılı tutarak[] birden fazla materyali alabilirsiniz.\n\nÇekirdekten biraz bakır alın.
|
||||
tutorial.deposit = Malzemeleri geminizden hedef bloğa sürükleyerek malzemeleri bırakabilirsiniz.\n\n[accent]Bakırı çekirdeğe geri bırakın.[]
|
||||
tutorial.waves = [lightgray]Düşman[] yaklaşıyor.\n\nÇekirdeği 2 dalga boyunca koruyun. Ateş etmek için [accent]tıklayın[].\nDaha fazla taret ve matkap inşa edin ve daha fazla bakır toplayın.
|
||||
tutorial.waves.mobile = [lightgray]Düşman[] yaklaşıyor.\n\nÇekirdeği 2 dalga boyunca koruyun. Geminiz düşmanlara otomatik olarak ateş edecektir.\nDaha fazla taret ve matkap inşa edin ve daha fazla bakır toplayın.
|
||||
tutorial.launch = Belirli bir dalgaya ulaşınca, çekirdeği bulunduğu bölgeden [accent]kaldırabilir[], bütün binalarınızı arkada bırakıp [accent]çekirdeğinizdeki bütün materyallere sahip olabilirsiniz.[]Bu materyaller daha sonra yeni teknolojiler geliştirmek için kullanılabilir.\n\n[accent]Kalkış butonuna basın.
|
||||
|
||||
hint.skip = Geç
|
||||
hint.desktopMove = [accent][[WASD][] ile hareket et.
|
||||
hint.zoom = [accent]Scroll[] ile Zoom yap.
|
||||
hint.mine = Yakındaki bir \uf8c4 Bakır madenine yaklaş ve [accent]tıklayarak[] kaz.
|
||||
hint.desktopShoot = [accent][[Sol Tılayarak][] ateş et.
|
||||
hint.depositItems = Malzeme transferi için, kendi biriminden çekirdeğe sürkle ve bıraz.
|
||||
hint.respawn = Tekrar doğmak için, [accent][[V][] ye bas.
|
||||
hint.respawn.mobile = Bir Bina veya Birimi kontrol ediyorsun. Tekrar doğmak için, [accent]sol üstteki avatara tıkla.[]
|
||||
hint.desktopPause = [accent][[Boşluk][] tuşuna basarak oyunu durdurup yeniden başlata bilrisin.
|
||||
hint.placeDrill =İnşa menüsünden, \ue85e [accent]Kazıcı[] bölmesine tıkla \uf870 [accent]Kazıcıyı[] al ve bir madenin üstüne tıklayarak koy.
|
||||
hint.placeDrill.mobile = İnşa menüsünden, \ue85e [accent]Kazıcı[] bölmesini seç, ardından \uf870 [accent]Kazıcı[] ya tıkla ve bir madenin üstüne tıkla.\n\n \ue800 [accent]Check tuşuna bas[] ve inşayı tamala.
|
||||
hint.placeConveyor = Konveyörler, bir kazıcıdan başka bir bloğa malzeme aktarmada kullanılır. Menüden bir \uf896 [accent]Konveyör[] seç, konveyörler \ue814 [accent]Taşıma[] menüsündedir.\n\nTıklayıp basılı tutraka biren fazla inşa edebilrsin.\n[accent]Scroll[] la döndürebilirsin.
|
||||
hint.placeConveyor.mobile = Konveyörler, bir kazıcıdan başka bir bloğa malzeme aktarmada kullanılır. Menüden bir \uf896 [accent]Konveyör[] seç, konveyörler \ue814 [accent]Taşıma[] menüsündedir.\n\nParmağını basılı tutup sürüklersen birden fazla konveyör doşeyebilirsin.
|
||||
hint.placeTurret = \uf861 [accent]Silahlar[] seni düşman birimlerinden korumak içindir.\n\nSilahlar, mermi gerektirir, \uf838(bakır).\nOnlara Konveyör ve Kazıcı kullanarak mermi sağla.
|
||||
hint.breaking = Blokları silmek için silmek istediğiniz objelerin üstüne [accent]Sağ Tıklayın[]. Birden fazla obje silmek için sağ tuşu basılı tutun ve farenizi sürükleyin.
|
||||
hint.breaking.mobile = Ekranın sağ altındaki \ue817 [accent]çekiç[] tuşuna basın ve silmek istediğiniz objelere tıklayın. \n\nBirden fazla obje silmek için parmağınızı ekranda 1 saniye basılı tutun ve parmağınızı sürükleyin.
|
||||
hint.blockInfo = Bir blok hakkında bilgiyi görüntülemek için [accent]inşa menüsüne[] tıklayın. Sonra sağdaki [accent][[?][] sembolüne tıklayın.
|
||||
hint.research = \ue875 [accent]Araştırma[] sekmesini kullanarak yeni teknolojiler araştırabilirsiniz.
|
||||
hint.research.mobile = \ue88c [accent]Menüdeki[] \ue875 [accent]Araştırma[] sekmesini kullanarak yeni teknolojiler araştırabilirsiniz.
|
||||
hint.unitControl = Kendi takımınızdaki taret ve birimleri kontrol etmek için [accent][[Sol CTRL][] tuşunu basılı tutarak istediğiniz taretin yada birimin üstüne sol tıklayın.
|
||||
hint.unitControl.mobile = Kendi takımınızdaki taret ve birimleri kontrol etmek için istediğiniz taretin yada birimin üstüne [accent][[2 kere tıklayın.][]
|
||||
hint.launch = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue827 [accent]harita[] tuşuna basın.
|
||||
hint.launch.mobile = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue88c [accent]menüden[] \ue827 [accent]harita[] tuşuna basın.
|
||||
hint.schematicSelect = İstediğiniz blokları kopyalayıp yapıştırmak için [accent][[F][] tuşunu basılı tutun ve farenizi sürükleyin.\n\n[accent][[Orta Tuş'a (Fare Tekerleği'ne)][] basarak tek bir blok seçebilirsiniz.
|
||||
hint.conveyorPathfind = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için [accent][[Sol CTRL][] tuşunu basılı tutun.
|
||||
hint.conveyorPathfind.mobile = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için \ue844 [accent]Çapraz Mod'u[] etkinleştirin.
|
||||
hint.boost = Bazı yer birimleri duvarların, taretlerin, diğer birimlerin üstünden uçma özelliği vardır. [accent][[Sol Shift][] tuşunu basılı tutarak bazı yer üniteleri ile uçabilirsiniz.
|
||||
hint.command = [accent]Benzer Türdeki[] birimleri kontrol etmek için [accent][[G][] tuşuna basın. \n\nYer birimlerini kontrol etmek için ilk önce bir yer birimini kontrol etmeniz gerekir.
|
||||
hint.command.mobile = Ekrana [accent][[2 kere yıklayarak][] benzer türdeki birimleri kontrol edebilirsiniz. \n\nYer birimlerini kontrol etmek için ilk önce bir yer birimini kontrol etmeniz gerekir.
|
||||
hint.payloadPickup = Bazı birimlerin binaları ve birimleri alma özelliği vardır. Bir binanın yada birimin üstündeyken [accent][[[] tuşuna basarak kendinizden küçük binaları ve birimleri alabilirsiniz.
|
||||
hint.payloadPickup.mobile = Bazı birimlerin binaları ve birimleri alma özelliği vardır. Bir binaya yada birime [accent]Tıklayıp Basılı Tutarak[] kendinizden küçük binaları ve birimleri alabilirsiniz.
|
||||
hint.payloadDrop = [accent]][] tuşuna basarak taşıdğınız yükü bırakabilirsiniz.
|
||||
hint.payloadDrop.mobile = Boş bir yere [accent]tıklayıp basılı tutarak[] taşıdığınız yükü bırakabilirsiniz.
|
||||
hint.waveFire = [accent]Wave[] tareti su ile dolu olduğu zaman etrafta çıkan yangınları otomatik olarak söndürür.
|
||||
hint.generator = \uf879 [accent]Termik Jeneratör[] kömür yakarak enerji üretir.\n\nEnerjiyi bir yerden başka bir yere götürmek için \uf87f [accent]Enerji Noktalarını[] kullanırız.
|
||||
hint.guardian = [accent]Gardiyan[] birimleri güçlü bir zırha sahiptir. [accent]bakır[] ve [accent]kurşun[] gibi mermilere karşı [scarlet]Dayanıklıdır[].\n\nGardiyanları öldürmek için [accent]salvo[] gibi daha güçlü taretleri ve \uf835 [accent]grafit[] gibi daha çok hasar veren mermileri kullanın.
|
||||
hint.coreUpgrade = Merkezinizi, [accent]merkezinizin üstüne daha gelişmiş bir merkez[] koyarak geliştirebilirsiniz. \n\n[accent]Parçacık[] olarak adlandırılan fakirhanenizin üstüne [accent]Temel[] olarak adlandırılan merkezinizi koyun. Merkezinizin etrafında hiçbir yapı olmamalıdır.
|
||||
hint.presetLaunch = [accent]Donmuş Ormanlar[] gibi [accent]ana sektörlere iniş[] herhangi bir yerden yapılabilir. Yakındaki bir sektörden fırlatma gerektirmez.\n\nBunun gibi [accent]sayı ile isimlendirilmiş[] sektörleri ele geçirmek [accent]isteğe bağlıdır.[].
|
||||
hint.coreUpgrade = Bir çekirdeğin Üstüne başka bir çekirdek koayarak onu geliştirebilirsin!\n\n Daha gelişmiş çekirdekler daha fazla kapasite demektir.
|
||||
hint.presetLaunch = Hikaye Sektörlerine her yerden fırltış yapabilirsin! Ancak Numaralı Sektörlere temas olmadan Fırlatış yapılamaz.
|
||||
hint.coreIncinerate = Bir çekirdek ağzına kadar dolduktan sonra, ekstra itemler [accent]eritilir[].
|
||||
hint.coopCampaign = Arkadaşlarınla Multiplayer Campaign oynarken, her yaptığınız Araştırma ve item aktarımı, senin oyun içi Campaign ine de aktarılır.
|
||||
#Yukarıdaki bağzı cümleler Anti Dragon tarafından çevirildi.
|
||||
item.copper.description = En basit materyal. Her türlü blokda kullanılır.
|
||||
item.copper.details = Bakır. En basit materyal. Tüm alt düzey binalarda gerekir. Zayıf ve dayanıksızdır.
|
||||
item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır.
|
||||
item.lead.details = Yoğun. Durağan. Pillerde yaygın olarak kullanılır.\nNot: Yaşam formlarına toksik. Tabi burda onlardan pek yok...
|
||||
item.metaglass.description = Süper sert camdan bir bileşim. Sıvı dağıtımı ve depolamak için yaygın olarak kullanılır.
|
||||
item.graphite.description = Mineralize karbon. Mermi ve elektrik yalıtımında kullanılır.
|
||||
item.sand.description = Hem alaşım yapmada hem de arıtkan olarak metalurji işlemlerinde kullanılan bir malzeme.
|
||||
item.coal.description = Tohumlama olayından çok önce oluşmuş, fosilleşmiş bitki maddesi. Yaygın olarak yakıt ve kaynak üretimi için kullanılır.
|
||||
item.coal.details = Fosilleşmiş bitki kalıntısına benziyor. Herhalde tohumlanmadan çok uzun zaman önce ölmüşler.
|
||||
item.titanium.description = Yaygın olarak sıvı taşımada, matkaplarda ve uçaklarda kullanılan nadir bir süper-hafif metal.
|
||||
item.thorium.description = Yapısal destek ve nükleer yakıt olarak kullanılan yoğun, radyoaktif bir metal.
|
||||
item.scrap.description = Eski yapılar ve birimlerin kalıntıları. Birçok farklı metalden eser miktarları içerir.
|
||||
item.scrap.details = Eski bina ve birimlerin kalıntıları.
|
||||
item.silicon.description = Kullanışlı bir yarı iletken. Güneş panellerinde, elektronikler ve güdümlü cephanesi için kullanılır.
|
||||
item.plastanium.description = Gelişmiş uçak ve parçalama için kullanılan hafif, sünek bir malzeme.
|
||||
item.phase-fabric.description = Gelişmiş elektronik ve kendi kendini tamir etme teknolojisınde kullanılan neredeyse ağırlıksız bir madde.
|
||||
item.surge-alloy.description = Kendine özgü elektriksel özelliklere sahip gelişmiş bir alaşım.
|
||||
item.spore-pod.description = Endüstriyel kullanım için atmosferik partiküllerden üretilen sentetik sporlarla dolu bir kapsül. Yağ, patlayıcı ve yakıt yapımı için kullanılır.
|
||||
item.spore-pod.details = Spor.Büyük ihtimalle sentetik bir yaşam formu. Tokisk bir gaz yayıyor. Aşırı istilacı. Aşırı yanıcı.
|
||||
item.blast-compound.description = Bomba ve patlayıcılarda kullanılan dengesiz bir bileşim. Spor kapsülleri ve diğer uçucu maddelerden sentezlenir. Yakıt olarak tavsiye edilmez.
|
||||
item.pyratite.description = Yakıcı silahlarda kullanılan son derece yanıcı bir madde.
|
||||
|
||||
liquid.water.description = En kullanışlı sıvı. Makineleri soğutmak ve atık işlenmesi için kullanılır.
|
||||
liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışımı. Bileşenlerine ayrılabilir veya düşmanlara silah olarak püskürtülebilir.
|
||||
liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir.
|
||||
liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır.
|
||||
|
||||
block.resupply-point.description = Yakındaki birimlere mermi verir. Elektikle çalışmaz.
|
||||
block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez.
|
||||
block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir.
|
||||
block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır.
|
||||
block.graphite-press.description = Kömür parçalarını sıkıştırıp saf grafit tabakaları üretir.
|
||||
block.multi-press.description = Grafit presinin yükseltilmiş versiyonu. Kömürün hızlı ve verimli bir şekilde işlenmesi için su ve enerji kullanır.
|
||||
@@ -1278,6 +1449,7 @@ block.phase-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyal
|
||||
block.sorter.description = Materyalleri ayıklar. Eğer materyal seçilen ile eşleşiyorsa geçmesine izin verilir. Yoksa materyal sağa ya da sola atılır.
|
||||
block.inverted-sorter.description = Materyalleri sıradan bir ayıklayıcı gibi işler, ancak seçili öğeleri önden değil yanlardan geçirir.
|
||||
block.router.description = Materyalleri bir yönden alıp diğer üç yöne eşit olarak dağıtır. Materyalleri bir kaynaktan birden fazla hedefe iletmek için kullanılır.\n\n[scarlet]Asla üretim yapan binaların dibine yerleştirmeyin, yoksa istenmeyen materyaller tarafından tıkanabilir.[]
|
||||
block.router.details = [#ff]Sakın, asla, kattiyen iki tanesini yan yana koyma! Yoksa Tüm evren parçalanabilir!
|
||||
block.distributor.description = Gelişmiş bir yönlendirici. Materyalleri yedi farklı yöne dağıtabilir.
|
||||
block.overflow-gate.description = Ayırıcı ve yönlendiricinin bir karışımı. Materyalleri sadece ön kısım kapalı olduğunda sağa ve sola atar.
|
||||
block.underflow-gate.description = Taşma geçidinin zıttıdır. Sol ve sağ taraf kapalıysa materyalleri ön tarafa atar.
|
||||
@@ -1314,14 +1486,18 @@ block.laser-drill.description = Lazer teknolojisi sayesinde daha da hızlı kazm
|
||||
block.blast-drill.description = En iyi matkap. Çalışması için çok miktarda enerji gerekir.
|
||||
block.water-extractor.description = Yeraltındaki suyu çıkarır. Hiç su bulunmayan yerlerde kullanılır.
|
||||
block.cultivator.description = Atmosferdeki küçük spor partiküllerini büyütüp endüstriyel kullanıma hazır kapsüllere çevirir.
|
||||
block.cultivator.details = Geri Dönüştürülmüş Teknoloji. Yüksek miktarda bio kütle üretmede kullanılır. Serpulo yu kaplayan sporların kaynağı.
|
||||
block.oil-extractor.description = Çokça enerji, su kullanarak yerden petrol çıkarır.
|
||||
block.core-shard.description = Çekirdek kapsülünün ilk versiyonu. Yok edilirse, bölge ile bütün iletişim kesilir. Bunun olmasına izin verme.
|
||||
block.core-shard.details = İlk aşama. Bu üstün makine, kendini kopyalama ve tek inişlik roket özelliklerine sahip. Gezegenler arası ulaşımda kullanılamaz!
|
||||
block.core-foundation.description = Çekirdek kapsülünün ikinci versiyonu. Daha iyi zırhlı ve daha çok materyal depolayabilir.
|
||||
block.core-foundation.details = İkinci Aşama.
|
||||
block.core-nucleus.description = Çekirdek kapsülünün üçüncü ve son versiyonu. Aşırı derecede zırhlı ve dev miktarda materyal depolayabilir.
|
||||
block.core-nucleus.details = Üçüncü ve Son Aşama.
|
||||
block.vault.description = Her materyalden az miktarda saklar. Materyalleri kasadan almak için bir boşaltıcı bloğu kullanılabilir.
|
||||
block.container.description = Her materyalden az miktarda saklar. Materyalleri konteynerden almak için bir boşaltıcı bloğu kullanılabilir.
|
||||
block.unloader.description = Materyalleri bir konteyner, kasa, veya çekirdekten çıkarıp; bir konveyöre veya dibindeki bir bloğa koyar. Çıkardığı materyal türü dokunularak değiştirilebilir.
|
||||
block.launch-pad.description = Çekirdek kalkışına gerek duymadan materyalleri üsse gönderir.
|
||||
block.launch-pad.description = Başka Bir Sektöre item gönderir.
|
||||
block.launch-pad-large.description = Kalkış pistinin daha gelişmiş bir versiyonu. Daha fazla materyali daha sık gönderebilir.
|
||||
block.duo.description = Küçük, ucuz bir taret. Yer birimlerine karşı etkilidir.
|
||||
block.scatter.description = Önemli bir uçaksavar tareti. Düşman birimlerine hurda ya da kurşun uçaksavar mermileri atar.
|
||||
@@ -1339,3 +1515,211 @@ block.spectre.description = Dev bir çift namlulu top. Hava ve kara birimlerine
|
||||
block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir.
|
||||
block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder.
|
||||
block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Lazer mermilere etki etmez.
|
||||
block.parallax.description = Çekici bir ışın fırlatarak hava düşmanlarını kendine çeker. Onlara az da olsa zarar verir.
|
||||
block.tsunami.description = Düşmanlara yüksek miktarda sıvı püskürtür. Ateşleri otomatik söndürür.
|
||||
block.silicon-crucible.description = Kum ve Kömürü, Pirratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır.
|
||||
block.disassembler.description = Cürüfü aşırı sıcak ortamda seritir. Toryum elde edebilir.
|
||||
block.overdrive-dome.description = Yakındaki binaları hızlandırır. Çalışmak için silikon ve faz gerektirir.
|
||||
block.payload-conveyor.description = Büyük yükleri hareket ettirir. Birimler gibi.
|
||||
block.payload-router.description = Büyük Yükleri 3 Ayrı yöne aktarır.
|
||||
block.command-center.description = Birimleri birkaç farklı şekilde yönlendirir.
|
||||
block.ground-factory.description = Yer Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||
block.air-factory.description = Hava Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||
block.naval-factory.description = Su Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||
block.additive-reconstructor.description = Birimleri 2. seviyeye yükseltir.
|
||||
block.multiplicative-reconstructor.description = Birimleri 3. seviyeye yükseltir.
|
||||
block.exponential-reconstructor.description = Birimleri 4. seviyeye yükseltir.
|
||||
block.tetrative-reconstructor.description = Birimleri 5. ve son seviyeye yükseltir.
|
||||
block.switch.description = Aktif edilebilen bir düğme.
|
||||
block.micro-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir.
|
||||
block.logic-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir. Daha hızlı çalışır.
|
||||
block.hyper-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir. Daha-da hızlı çalışır.
|
||||
block.memory-cell.description = Bilgi saklar.
|
||||
block.memory-bank.description = Bilgi saklar. Yüksek kapasiteye sahiptir.
|
||||
block.logic-display.description = Bir işlemciden bilgi alarak grafik gösteririr.
|
||||
block.large-logic-display.description = Bir işlemciden bilgi alarak grafik gösteririr.
|
||||
block.interplanetary-accelerator.description = Gezegenler Arası ulaşım şimdi parmaklarının ucunda...
|
||||
#burdan sonraki her şeyi benim translate etmem gerekti!!! -RTOmega
|
||||
unit.dagger.description = Düşmanlara basit mermilerle ateş eder.
|
||||
unit.mace.description = Düşmanlara alev atar.
|
||||
unit.fortress.description = Yer Düşmanlarına uzun menzil gülleler fırlatır.
|
||||
unit.scepter.description = Düşmanlara süper yüklü mermiler fırlatır.
|
||||
unit.reign.description = Düşmanlara devasa delici mermilerle ateş eder.
|
||||
unit.nova.description = Minik lazerler atar ve binaları tamir eder. Uçabilir.
|
||||
unit.pulsar.description = Minik elektroşoklar atar ve binaları tamir eder. Uçabilir.
|
||||
unit.quasar.description = Delici lazerlerle ateş eder ve binaları tamir eder. Uçabilir.
|
||||
unit.vela.description = Uzun süreli büyük bir lazer ateş eder ve binaları tamir eder. Uçabilir.
|
||||
unit.corvus.description = Çok Yüksek Menzilli devasa bir lazer atar. Her şeyi deler. Binaların üstünden yürüyebilir.
|
||||
unit.crawler.description = Düşmana doğru koşar ve kendini imha eder.
|
||||
unit.atrax.description = Cürüf topları fırlator. Binaların üstünden yürüyebilir.
|
||||
unit.spiroct.description = Emici lazerler ateş eder, kendini onarır. Binaların üstünden yürüyebilir.
|
||||
unit.arkyid.description = Emci ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir.
|
||||
unit.toxopid.description = Devasa bir enerji topu fırlatır. Binaların üstünden yürüyebilir.
|
||||
unit.flare.description = Yakındakilere basit mermi atar.
|
||||
unit.horizon.description = Yakındaki yer düşmanlarına bombarduman yapar.
|
||||
unit.zenith.description = Swarmer-gibi füzeler fırlatır.
|
||||
unit.antumbra.description = Büyük boyutta mermiler fırlatır.
|
||||
unit.eclipse.description = Büyük mermiler fırlatır ve lazer atar.
|
||||
unit.mono.description = Otomatik bir şekilde Bakır ve Kurşun kazar ve çekirdeğe getirir.
|
||||
unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşaatta yardımcı olur.
|
||||
unit.mega.description = Otomayik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir.
|
||||
unit.quad.description = Büyük bombalar atar, hasarlı bolkları onarır ve düşmanlara zarar verir. Bolkları ve Birimleri taşıyabilir.
|
||||
unit.oct.description = Yakındaki birimleri korur ve tamir eder. Blokları ve Birimleri taşıyabilir.
|
||||
unit.risso.description = Yakındaki düşmanlara Füze atar.
|
||||
unit.minke.description = Yakındaki düşmanlara basit mermi ve toplarla saldırır.
|
||||
unit.bryde.description = Düşmanlara uzun menzil havanıyla saldırır.
|
||||
unit.sei.description = Düşmanlara füze atar ve devasa zırh delici mermilerle saldırır.
|
||||
unit.omura.description = Uzun menzil bir ışın atıcıya sahiptir. Mermisi nerdeyse her bolğu delebilir. Flare üretir.
|
||||
unit.alpha.description = Çekirdeği korur. Bina inşa eder
|
||||
unit.beta.description = Çekirdeği korur. Bina inşa eder
|
||||
unit.gamma.description = Çekirdeği korur. Bina inşa eder
|
||||
|
||||
lst.read = Bağlı hafıza kutusundaki numarayı okur.
|
||||
lst.write = Bağlı hafıza kutuaundaki numaraya yazar.
|
||||
lst.print = Text yazar.
|
||||
lst.draw = Ekrana Çizer.
|
||||
lst.drawflush = Ekrana Çizimi Aktarır.
|
||||
lst.printflush = Mesaj bloğuna texti aktarır,
|
||||
lst.getlink = Bağlı blokları alır.
|
||||
lst.control = Bir binayı yönet.
|
||||
lst.radar = Bir silahın yakınındaki birimleri alıgılar,
|
||||
lst.sensor = Bloklardan bilgi alır.
|
||||
lst.set = Bir değişken ata.
|
||||
lst.operation = Değişkenlerle işlem yap.
|
||||
lst.end = Döngünün sonuna atla.
|
||||
lst.jump = Bir yerden başka bir yere atla.
|
||||
lst.unitbind = Bir birimi bağla: [accent]@unit[].
|
||||
lst.unitcontrol = Bağlı birimi kontrol et.
|
||||
lst.unitradar = Bağlı birimin etrafındaki birimleri tara.
|
||||
lst.unitlocate = Etraftaki blokları algılar.\nBağlı birim gerektirir.
|
||||
|
||||
logic.nounitbuild = [red]Birim İnşası Yasak!
|
||||
|
||||
lenum.type = Bir bina/birim türü.\nörnek: [accent]@router[].
|
||||
lenum.shoot = Bir konuma ateş et.
|
||||
lenum.shootp = Belli bir birim veya binaya ateş et.
|
||||
lenum.config = Bina configurasyonu, örnek: Ayıklayıcı Türü
|
||||
lenum.enabled = Blok aktif mi?
|
||||
|
||||
laccess.color = Aydınlatıcı Rengi.
|
||||
laccess.controller = Nirim Kontrol edici. Eğer işlemci kontrol ediyorsa işlemci döner.
|
||||
laccess.dead = Bir bina veya birim hala var mı?
|
||||
laccess.controlled = Bir birim ne tarafından kontrol ediliyor?
|
||||
laccess.commanded = [red]Bu komut sonradan silicek! Controlled kullan!
|
||||
laccess.progress = Bir şeyin oluş aşaması, örnek: bir turetin yeniden doldurma süresindeki aşama.
|
||||
|
||||
graphicstype.clear = Ekranı bir renkle kapla.
|
||||
graphicstype.color = Bir sonraki çizim için Renk.
|
||||
graphicstype.stroke = Çizgi Kalınlığını belirle.
|
||||
graphicstype.line = Çizgiyi Belirle.
|
||||
graphicstype.rect = Bir Dikdörtgeni doldur.
|
||||
graphicstype.linerect = İçi boş Dikdörtgen çiz.
|
||||
graphicstype.poly = İçi Dolu Çokgen Çiz.
|
||||
graphicstype.linepoly = İçi Boş Çokgen Çiz.
|
||||
graphicstype.triangle = İçi Dolu Üçgen Çiz.
|
||||
graphicstype.image = Bir ikon çiz. \nörnek: [accent]@router[] veya [accent]@dagger[].
|
||||
|
||||
lenum.always = Her Zaman Doğru
|
||||
lenum.idiv = Tamsayı Bölme
|
||||
lenum.div = Bölme
|
||||
lenum.mod = Mod
|
||||
lenum.equal = Eşit
|
||||
lenum.notequal = Eşit Değil
|
||||
lenum.strictequal = Aynı
|
||||
lenum.shl = Shift Sol
|
||||
lenum.shr = Shift Sağ
|
||||
lenum.or = Veya
|
||||
lenum.land = Çapraz Ve
|
||||
lenum.and = Ve
|
||||
lenum.not = Değil
|
||||
lenum.xor = Çapraz Veya
|
||||
|
||||
lenum.min = İki sayıdan en küçüğü.
|
||||
lenum.max = İki sayıdan en büyüğü.
|
||||
lenum.angle = İki Işının yaptığı Açı.
|
||||
lenum.len = Bir Işının Uzunluğu.
|
||||
|
||||
lenum.sin = Sinüs
|
||||
lenum.cos = Cosinüs
|
||||
lenum.tan = Tanjant
|
||||
|
||||
lenum.asin = Arc Sinüs
|
||||
lenum.acos = Arc Cosinüs
|
||||
lenum.atan = Arc Tanjant
|
||||
|
||||
#not a typo, look up 'range notation'
|
||||
lenum.rand = [0 ile Sayı) arasında rastgele bir sayı.
|
||||
lenum.log = Logaritma
|
||||
lenum.log10 = Logaritma 10
|
||||
lenum.noise = 2D Noise
|
||||
lenum.abs = Absulute
|
||||
lenum.sqrt = KareKök
|
||||
|
||||
lenum.any = Herhangi bir Birim.
|
||||
lenum.ally = Aynı Takımdan Birim.
|
||||
lenum.attacker = Silahlı Birim.
|
||||
lenum.enemy = Düşman Birim.
|
||||
lenum.boss = Gardiyan Biri.
|
||||
lenum.flying = Uçan Birim.
|
||||
lenum.ground = Yürüyen Birim.
|
||||
lenum.player = Oyuncu olan bir Birim.
|
||||
|
||||
lenum.ore = Maden.
|
||||
lenum.damaged = Hasarlı Aynı Takımdan bir Blok.
|
||||
lenum.spawn = Düşman Oluşum Noktası
|
||||
lenum.building = Bir guruptan bir blok.
|
||||
|
||||
lenum.core = Herhangi bir Çekirdek.
|
||||
lenum.storage = Depolama Bloğu,
|
||||
lenum.generator = Enerji Üreten bir Blok.
|
||||
lenum.factory = Fabrika Bloğu,
|
||||
lenum.repair = Tamir Bloğu.
|
||||
lenum.rally = Komut Bloğu.
|
||||
lenum.battery = Pil.
|
||||
lenum.resupply = Mermi Aktarım Bloğu.
|
||||
lenum.reactor = Patlama/Thorium Reaktör.
|
||||
lenum.turret = Herhangi bir taret.
|
||||
|
||||
sensor.in = Algılanan Blok/Birim.
|
||||
|
||||
radar.from = Algı Oluşturulan Blok.
|
||||
radar.target = Algılanan Birimler için Filtre.
|
||||
radar.and = Extra Filtre.
|
||||
radar.order = Sıralama Filtresi.
|
||||
radar.sort = Sıralama Sırası.
|
||||
radar.output = Dışarı Aktarılan Değişken.
|
||||
|
||||
unitradar.target = Algılanan Birim için Filtre.
|
||||
unitradar.and = Extra Filtre.
|
||||
unitradar.order = Sıralama Filtresi.
|
||||
unitradar.sort = Sıralama Sırası.
|
||||
unitradar.output = Dışarı Aktarılan Değişken.
|
||||
|
||||
control.of = Kontrol Edilen.
|
||||
control.unit = Ateş ediceğimiz Obje.
|
||||
control.shoot = Ateş edilsin mi?
|
||||
|
||||
unitlocate.enemy = Düşman mı?
|
||||
unitlocate.found = Obje bulundu mu?
|
||||
unitlocate.building = Bulunan binanın Türü.
|
||||
unitlocate.outx = X kordinatı.
|
||||
unitlocate.outy = Y kordinatı.
|
||||
unitlocate.group = Aranan binanın türü.
|
||||
|
||||
lenum.idle = Hareket etmez ancak kazmaya ve inşa etmeye devam eder.
|
||||
lenum.stop = Dur!
|
||||
lenum.move = Tam konuma git.
|
||||
lenum.approach = Bir Konuma yaklaş.
|
||||
lenum.pathfind = Düşman Doğuş noktasına git.
|
||||
lenum.target = Bir alana ateş et,
|
||||
lenum.targetp = Bir cisme ateş et.
|
||||
lenum.itemdrop = Bir itemi bırak.
|
||||
lenum.itemtake = Bir binadan item al.
|
||||
lenum.paydrop = Kargoyu bırak.
|
||||
lenum.paytake = Kargo al.
|
||||
lenum.flag = Numara ile işaretle,
|
||||
lenum.mine = Kaz.
|
||||
lenum.build = Bina inşa et.
|
||||
lenum.getblock = Bir bloğun verilerini al.
|
||||
lenum.within = Bir birim menzil alanında mı?
|
||||
lenum.boost = Boostlamaya başla/dur
|
||||
|
||||
@@ -29,6 +29,7 @@ BeefEX
|
||||
Lorex
|
||||
老滑稽
|
||||
Spico The Spirit Guy
|
||||
RTOmega
|
||||
TunacanGamer
|
||||
kemalinanc13
|
||||
Zachary
|
||||
|
||||
@@ -378,3 +378,4 @@
|
||||
63355=silicon-arc-smelter|block-silicon-arc-smelter-ui
|
||||
63354=payload-launch-pad|block-payload-launch-pad-ui
|
||||
63353=silicon-arc-furnace|block-silicon-arc-furnace-ui
|
||||
63352=metal-floor-4|block-metal-floor-4-ui
|
||||
|
||||
@@ -27,8 +27,6 @@ public class BlockIndexer{
|
||||
private static final Rect rect = new Rect();
|
||||
private static boolean returnBool = false;
|
||||
|
||||
private final IntSet intSet = new IntSet();
|
||||
|
||||
private int quadWidth, quadHeight;
|
||||
|
||||
/** Stores all ore quadrants on the map. Maps ID to qX to qY to a list of tiles with that ore. */
|
||||
@@ -41,9 +39,9 @@ public class BlockIndexer{
|
||||
private Seq<Team> activeTeams = new Seq<>(Team.class);
|
||||
/** Maps teams to a map of flagged tiles by flag. */
|
||||
private TileArray[][] flagMap = new TileArray[Team.all.length][BlockFlag.all.length];
|
||||
/** Counts whether a certain floor is present in the world upon load. */
|
||||
private boolean[] blocksPresent;
|
||||
|
||||
/** Empty set used for returning. */
|
||||
private TileArray emptySet = new TileArray();
|
||||
/** Array used for returning and reusing. */
|
||||
private Seq<Tile> returnArray = new Seq<>();
|
||||
/** Array used for returning and reusing. */
|
||||
@@ -74,6 +72,7 @@ public class BlockIndexer{
|
||||
ores = new IntSeq[content.items().size][][];
|
||||
quadWidth = Mathf.ceil(world.width() / (float)quadrantSize);
|
||||
quadHeight = Mathf.ceil(world.height() / (float)quadrantSize);
|
||||
blocksPresent = new boolean[content.blocks().size];
|
||||
|
||||
for(Tile tile : world.tiles){
|
||||
process(tile);
|
||||
@@ -153,6 +152,12 @@ public class BlockIndexer{
|
||||
seq.removeValue(pos);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** @return whether a certain block is anywhere on this map. */
|
||||
public boolean isBlockPresent(Block block){
|
||||
return blocksPresent != null && blocksPresent[block.id];
|
||||
}
|
||||
|
||||
private TileArray[] getFlagged(Team team){
|
||||
@@ -383,6 +388,13 @@ public class BlockIndexer{
|
||||
}
|
||||
data.buildings.insert(tile.build);
|
||||
}
|
||||
|
||||
if(!tile.block().isStatic()){
|
||||
blocksPresent[tile.floorID()] = true;
|
||||
blocksPresent[tile.overlayID()] = true;
|
||||
}
|
||||
//bounds checks only needed in very specific scenarios
|
||||
if(tile.blockID() < blocksPresent.length) blocksPresent[tile.blockID()] = true;
|
||||
}
|
||||
|
||||
public static class TileArray implements Iterable<Tile>{
|
||||
|
||||
@@ -156,7 +156,7 @@ public class WaveSpawner{
|
||||
}
|
||||
|
||||
if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){
|
||||
for(Building core : state.teams.get(state.rules.waveTeam).cores){
|
||||
for(Building core : state.rules.waveTeam.data().cores){
|
||||
cons.get(core.x, core.y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,8 +75,4 @@ public class MinerAI extends AIController{
|
||||
circle(core, unit.type.range / 1.8f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateTargeting(){
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,7 +209,7 @@ public class SoundControl{
|
||||
|
||||
/** Whether to play dark music.*/
|
||||
protected boolean isDark(){
|
||||
if(state.teams.get(player.team()).hasCore() && state.teams.get(player.team()).core().healthf() < 0.85f){
|
||||
if(player.team().data().hasCore() && player.team().data().core().healthf() < 0.85f){
|
||||
//core damaged -> dark
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class Blocks implements ContentList{
|
||||
regolithWall, yellowStoneWall, rhyoliteWall, carbonWall,
|
||||
graphiticStone,
|
||||
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt,
|
||||
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
|
||||
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor4, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
|
||||
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
|
||||
pebbles, tendrils,
|
||||
|
||||
@@ -493,32 +493,24 @@ public class Blocks implements ContentList{
|
||||
wall = sporeWall;
|
||||
}};
|
||||
|
||||
metalFloor = new Floor("metal-floor"){{
|
||||
metalFloor = new MetalFloor("metal-floor"){{
|
||||
variants = 0;
|
||||
attributes.set(Attribute.water, -1f);
|
||||
}};
|
||||
|
||||
metalFloorDamaged = new Floor("metal-floor-damaged"){{
|
||||
variants = 3;
|
||||
}};
|
||||
metalFloorDamaged = new MetalFloor("metal-floor-damaged", 3);
|
||||
|
||||
metalFloor2 = new Floor("metal-floor-2"){{
|
||||
variants = 0;
|
||||
}};
|
||||
metalFloor2 = new MetalFloor("metal-floor-2");
|
||||
metalFloor3 = new MetalFloor("metal-floor-3");
|
||||
metalFloor4 = new MetalFloor("metal-floor-4");
|
||||
metalFloor5 = new MetalFloor("metal-floor-5");
|
||||
|
||||
metalFloor3 = new Floor("metal-floor-3"){{
|
||||
variants = 0;
|
||||
}};
|
||||
|
||||
metalFloor5 = new Floor("metal-floor-5"){{
|
||||
variants = 0;
|
||||
}};
|
||||
|
||||
darkPanel1 = new Floor("dark-panel-1"){{ variants = 0; }};
|
||||
darkPanel2 = new Floor("dark-panel-2"){{ variants = 0; }};
|
||||
darkPanel3 = new Floor("dark-panel-3"){{ variants = 0; }};
|
||||
darkPanel4 = new Floor("dark-panel-4"){{ variants = 0; }};
|
||||
darkPanel5 = new Floor("dark-panel-5"){{ variants = 0; }};
|
||||
darkPanel6 = new Floor("dark-panel-6"){{ variants = 0; }};
|
||||
darkPanel1 = new MetalFloor("dark-panel-1");
|
||||
darkPanel2 = new MetalFloor("dark-panel-2");
|
||||
darkPanel3 = new MetalFloor("dark-panel-3");
|
||||
darkPanel4 = new MetalFloor("dark-panel-4");
|
||||
darkPanel5 = new MetalFloor("dark-panel-5");
|
||||
darkPanel6 = new MetalFloor("dark-panel-6");
|
||||
|
||||
darkMetal = new StaticWall("dark-metal");
|
||||
|
||||
@@ -1773,8 +1765,8 @@ public class Blocks implements ContentList{
|
||||
);
|
||||
|
||||
size = 2;
|
||||
range = 180f;
|
||||
reloadTime = 38f;
|
||||
range = 190f;
|
||||
reloadTime = 34f;
|
||||
restitution = 0.03f;
|
||||
ammoEjectBack = 3f;
|
||||
cooldown = 0.03f;
|
||||
@@ -2013,7 +2005,7 @@ public class Blocks implements ContentList{
|
||||
}};
|
||||
|
||||
health = 200 * size * size;
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);
|
||||
consumes.add(new ConsumeCoolant(0.5f)).update(false);
|
||||
}};
|
||||
|
||||
//endregion
|
||||
@@ -2191,10 +2183,11 @@ public class Blocks implements ContentList{
|
||||
payloadPropulsionTower = new PayloadMassDriver("payload-propulsion-tower"){{
|
||||
requirements(Category.units, with(Items.thorium, 300, Items.silicon, 200, Items.plastanium, 200, Items.phaseFabric, 50));
|
||||
size = 5;
|
||||
reloadTime = 150f;
|
||||
reloadTime = 140f;
|
||||
chargeTime = 100f;
|
||||
range = 300f;
|
||||
consumes.power(10f);
|
||||
range = 500f;
|
||||
maxPayloadSize = 3.5f;
|
||||
consumes.power(6f);
|
||||
}};
|
||||
|
||||
//endregion
|
||||
|
||||
@@ -1231,10 +1231,10 @@ public class Fx{
|
||||
});
|
||||
}),
|
||||
|
||||
shootLiquid = new Effect(40f, 80f, e -> {
|
||||
color(e.color, Color.white, e.fout() / 6f + Mathf.randomSeedRange(e.id, 0.1f));
|
||||
shootLiquid = new Effect(15f, 80f, e -> {
|
||||
color(e.color);
|
||||
|
||||
randLenVectors(e.id, 6, e.finpow() * 60f, e.rotation, 11f, (x, y) -> {
|
||||
randLenVectors(e.id, 2, e.finpow() * 15f, e.rotation, 11f, (x, y) -> {
|
||||
Fill.circle(e.x + x, e.y + y, 0.5f + e.fout() * 2.5f);
|
||||
});
|
||||
}),
|
||||
|
||||
@@ -709,7 +709,7 @@ public class TechTree implements ContentList{
|
||||
/** Item requirements for this content. */
|
||||
public ItemStack[] requirements;
|
||||
/** Requirements that have been fulfilled. Always the same length as the requirement array. */
|
||||
public final ItemStack[] finishedRequirements;
|
||||
public ItemStack[] finishedRequirements;
|
||||
/** Extra objectives needed to research this. */
|
||||
public Seq<Objective> objectives = new Seq<>();
|
||||
/** Nodes that depend on this node. */
|
||||
@@ -720,14 +720,8 @@ public class TechTree implements ContentList{
|
||||
|
||||
this.parent = parent;
|
||||
this.content = content;
|
||||
this.requirements = requirements;
|
||||
this.depth = parent == null ? 0 : parent.depth + 1;
|
||||
this.finishedRequirements = new ItemStack[requirements.length];
|
||||
|
||||
//load up the requirements that have been finished if settings are available
|
||||
for(int i = 0; i < requirements.length; i++){
|
||||
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
||||
}
|
||||
setupRequirements(requirements);
|
||||
|
||||
var used = new ObjectSet<Content>();
|
||||
|
||||
@@ -742,6 +736,16 @@ public class TechTree implements ContentList{
|
||||
all.add(this);
|
||||
}
|
||||
|
||||
public void setupRequirements(ItemStack[] requirements){
|
||||
this.requirements = requirements;
|
||||
this.finishedRequirements = new ItemStack[requirements.length];
|
||||
|
||||
//load up the requirements that have been finished if settings are available
|
||||
for(int i = 0; i < requirements.length; i++){
|
||||
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
||||
}
|
||||
}
|
||||
|
||||
/** Resets finished requirements and saves. */
|
||||
public void reset(){
|
||||
for(ItemStack stack : finishedRequirements){
|
||||
|
||||
@@ -611,7 +611,7 @@ public class UnitTypes implements ContentList{
|
||||
|
||||
bullet = new LiquidBulletType(Liquids.slag){{
|
||||
damage = 11;
|
||||
speed = 2.3f;
|
||||
speed = 2.4f;
|
||||
drag = 0.01f;
|
||||
shootEffect = Fx.shootSmall;
|
||||
lifetime = 56f;
|
||||
|
||||
@@ -117,5 +117,4 @@ public class Weathers implements ContentList{
|
||||
baseSpeed = 0.03f;
|
||||
}};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -247,12 +247,12 @@ public class Control implements ApplicationListener, Loadable{
|
||||
saves.load();
|
||||
}
|
||||
|
||||
/** Automatically unlocks things with no requirements. */
|
||||
/** Automatically unlocks things with no requirements and no locked parents. */
|
||||
void checkAutoUnlocks(){
|
||||
if(net.client()) return;
|
||||
|
||||
for(TechNode node : TechTree.all){
|
||||
if(!node.content.unlocked() && node.requirements.length == 0 && !node.objectives.contains(o -> !o.complete())){
|
||||
if(!node.content.unlocked() && (node.parent == null || node.parent.content.unlocked()) && node.requirements.length == 0 && !node.objectives.contains(o -> !o.complete())){
|
||||
node.content.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class Logic implements ApplicationListener{
|
||||
|
||||
Events.on(BlockBuildEndEvent.class, event -> {
|
||||
if(!event.breaking){
|
||||
TeamData data = state.teams.get(event.team);
|
||||
TeamData data = event.team.data();
|
||||
Iterator<BlockPlan> it = data.blocks.iterator();
|
||||
while(it.hasNext()){
|
||||
BlockPlan b = it.next();
|
||||
|
||||
@@ -21,7 +21,6 @@ import mindustry.gen.*;
|
||||
import mindustry.net.Administration.*;
|
||||
import mindustry.net.*;
|
||||
import mindustry.net.Packets.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.modules.*;
|
||||
|
||||
@@ -160,6 +159,18 @@ public class NetClient implements ApplicationListener{
|
||||
clientPacketReliable(type, contents);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, unreliable = true)
|
||||
public static void effect(Effect effect, float x, float y, float rotation, Color color){
|
||||
if(effect == null) return;
|
||||
|
||||
effect.at(x, y, rotation, color);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void effectReliable(Effect effect, float x, float y, float rotation, Color color){
|
||||
effect(effect, x, y, rotation, color);
|
||||
}
|
||||
|
||||
//called on all clients
|
||||
@Remote(targets = Loc.server, variants = Variant.both)
|
||||
public static void sendMessage(String message, String sender, Player playersender){
|
||||
@@ -314,78 +325,6 @@ public class NetClient implements ApplicationListener{
|
||||
ui.loadfrag.hide();
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, unreliable = true)
|
||||
public static void setHudText(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.hudfrag.setHudText(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void hideHudText(){
|
||||
ui.hudfrag.toggleHudText(false);
|
||||
}
|
||||
|
||||
/** TCP version */
|
||||
@Remote(variants = Variant.both)
|
||||
public static void setHudTextReliable(String message){
|
||||
setHudText(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void announce(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.announce(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoMessage(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showText("", message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void label(String message, float duration, float worldx, float worldy){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showLabel(message, duration, worldx, worldy);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, unreliable = true)
|
||||
public static void effect(Effect effect, float x, float y, float rotation, Color color){
|
||||
if(effect == null) return;
|
||||
|
||||
effect.at(x, y, rotation, color);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void effectReliable(Effect effect, float x, float y, float rotation, Color color){
|
||||
effect(effect, x, y, rotation, color);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoToast(String message, float duration){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showInfoToast(message, duration);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void warningToast(int unicode, String text){
|
||||
if(text == null || Fonts.icon.getData().getGlyph((char)unicode) == null) return;
|
||||
|
||||
ui.hudfrag.showToast(Fonts.getGlyph(Fonts.icon, (char)unicode), text);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void setRules(Rules rules){
|
||||
state.rules = rules;
|
||||
@@ -518,7 +457,7 @@ public class NetClient implements ApplicationListener{
|
||||
int teams = input.readUnsignedByte();
|
||||
for(int i = 0; i < teams; i++){
|
||||
int team = input.readUnsignedByte();
|
||||
TeamData data = state.teams.get(Team.all[team]);
|
||||
TeamData data = Team.all[team].data();
|
||||
if(data.cores.any()){
|
||||
data.cores.first().items.read(dataReads);
|
||||
}else{
|
||||
|
||||
@@ -335,7 +335,7 @@ public class NetServer implements ApplicationListener{
|
||||
votes += d;
|
||||
voted.addAll(player.uuid(), admins.getInfo(player.uuid()).lastIP);
|
||||
|
||||
Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[].[accent] (@/@)\n[lightgray]Type[orange] /vote <y/n>[] to agree.",
|
||||
Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[lightgray].[accent] (@/@)\n[lightgray]Type[orange] /vote <y/n>[] to agree.",
|
||||
player.name, target.name, votes, votesRequired()));
|
||||
|
||||
checkPass();
|
||||
|
||||
@@ -7,6 +7,7 @@ import arc.math.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import arc.util.serialization.*;
|
||||
import mindustry.*;
|
||||
import mindustry.mod.*;
|
||||
import mindustry.net.*;
|
||||
import mindustry.net.Net.*;
|
||||
@@ -20,9 +21,29 @@ import static mindustry.Vars.*;
|
||||
|
||||
public interface Platform{
|
||||
|
||||
/** Dynamically creates a class loader for a jar file. */
|
||||
/** Dynamically creates a class loader for a jar file. This loader must be child-first. */
|
||||
default ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
|
||||
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, parent);
|
||||
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, parent){
|
||||
@Override
|
||||
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
|
||||
//check for loaded state
|
||||
Class<?> loadedClass = findLoadedClass(name);
|
||||
if(loadedClass == null){
|
||||
try{
|
||||
//try to load own class first
|
||||
loadedClass = findClass(name);
|
||||
}catch(ClassNotFoundException e){
|
||||
//use parent if not found
|
||||
loadedClass = super.loadClass(name, resolve);
|
||||
}
|
||||
}
|
||||
|
||||
if(resolve){
|
||||
resolveClass(loadedClass);
|
||||
}
|
||||
return loadedClass;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/** Steam: Update lobby visibility.*/
|
||||
@@ -64,6 +85,9 @@ public interface Platform{
|
||||
protected Context makeContext(){
|
||||
Context ctx = super.makeContext();
|
||||
ctx.setClassShutter(Scripts::allowClass);
|
||||
if(Vars.mods != null){
|
||||
ctx.setApplicationClassLoader(Vars.mods.mainLoader());
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -201,6 +201,7 @@ public class Renderer implements ApplicationListener{
|
||||
|
||||
Draw.proj(camera);
|
||||
|
||||
blocks.checkChanges();
|
||||
blocks.floor.checkChanges();
|
||||
blocks.processBlocks();
|
||||
|
||||
|
||||
@@ -539,6 +539,38 @@ public class UI implements ApplicationListener, Loadable{
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
/** Shows a menu that fires a callback when an option is selected. If nothing is selected, -1 is returned. */
|
||||
public void showMenu(String title, String message, String[][] options, Intc callback){
|
||||
new Dialog(title){{
|
||||
cont.row();
|
||||
cont.image().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent);
|
||||
cont.row();
|
||||
cont.add(message).width(400f).wrap().get().setAlignment(Align.center);
|
||||
cont.row();
|
||||
|
||||
int option = 0;
|
||||
for(var optionsRow : options){
|
||||
Table buttonRow = buttons.row().table().get().row();
|
||||
int fullWidth = 400 - (optionsRow.length - 1) * 8; // adjust to count padding as well
|
||||
int width = fullWidth / optionsRow.length;
|
||||
int lastWidth = fullWidth - width * (optionsRow.length - 1); // take the rest of space for uneven table
|
||||
|
||||
for(int i = 0; i < optionsRow.length; i++){
|
||||
if(optionsRow[i] == null) continue;
|
||||
|
||||
String optionName = optionsRow[i];
|
||||
int finalOption = option;
|
||||
buttonRow.button(optionName, () -> {
|
||||
callback.get(finalOption);
|
||||
hide();
|
||||
}).size(i == optionsRow.length - 1 ? lastWidth : width, 50).pad(4);
|
||||
option++;
|
||||
}
|
||||
}
|
||||
closeOnBack(() -> callback.get(-1));
|
||||
}}.show();
|
||||
}
|
||||
|
||||
public static String formatTime(float ticks){
|
||||
int time = (int)(ticks / 60);
|
||||
if(time < 60) return "0:" + (time < 10 ? "0" : "") + time;
|
||||
|
||||
@@ -6,7 +6,6 @@ import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
import arc.math.geom.Geometry.*;
|
||||
import arc.struct.*;
|
||||
import arc.struct.ObjectIntMap.*;
|
||||
import arc.util.*;
|
||||
import arc.util.noise.*;
|
||||
import mindustry.content.*;
|
||||
@@ -21,7 +20,6 @@ import mindustry.maps.*;
|
||||
import mindustry.maps.filters.*;
|
||||
import mindustry.maps.filters.GenerateFilter.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.type.Weather.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.environment.*;
|
||||
import mindustry.world.blocks.legacy.*;
|
||||
@@ -336,7 +334,7 @@ public class World{
|
||||
ui.showErrorMessage("@map.nospawn.pvp");
|
||||
}
|
||||
}else if(checkRules.attackMode){ //attack maps need two cores to be valid
|
||||
invalidMap = state.teams.get(state.rules.waveTeam).noCores();
|
||||
invalidMap = state.rules.waveTeam.data().noCores();
|
||||
if(invalidMap){
|
||||
ui.showErrorMessage("@map.nospawn.attack");
|
||||
}
|
||||
|
||||
@@ -241,14 +241,14 @@ public class MapView extends Element implements GestureListener{
|
||||
|
||||
image.setImageSize(editor.width(), editor.height());
|
||||
|
||||
if(!ScissorStack.push(rect.set(x, y + Core.scene.marginBottom, width, height))){
|
||||
if(!ScissorStack.push(rect.set(x + Core.scene.marginLeft, y + Core.scene.marginBottom, width, height))){
|
||||
return;
|
||||
}
|
||||
|
||||
Draw.color(Pal.remove);
|
||||
Lines.stroke(2f);
|
||||
Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2);
|
||||
editor.renderer.draw(centerx - sclwidth / 2, centery - sclheight / 2 + Core.scene.marginBottom, sclwidth, sclheight);
|
||||
editor.renderer.draw(centerx - sclwidth / 2 + Core.scene.marginLeft, centery - sclheight / 2 + Core.scene.marginBottom, sclwidth, sclheight);
|
||||
Draw.reset();
|
||||
|
||||
if(grid){
|
||||
|
||||
@@ -31,11 +31,16 @@ public class Damage{
|
||||
|
||||
/** Creates a dynamic explosion based on specified parameters. */
|
||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){
|
||||
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true, null);
|
||||
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true, null, Fx.dynamicExplosion);
|
||||
}
|
||||
|
||||
/** Creates a dynamic explosion based on specified parameters. */
|
||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){
|
||||
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, fire, ignoreTeam, Fx.dynamicExplosion);
|
||||
}
|
||||
|
||||
/** Creates a dynamic explosion based on specified parameters. */
|
||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam, Effect explosion){
|
||||
if(damage){
|
||||
for(int i = 0; i < Mathf.clamp(power / 700, 0, 8); i++){
|
||||
int length = 5 + Mathf.clamp((int)(power / 500), 1, 20);
|
||||
@@ -69,7 +74,7 @@ public class Damage{
|
||||
|
||||
float shake = Math.min(explosiveness / 4f + 3f, 9f);
|
||||
Effect.shake(shake, shake, x, y);
|
||||
Fx.dynamicExplosion.at(x, y, radius / 8f);
|
||||
explosion.at(x, y, radius / 8f);
|
||||
}
|
||||
|
||||
public static void createIncend(float x, float y, float range, int amount){
|
||||
|
||||
@@ -163,6 +163,8 @@ public class BulletType extends Content implements Cloneable{
|
||||
public float puddleAmount = 5f;
|
||||
public Liquid puddleLiquid = Liquids.water;
|
||||
|
||||
public boolean displayAmmoMultiplier = true;
|
||||
|
||||
public float lightRadius = -1f;
|
||||
public float lightOpacity = 0.3f;
|
||||
public Color lightColor = Pal.powerLight;
|
||||
@@ -405,10 +407,10 @@ public class BulletType extends Content implements Cloneable{
|
||||
if(status == StatusEffects.none){
|
||||
status = StatusEffects.shocked;
|
||||
}
|
||||
}
|
||||
|
||||
if(lightningType == null){
|
||||
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||
}
|
||||
if(lightningType == null){
|
||||
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ public class LiquidBulletType extends BulletType{
|
||||
shootEffect = Fx.none;
|
||||
drag = 0.001f;
|
||||
knockback = 0.55f;
|
||||
displayAmmoMultiplier = false;
|
||||
}
|
||||
|
||||
public LiquidBulletType(){
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package mindustry.entities.comp;
|
||||
|
||||
import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
@@ -12,7 +11,6 @@ abstract class BoundedComp implements Velc, Posc, Healthc, Flyingc{
|
||||
static final float warpDst = 40f;
|
||||
|
||||
@Import float x, y;
|
||||
@Import Vec2 vel;
|
||||
|
||||
@Override
|
||||
public void update(){
|
||||
|
||||
@@ -222,7 +222,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
}
|
||||
}
|
||||
|
||||
TeamData data = state.teams.get(team);
|
||||
TeamData data = team.data();
|
||||
|
||||
if(checkPrevious){
|
||||
//remove existing blocks that have been placed here.
|
||||
@@ -1399,7 +1399,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
return switch(sensor){
|
||||
case type -> block;
|
||||
case firstItem -> items == null ? null : items.first();
|
||||
case config -> block.configurations.containsKey(Item.class) || block.configurations.containsKey(Liquid.class) ? config() : null;
|
||||
case config -> block.configSenseable() ? config() : null;
|
||||
case payloadType -> getPayload() instanceof UnitPayload p1 ? p1.unit.type : getPayload() instanceof BuildPayload p2 ? p2.block() : null;
|
||||
default -> noSensed;
|
||||
};
|
||||
|
||||
@@ -56,7 +56,7 @@ abstract class FireComp implements Timedc, Posc, Syncc, Drawc{
|
||||
return;
|
||||
}
|
||||
|
||||
if(time >= lifetime || tile == null){
|
||||
if(time >= lifetime || tile == null || Float.isNaN(lifetime)){
|
||||
remove();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
transient float healTime;
|
||||
private transient float resupplyTime = Mathf.random(10f);
|
||||
private transient boolean wasPlayer;
|
||||
private transient float lastHealth;
|
||||
private transient boolean wasHealed;
|
||||
|
||||
public void moveAt(Vec2 vector){
|
||||
moveAt(vector, type.accel);
|
||||
@@ -320,16 +320,23 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
type.landed(self());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heal(float amount){
|
||||
if(health < maxHealth && amount > 0){
|
||||
wasHealed = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(){
|
||||
|
||||
type.update(self());
|
||||
|
||||
if(health > lastHealth && lastHealth > 0 && healTime <= -1f){
|
||||
if(wasHealed && healTime <= -1f){
|
||||
healTime = 1f;
|
||||
}
|
||||
healTime -= Time.delta / 20f;
|
||||
lastHealth = health;
|
||||
wasHealed = false;
|
||||
|
||||
//check if environment is unsupported
|
||||
if(!type.supportsEnv(state.rules.environment) && !dead){
|
||||
@@ -450,7 +457,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
float power = item().charge * stack().amount * 150f;
|
||||
|
||||
if(!spawnedByCore){
|
||||
Damage.dynamicExplosion(x, y, flammability, explosiveness, power, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1, team);
|
||||
Damage.dynamicExplosion(x, y, flammability, explosiveness, power, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1, team, type.deathExplosionEffect);
|
||||
}
|
||||
|
||||
float shake = hitSize / 3f;
|
||||
|
||||
@@ -134,6 +134,18 @@ public class EventType{
|
||||
}
|
||||
}
|
||||
|
||||
/** Consider using Menus.registerMenu instead. */
|
||||
public static class MenuOptionChooseEvent{
|
||||
public final Player player;
|
||||
public final int menuId, option;
|
||||
|
||||
public MenuOptionChooseEvent(Player player, int menuId, int option){
|
||||
this.player = player;
|
||||
this.option = option;
|
||||
this.menuId = menuId;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PlayerChatEvent{
|
||||
public final Player player;
|
||||
public final String message;
|
||||
|
||||
@@ -13,7 +13,6 @@ import mindustry.content.*;
|
||||
import mindustry.game.EventType.*;
|
||||
import mindustry.game.Teams.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.power.*;
|
||||
|
||||
@@ -142,11 +141,21 @@ public class BlockRenderer{
|
||||
Tile other = world.tile(cx, cy);
|
||||
if(other != null){
|
||||
darkEvents.add(other.pos());
|
||||
floor.recacheTile(other);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void checkChanges(){
|
||||
darkEvents.each(pos -> {
|
||||
var tile = world.tile(pos);
|
||||
if(tile != null){
|
||||
tile.data = world.getWallDarkness(tile);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void drawDarkness(){
|
||||
if(!darkEvents.isEmpty()){
|
||||
Draw.flush();
|
||||
@@ -156,10 +165,9 @@ public class BlockRenderer{
|
||||
|
||||
darkEvents.each(pos -> {
|
||||
var tile = world.tile(pos);
|
||||
tile.data = world.getWallDarkness(tile);
|
||||
float darkness = world.getDarkness(tile.x, tile.y);
|
||||
//then draw the shadow
|
||||
Draw.colorl(!tile.isDarkened() || darkness <= 0f ? 1f : 1f - Math.min((darkness + 0.5f) / 4f, 1f));
|
||||
Draw.colorl(darkness <= 0f ? 1f : 1f - Math.min((darkness + 0.5f) / 4f, 1f));
|
||||
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
||||
});
|
||||
|
||||
@@ -186,7 +194,7 @@ public class BlockRenderer{
|
||||
}
|
||||
|
||||
if(brokenFade > 0.001f){
|
||||
for(BlockPlan block : state.teams.get(player.team()).blocks){
|
||||
for(BlockPlan block : player.team().data().blocks){
|
||||
Block b = content.block(block.block);
|
||||
if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue;
|
||||
|
||||
|
||||
@@ -97,7 +97,6 @@ public class FloorRenderer{
|
||||
|
||||
/** Queues up a cache change for a tile. Only runs in render loop. */
|
||||
public void recacheTile(Tile tile){
|
||||
//TODO will be faster it the position also specified the layer to be recached
|
||||
//recaching all layers may not be necessary
|
||||
recacheSet.add(Point2.pack(tile.x / chunksize, tile.y / chunksize));
|
||||
}
|
||||
@@ -168,7 +167,6 @@ public class FloorRenderer{
|
||||
shader.setUniformi("u_texture", 0);
|
||||
|
||||
//only ever use the base environment texture
|
||||
//TODO show error texture for anything else
|
||||
texture.bind(0);
|
||||
|
||||
//enable all mesh attributes
|
||||
|
||||
@@ -47,7 +47,6 @@ public class MenuRenderer implements Disposable{
|
||||
Simplex s1 = new Simplex(offset);
|
||||
Simplex s2 = new Simplex(offset + 1);
|
||||
Simplex s3 = new Simplex(offset + 2);
|
||||
RidgedPerlin rid = new RidgedPerlin(1 + offset, 1);
|
||||
Block[] selected = Structs.select(
|
||||
new Block[]{Blocks.sand, Blocks.sandWall},
|
||||
new Block[]{Blocks.shale, Blocks.shaleWall},
|
||||
@@ -141,7 +140,7 @@ public class MenuRenderer implements Disposable{
|
||||
}
|
||||
|
||||
if(tendrils){
|
||||
if(rid.getValue(x, y, 1f / 17f) > 0f){
|
||||
if(RidgedPerlin.noise2d(1 + offset, x, y, 1f / 17f) > 0f){
|
||||
floor = Mathf.chance(0.2) ? Blocks.sporeMoss : Blocks.moss;
|
||||
|
||||
if(wall != Blocks.air){
|
||||
|
||||
@@ -108,7 +108,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
if(build == null || build.items == null) return;
|
||||
build.items.set(item, amount);
|
||||
}
|
||||
|
||||
|
||||
@Remote(called = Loc.server, unreliable = true)
|
||||
public static void clearItems(Building build){
|
||||
if(build == null || build.items == null) return;
|
||||
@@ -131,22 +131,24 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
|
||||
@Remote(called = Loc.both, targets = Loc.both, forward = true, unreliable = true)
|
||||
public static void deletePlans(Player player, int[] positions){
|
||||
if(netServer.admins.allowAction(player, ActionType.removePlanned, a -> a.plans = positions)){
|
||||
if(net.server() && !netServer.admins.allowAction(player, ActionType.removePlanned, a -> a.plans = positions)){
|
||||
throw new ValidateException(player, "Player cannot remove plans.");
|
||||
}
|
||||
|
||||
var it = state.teams.get(player.team()).blocks.iterator();
|
||||
//O(n^2) search here; no way around it
|
||||
outer:
|
||||
while(it.hasNext()){
|
||||
BlockPlan req = it.next();
|
||||
if(player == null) return;
|
||||
|
||||
for(int pos : positions){
|
||||
if(req.x == Point2.x(pos) && req.y == Point2.y(pos)){
|
||||
it.remove();
|
||||
continue outer;
|
||||
}
|
||||
var it = player.team().data().blocks.iterator();
|
||||
//O(n^2) search here; no way around it
|
||||
outer:
|
||||
while(it.hasNext()){
|
||||
BlockPlan req = it.next();
|
||||
|
||||
for(int pos : positions){
|
||||
if(req.x == Point2.x(pos) && req.y == Point2.y(pos)){
|
||||
it.remove();
|
||||
continue outer;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -885,7 +887,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
removed.clear();
|
||||
|
||||
//remove blocks to rebuild
|
||||
Iterator<BlockPlan> broken = state.teams.get(player.team()).blocks.iterator();
|
||||
Iterator<BlockPlan> broken = player.team().data().blocks.iterator();
|
||||
while(broken.hasNext()){
|
||||
BlockPlan req = broken.next();
|
||||
Block block = content.block(req.block);
|
||||
@@ -938,9 +940,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
//check if tapped block is configurable
|
||||
if(build.block.configurable && build.interactable(player.team())){
|
||||
consumed = true;
|
||||
if(((!frag.config.isShown() && build.shouldShowConfigure(player)) //if the config fragment is hidden, show
|
||||
if((!frag.config.isShown() && build.shouldShowConfigure(player)) //if the config fragment is hidden, show
|
||||
//alternatively, the current selected block can 'agree' to switch config tiles
|
||||
|| (frag.config.isShown() && frag.config.getSelectedTile().onConfigureTileTapped(build)))){
|
||||
|| (frag.config.isShown() && frag.config.getSelectedTile().onConfigureTileTapped(build))){
|
||||
Sounds.click.at(build);
|
||||
frag.config.showConfig(build);
|
||||
}
|
||||
|
||||
@@ -588,6 +588,30 @@ public class TypeIO{
|
||||
return new TraceInfo(readString(read), readString(read), read.b() == 1, read.b() == 1, read.i(), read.i());
|
||||
}
|
||||
|
||||
public static void writeStrings(Writes write, String[][] strings){
|
||||
write.b(strings.length);
|
||||
for(String[] string : strings){
|
||||
write.b(string.length);
|
||||
for(String s : string){
|
||||
writeString(write, s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String[][] readStrings(Reads read){
|
||||
int rows = read.ub();
|
||||
|
||||
String[][] strings = new String[rows][];
|
||||
for(int i = 0; i < rows; i++){
|
||||
int columns = read.ub();
|
||||
strings[i] = new String[columns];
|
||||
for(int j = 0; j < columns; j++){
|
||||
strings[i][j] = readString(read);
|
||||
}
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
|
||||
public static void writeStringData(DataOutput buffer, String string) throws IOException{
|
||||
if(string != null){
|
||||
byte[] bytes = string.getBytes(charset);
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package mindustry.logic;
|
||||
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.logic.LExecutor.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
@@ -55,6 +57,10 @@ public class GlobalConstants{
|
||||
for(LAccess sensor : LAccess.all){
|
||||
put("@" + sensor.name(), sensor);
|
||||
}
|
||||
|
||||
for(UnitCommand cmd : UnitCommand.all){
|
||||
put("@command" + Strings.capitalize(cmd.name()), cmd);
|
||||
}
|
||||
}
|
||||
|
||||
/** @return a constant ID > 0 if there is a constant with this name, otherwise -1. */
|
||||
|
||||
@@ -922,6 +922,7 @@ public class LExecutor{
|
||||
v.objval instanceof Content ? "[content]" :
|
||||
v.objval instanceof Building build ? build.block.name :
|
||||
v.objval instanceof Unit unit ? unit.type.name :
|
||||
v.objval instanceof Enum<?> e ? e.name() :
|
||||
"[object]";
|
||||
|
||||
exec.textBuffer.append(strValue);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package mindustry.maps.filters;
|
||||
|
||||
import arc.math.*;
|
||||
import arc.util.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.gen.*;
|
||||
@@ -17,7 +16,7 @@ public class BlendFilter extends GenerateFilter{
|
||||
return Structs.arr(
|
||||
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f),
|
||||
new BlockOption("block", () -> block, b -> block = b, anyOptional),
|
||||
new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly),
|
||||
new BlockOption("floor", () -> floor, b -> floor = b, anyOptional),
|
||||
new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional)
|
||||
);
|
||||
}
|
||||
@@ -34,7 +33,7 @@ public class BlendFilter extends GenerateFilter{
|
||||
|
||||
@Override
|
||||
public void apply(){
|
||||
if(in.floor == block || block == Blocks.air || in.floor == ignore) return;
|
||||
if(in.floor == block || block == Blocks.air || in.floor == ignore || (!floor.isFloor() && (in.block == block || in.block == ignore))) return;
|
||||
|
||||
int rad = (int)radius;
|
||||
boolean found = false;
|
||||
@@ -42,7 +41,7 @@ public class BlendFilter extends GenerateFilter{
|
||||
outer:
|
||||
for(int x = -rad; x <= rad; x++){
|
||||
for(int y = -rad; y <= rad; y++){
|
||||
if(Mathf.within(x, y, rad)) continue;
|
||||
if(x*x + y*y > rad*rad) continue;
|
||||
Tile tile = in.tile(in.x + x, in.y + y);
|
||||
|
||||
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
||||
@@ -53,7 +52,11 @@ public class BlendFilter extends GenerateFilter{
|
||||
}
|
||||
|
||||
if(found){
|
||||
in.floor = floor;
|
||||
if(!floor.isFloor()){
|
||||
in.block = floor;
|
||||
}else{
|
||||
in.floor = floor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import arc.scene.ui.layout.*;
|
||||
import mindustry.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.ui.dialogs.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.environment.*;
|
||||
@@ -105,6 +104,7 @@ public abstract class FilterOption{
|
||||
if(++i % 10 == 0) dialog.cont.row();
|
||||
}
|
||||
|
||||
dialog.closeOnBack();
|
||||
dialog.show();
|
||||
}).pad(4).margin(12f);
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import mindustry.world.*;
|
||||
|
||||
public abstract class GenerateFilter{
|
||||
protected transient float o = (float)(Math.random() * 10000000.0);
|
||||
protected transient long seed;
|
||||
protected transient int seed;
|
||||
protected transient GenerateInput in;
|
||||
|
||||
public void apply(Tiles tiles, GenerateInput in){
|
||||
@@ -75,11 +75,16 @@ public abstract class GenerateFilter{
|
||||
/** draw any additional guides */
|
||||
public void draw(Image image){}
|
||||
|
||||
/** localized display name */
|
||||
public String name(){
|
||||
public String simpleName(){
|
||||
Class c = getClass();
|
||||
if(c.isAnonymousClass()) c = c.getSuperclass();
|
||||
return Core.bundle.get("filter." + c.getSimpleName().toLowerCase().replace("filter", ""), c.getSimpleName().replace("Filter", ""));
|
||||
return c.getSimpleName().toLowerCase().replace("filter", "");
|
||||
}
|
||||
|
||||
/** localized display name */
|
||||
public String name(){
|
||||
var s = simpleName();
|
||||
return Core.bundle.get("filter." + s);
|
||||
}
|
||||
|
||||
public char icon(){
|
||||
@@ -112,11 +117,15 @@ public abstract class GenerateFilter{
|
||||
}
|
||||
|
||||
protected float rnoise(float x, float y, float scl, float mag){
|
||||
return in.pnoise.getValue((int)(x + o), (int)(y + o), 1f / scl) * mag;
|
||||
return RidgedPerlin.noise2d(seed + 1, (int)(x + o), (int)(y + o), 1f / scl) * mag;
|
||||
}
|
||||
|
||||
protected float rnoise(float x, float y, int octaves, float scl, float falloff, float mag){
|
||||
return RidgedPerlin.noise2d(seed + 1, (int)(x + o), (int)(y + o), octaves, falloff, 1f / scl) * mag;
|
||||
}
|
||||
|
||||
protected float chance(){
|
||||
return Mathf.randomSeed(Pack.longInt(in.x, in.y + (int)seed));
|
||||
return Mathf.randomSeed(Pack.longInt(in.x, in.y + seed));
|
||||
}
|
||||
|
||||
/** an input for generating at a certain coordinate. should only be instantiated once. */
|
||||
@@ -129,7 +138,6 @@ public abstract class GenerateFilter{
|
||||
public Block floor, block, overlay;
|
||||
|
||||
Simplex noise = new Simplex();
|
||||
RidgedPerlin pnoise = new RidgedPerlin(0, 1);
|
||||
TileProvider buffer;
|
||||
|
||||
public void apply(int x, int y, Block block, Block floor, Block overlay){
|
||||
@@ -145,7 +153,6 @@ public abstract class GenerateFilter{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
noise.setSeed(filter.seed);
|
||||
pnoise.setSeed((int)(filter.seed + 1));
|
||||
}
|
||||
|
||||
Tile tile(float x, float y){
|
||||
|
||||
@@ -10,14 +10,15 @@ import mindustry.world.*;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class MedianFilter extends GenerateFilter{
|
||||
private static final IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
||||
|
||||
float radius = 2;
|
||||
float percentile = 0.5f;
|
||||
IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
||||
|
||||
@Override
|
||||
public FilterOption[] options(){
|
||||
return Structs.arr(
|
||||
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 12f),
|
||||
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f),
|
||||
new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,15 +8,17 @@ import mindustry.world.*;
|
||||
import static mindustry.maps.filters.FilterOption.*;
|
||||
|
||||
public class RiverNoiseFilter extends GenerateFilter{
|
||||
float scl = 40, threshold = 0f, threshold2 = 0.1f;
|
||||
float scl = 40, threshold = 0f, threshold2 = 0.1f, octaves = 1, falloff = 0.5f;
|
||||
Block floor = Blocks.water, floor2 = Blocks.deepwater, block = Blocks.sandWall;
|
||||
|
||||
@Override
|
||||
public FilterOption[] options(){
|
||||
return Structs.arr(
|
||||
new SliderOption("scale", () -> scl, f -> scl = f, 1f, 500f),
|
||||
new SliderOption("threshold", () -> threshold, f -> threshold = f, -1f, 0.3f),
|
||||
new SliderOption("threshold2", () -> threshold2, f -> threshold2 = f, -1f, 0.3f),
|
||||
new SliderOption("threshold", () -> threshold, f -> threshold = f, -1f, 1f),
|
||||
new SliderOption("threshold2", () -> threshold2, f -> threshold2 = f, -1f, 1f),
|
||||
new SliderOption("octaves", () -> octaves, f -> octaves = f, 1f, 10f),
|
||||
new SliderOption("falloff", () -> falloff, f -> falloff = f, 0f, 1f),
|
||||
new BlockOption("block", () -> block, b -> block = b, wallsOnly),
|
||||
new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly),
|
||||
new BlockOption("floor2", () -> floor2, b -> floor2 = b, floorsOnly)
|
||||
@@ -30,7 +32,7 @@ public class RiverNoiseFilter extends GenerateFilter{
|
||||
|
||||
@Override
|
||||
public void apply(){
|
||||
float noise = rnoise(in.x, in.y, scl, 1f);
|
||||
float noise = rnoise(in.x, in.y, (int)octaves, scl, falloff, 1f);
|
||||
|
||||
if(noise >= threshold){
|
||||
in.floor = floor;
|
||||
|
||||
@@ -18,7 +18,6 @@ import mindustry.world.*;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class SerpuloPlanetGenerator extends PlanetGenerator{
|
||||
RidgedPerlin rid = new RidgedPerlin(1, 2);
|
||||
BaseGenerator basegen = new BaseGenerator();
|
||||
float scl = 5f;
|
||||
float waterOffset = 0.07f;
|
||||
@@ -115,7 +114,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
||||
tile.floor = getBlock(position);
|
||||
tile.block = tile.floor.asFloor().wall;
|
||||
|
||||
if(rid.getValue(position.x, position.y, position.z, 22) > 0.31){
|
||||
if(RidgedPerlin.noise3d(1, position.x, position.y, position.z, 2, 22) > 0.31){
|
||||
tile.block = Blocks.air;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,11 @@ public class ContentParser{
|
||||
return sound;
|
||||
});
|
||||
put(Objectives.Objective.class, (type, data) -> {
|
||||
if(data.isString()){
|
||||
var cont = locateAny(data.asString());
|
||||
if(cont == null) throw new IllegalArgumentException("Unknown objective content: " + data.asString());
|
||||
return new Research((UnlockableContent)cont);
|
||||
}
|
||||
var oc = resolve(data.getString("type", ""), SectorComplete.class);
|
||||
data.remove("type");
|
||||
Objectives.Objective obj = make(oc);
|
||||
@@ -228,6 +233,7 @@ public class ContentParser{
|
||||
case "item" -> block.consumes.item(find(ContentType.item, child.asString()));
|
||||
case "items" -> block.consumes.add((Consume)parser.readValue(ConsumeItems.class, child));
|
||||
case "liquid" -> block.consumes.add((Consume)parser.readValue(ConsumeLiquid.class, child));
|
||||
case "coolant" -> block.consumes.add((Consume)parser.readValue(ConsumeCoolant.class, child));
|
||||
case "power" -> {
|
||||
if(child.isNumber()){
|
||||
block.consumes.power(child.asFloat());
|
||||
@@ -543,6 +549,16 @@ public class ContentParser{
|
||||
return first != null ? first : Vars.content.getByName(type, currentMod.name + "-" + name);
|
||||
}
|
||||
|
||||
private <T extends MappableContent> T locateAny(String name){
|
||||
for(ContentType t : ContentType.all){
|
||||
var out = locate(t, name);
|
||||
if(out != null){
|
||||
return (T)out;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
<T> T make(Class<T> type){
|
||||
try{
|
||||
Constructor<T> cons = type.getDeclaredConstructor();
|
||||
@@ -679,18 +695,26 @@ public class ContentParser{
|
||||
lastNode.remove();
|
||||
}
|
||||
|
||||
TechNode node = new TechNode(null, unlock, customRequirements == null ? unlock.researchRequirements() : customRequirements);
|
||||
TechNode node = new TechNode(null, unlock, customRequirements == null ? ItemStack.empty : customRequirements);
|
||||
LoadedMod cur = currentMod;
|
||||
|
||||
postreads.add(() -> {
|
||||
currentContent = unlock;
|
||||
currentMod = cur;
|
||||
|
||||
//add custom objectives
|
||||
if(research.has("objectives")){
|
||||
node.objectives.addAll(parser.readValue(Objective[].class, research.get("objectives")));
|
||||
}
|
||||
|
||||
//remove old node from parent
|
||||
if(node.parent != null){
|
||||
node.parent.children.remove(node);
|
||||
}
|
||||
|
||||
if(customRequirements == null){
|
||||
node.setupRequirements(unlock.researchRequirements());
|
||||
}
|
||||
|
||||
//find parent node.
|
||||
TechNode parent = TechTree.all.find(t -> t.content.name.equals(researchName) || t.content.name.equals(currentMod.name + "-" + researchName));
|
||||
|
||||
@@ -11,25 +11,23 @@ public class ModClassLoader extends ClassLoader{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
|
||||
//always try the superclass first
|
||||
try{
|
||||
return super.loadClass(name, resolve);
|
||||
}catch(ClassNotFoundException error){
|
||||
//a child may try to delegate class loading to its parent, which is *this class loader* - do not let that happen
|
||||
if(inChild) throw error;
|
||||
int size = children.size;
|
||||
//if it doesn't exist in the main class loader, try all the children
|
||||
for(int i = 0; i < size; i++){
|
||||
try{
|
||||
inChild = true;
|
||||
var out = children.get(i).loadClass(name);
|
||||
inChild = false;
|
||||
return out;
|
||||
}catch(ClassNotFoundException ignored){
|
||||
}
|
||||
protected Class<?> findClass(String name) throws ClassNotFoundException{
|
||||
//a child may try to delegate class loading to its parent, which is *this class loader* - do not let that happen
|
||||
if(inChild) throw new ClassNotFoundException(name);
|
||||
|
||||
ClassNotFoundException last = null;
|
||||
int size = children.size;
|
||||
//if it doesn't exist in the main class loader, try all the children
|
||||
for(int i = 0; i < size; i++){
|
||||
try{
|
||||
inChild = true;
|
||||
var out = children.get(i).loadClass(name);
|
||||
inChild = false;
|
||||
return out;
|
||||
}catch(ClassNotFoundException e){
|
||||
last = e;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
throw (last == null ? new ClassNotFoundException(name) : last);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class Scripts implements Disposable{
|
||||
|
||||
public String runConsole(String text){
|
||||
try{
|
||||
Object o = context.evaluateString(scope, text, "console.js", 1, null);
|
||||
Object o = context.evaluateString(scope, text, "console.js", 1);
|
||||
if(o instanceof NativeJavaObject n) o = n.unwrap();
|
||||
if(o instanceof Undefined) o = "undefined";
|
||||
return String.valueOf(o);
|
||||
@@ -172,11 +172,11 @@ public class Scripts implements Disposable{
|
||||
try{
|
||||
if(currentMod != null){
|
||||
//inject script info into file
|
||||
context.evaluateString(scope, "modName = \"" + currentMod.name + "\"\nscriptName = \"" + file + "\"", "initscript.js", 1, null);
|
||||
context.evaluateString(scope, "modName = \"" + currentMod.name + "\"\nscriptName = \"" + file + "\"", "initscript.js", 1);
|
||||
}
|
||||
context.evaluateString(scope,
|
||||
wrap ? "(function(){'use strict';\n" + script + "\n})();" : script,
|
||||
file, 0, null);
|
||||
file, 0);
|
||||
return true;
|
||||
}catch(Throwable t){
|
||||
if(currentMod != null){
|
||||
@@ -224,7 +224,7 @@ public class Scripts implements Disposable{
|
||||
if(!module.exists() || module.isDirectory()) return null;
|
||||
return new ModuleSource(
|
||||
new InputStreamReader(new ByteArrayInputStream((module.readString()).getBytes())),
|
||||
null, new URI(moduleId), root.file().toURI(), validator);
|
||||
new URI(moduleId), root.file().toURI(), validator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,24 +188,22 @@ public class ArcNetProvider implements NetProvider{
|
||||
|
||||
@Override
|
||||
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> invalid){
|
||||
executor.submit(() -> {
|
||||
try{
|
||||
DatagramSocket socket = new DatagramSocket();
|
||||
long time = Time.millis();
|
||||
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), port));
|
||||
socket.setSoTimeout(2000);
|
||||
try{
|
||||
DatagramSocket socket = new DatagramSocket();
|
||||
long time = Time.millis();
|
||||
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), port));
|
||||
socket.setSoTimeout(2000);
|
||||
|
||||
DatagramPacket packet = packetSupplier.get();
|
||||
socket.receive(packet);
|
||||
DatagramPacket packet = packetSupplier.get();
|
||||
socket.receive(packet);
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
|
||||
Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer);
|
||||
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
|
||||
Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer);
|
||||
|
||||
Core.app.post(() -> valid.get(host));
|
||||
}catch(Exception e){
|
||||
Core.app.post(() -> invalid.get(e));
|
||||
}
|
||||
});
|
||||
Core.app.post(() -> valid.get(host));
|
||||
}catch(Exception e){
|
||||
Core.app.post(() -> invalid.get(e));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import arc.func.*;
|
||||
import arc.net.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import arc.util.async.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.net.Packets.*;
|
||||
import mindustry.net.Streamable.*;
|
||||
@@ -12,6 +13,7 @@ import mindustry.net.Streamable.*;
|
||||
import java.io.*;
|
||||
import java.nio.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
import static arc.util.Log.*;
|
||||
import static mindustry.Vars.*;
|
||||
@@ -31,6 +33,7 @@ public class Net{
|
||||
private final ObjectMap<Class<?>, Cons> clientListeners = new ObjectMap<>();
|
||||
private final ObjectMap<Class<?>, Cons2<NetConnection, Object>> serverListeners = new ObjectMap<>();
|
||||
private final IntMap<StreamBuilder> streams = new IntMap<>();
|
||||
private final ExecutorService pingExecutor = Threads.executor(Math.max(Runtime.getRuntime().availableProcessors(), 6));
|
||||
|
||||
private final NetProvider provider;
|
||||
|
||||
@@ -316,10 +319,17 @@ public class Net{
|
||||
}
|
||||
|
||||
/**
|
||||
* Pings a host in an new thread. If an error occured, failed() should be called with the exception.
|
||||
* Pings a host in a pooled thread. If an error occurred, failed() should be called with the exception.
|
||||
*/
|
||||
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed){
|
||||
provider.pingHost(address, port, valid, failed);
|
||||
pingExecutor.submit(() -> provider.pingHost(address, port, valid, failed));
|
||||
}
|
||||
|
||||
/**
|
||||
* Pings a host in an new thread. If an error occurred, failed() should be called with the exception.
|
||||
*/
|
||||
public void pingHostThread(String address, int port, Cons<Host> valid, Cons<Exception> failed){
|
||||
Threads.daemon(() -> provider.pingHost(address, port, valid, failed));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -367,7 +377,7 @@ public class Net{
|
||||
*/
|
||||
void discoverServers(Cons<Host> callback, Runnable done);
|
||||
|
||||
/** Ping a host. If an error occurred, failed() should be called with the exception. */
|
||||
/** Ping a host. If an error occurred, failed() should be called with the exception. This method should block. */
|
||||
void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed);
|
||||
|
||||
/** Host a server at specified port. */
|
||||
|
||||
@@ -71,6 +71,7 @@ public class UnitType extends UnlockableContent{
|
||||
public boolean omniMovement = true;
|
||||
public Effect fallEffect = Fx.fallSmoke;
|
||||
public Effect fallThrusterEffect = Fx.fallSmoke;
|
||||
public Effect deathExplosionEffect = Fx.dynamicExplosion;
|
||||
public Seq<Ability> abilities = new Seq<>();
|
||||
public BlockFlag targetFlag = BlockFlag.generator;
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
package mindustry.ui;
|
||||
|
||||
import arc.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.game.EventType.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
/** Class for handling menus and notifications across the network. Unstable API! */
|
||||
public class Menus{
|
||||
private static IntMap<MenuListener> menuListeners = new IntMap<>();
|
||||
|
||||
/** Register a *global* menu listener. If no option is chosen, the option is returned as -1. */
|
||||
public static void registerMenu(int id, MenuListener listener){
|
||||
menuListeners.put(id, listener);
|
||||
}
|
||||
|
||||
//do not invoke any of the methods below directly, use Call
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void menu(int menuId, String title, String message, String[][] options){
|
||||
if(title == null) title = "";
|
||||
if(options == null) options = new String[0][0];
|
||||
|
||||
ui.showMenu(title, message, options, (option) -> Call.menuChoose(player, menuId, option));
|
||||
}
|
||||
|
||||
@Remote(targets = Loc.both, called = Loc.both)
|
||||
public static void menuChoose(@Nullable Player player, int menuId, int option){
|
||||
if(player != null && menuListeners.containsKey(menuId)){
|
||||
Events.fire(new MenuOptionChooseEvent(player, menuId, option));
|
||||
menuListeners.get(menuId).get(player, option);
|
||||
}
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, unreliable = true)
|
||||
public static void setHudText(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.hudfrag.setHudText(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void hideHudText(){
|
||||
ui.hudfrag.toggleHudText(false);
|
||||
}
|
||||
|
||||
/** TCP version */
|
||||
@Remote(variants = Variant.both)
|
||||
public static void setHudTextReliable(String message){
|
||||
setHudText(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void announce(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.announce(message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoMessage(String message){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showText("", message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void label(String message, float duration, float worldx, float worldy){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showLabel(message, duration, worldx, worldy);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void infoToast(String message, float duration){
|
||||
if(message == null) return;
|
||||
|
||||
ui.showInfoToast(message, duration);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void warningToast(int unicode, String text){
|
||||
if(text == null || Fonts.icon.getData().getGlyph((char)unicode) == null) return;
|
||||
|
||||
ui.hudfrag.showToast(Fonts.getGlyph(Fonts.icon, (char)unicode), text);
|
||||
}
|
||||
|
||||
public interface MenuListener{
|
||||
void get(Player player, int option);
|
||||
}
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public class ContentInfoDialog extends BaseDialog{
|
||||
for(Stat stat : map.keys()){
|
||||
table.table(inset -> {
|
||||
inset.left();
|
||||
inset.add("[lightgray]" + stat.localized() + ":[] ").left();
|
||||
inset.add("[lightgray]" + stat.localized() + ":[] ").left().top();
|
||||
Seq<StatValue> arr = map.get(stat);
|
||||
for(StatValue value : arr){
|
||||
value.display(inset);
|
||||
|
||||
@@ -364,7 +364,7 @@ public class JoinDialog extends BaseDialog{
|
||||
for(String address : group.addresses){
|
||||
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
||||
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
|
||||
net.pingHost(resaddress, resport, res -> {
|
||||
net.pingHostThread(resaddress, resport, res -> {
|
||||
if(refreshes != cur) return;
|
||||
res.port = resport;
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ public class ModsDialog extends BaseDialog{
|
||||
float w = Math.min(Core.graphics.getWidth() / 1.1f, 520f);
|
||||
|
||||
cont.clear();
|
||||
cont.defaults().width(Math.min(Core.graphics.getWidth() / 1.2f, 520f)).pad(4);
|
||||
cont.defaults().width(Math.min(Core.graphics.getWidth() / 1.2f, 556f)).pad(4);
|
||||
cont.add("@mod.reloadrequired").visible(mods::requiresReload).center().get().setAlignment(Align.center);
|
||||
cont.row();
|
||||
|
||||
|
||||
@@ -286,7 +286,7 @@ public class HudFragment extends Fragment{
|
||||
.update(label -> label.color.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))), true,
|
||||
() -> {
|
||||
if(!shown || state.isPaused()) return false;
|
||||
if(state.isMenu() || !state.teams.get(player.team()).hasCore()){
|
||||
if(state.isMenu() || !player.team().data().hasCore()){
|
||||
coreAttackTime[0] = 0f;
|
||||
return false;
|
||||
}
|
||||
@@ -322,7 +322,17 @@ public class HudFragment extends Fragment{
|
||||
}
|
||||
return max == 0f ? 0f : val / max;
|
||||
}).blink(Color.white).outline(new Color(0, 0, 0, 0.6f), 7f)).grow())
|
||||
.fillX().width(320f).height(60f).name("boss").visible(() -> state.rules.waves && state.boss() != null).padTop(7);
|
||||
.fillX().width(320f).height(60f).name("boss").visible(() -> state.rules.waves && state.boss() != null).padTop(7).row();
|
||||
|
||||
t.table(Styles.black3, p -> p.margin(4).label(() -> hudText).style(Styles.outlineLabel)).touchable(Touchable.disabled).with(p -> p.visible(() -> {
|
||||
p.color.a = Mathf.lerpDelta(p.color.a, Mathf.num(showHudText), 0.2f);
|
||||
if(state.isMenu()){
|
||||
p.color.a = 0f;
|
||||
showHudText = false;
|
||||
}
|
||||
|
||||
return p.color.a >= 0.001f;
|
||||
}));
|
||||
});
|
||||
|
||||
//spawner warning
|
||||
@@ -342,20 +352,6 @@ public class HudFragment extends Fragment{
|
||||
t.add("@saving").style(Styles.outlineLabel);
|
||||
});
|
||||
|
||||
parent.fill(p -> {
|
||||
p.name = "hudtext";
|
||||
p.top().table(Styles.black3, t -> t.margin(4).label(() -> hudText)
|
||||
.style(Styles.outlineLabel)).padTop(10).visible(p.color.a >= 0.001f);
|
||||
p.update(() -> {
|
||||
p.color.a = Mathf.lerpDelta(p.color.a, Mathf.num(showHudText), 0.2f);
|
||||
if(state.isMenu()){
|
||||
p.color.a = 0f;
|
||||
showHudText = false;
|
||||
}
|
||||
});
|
||||
p.touchable = Touchable.disabled;
|
||||
});
|
||||
|
||||
//TODO DEBUG: rate table
|
||||
if(false)
|
||||
parent.fill(t -> {
|
||||
|
||||
@@ -451,6 +451,10 @@ public class Block extends UnlockableContent{
|
||||
|
||||
}
|
||||
|
||||
public boolean configSenseable(){
|
||||
return configurations.containsKey(Item.class) || configurations.containsKey(Liquid.class);
|
||||
}
|
||||
|
||||
public Object nextConfig(){
|
||||
if(saveConfig && lastConfig != null){
|
||||
return lastConfig;
|
||||
|
||||
@@ -119,11 +119,11 @@ public class Tile implements Position, QuadTreeObject, Displayable{
|
||||
float result = 0f;
|
||||
|
||||
if(block.hasItems){
|
||||
result += build.items.sum((item, amount) -> item.flammability * amount) / block.itemCapacity * Mathf.clamp(block.itemCapacity / 2.4f, 1f, 3f);
|
||||
result += build.items.sum((item, amount) -> item.flammability * amount) / Math.max(block.itemCapacity, 1) * Mathf.clamp(block.itemCapacity / 2.4f, 1f, 3f);
|
||||
}
|
||||
|
||||
if(block.hasLiquids){
|
||||
result += build.liquids.sum((liquid, amount) -> liquid.flammability * amount / 1.6f) / block.liquidCapacity * Mathf.clamp(block.liquidCapacity / 30f, 1f, 2f);
|
||||
result += build.liquids.sum((liquid, amount) -> liquid.flammability * amount / 1.6f) / Math.max(block.liquidCapacity, 1) * Mathf.clamp(block.liquidCapacity / 30f, 1f, 2f);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ForceProjector extends Block{
|
||||
hasItems = true;
|
||||
ambientSound = Sounds.shield;
|
||||
ambientSoundVolume = 0.08f;
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.1f)).boost().update(false);
|
||||
consumes.add(new ConsumeCoolant(0.1f)).boost().update(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,7 +37,7 @@ public class BaseTurret extends Block{
|
||||
public void init(){
|
||||
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
||||
hasLiquids = true;
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.2f)).update(false).boost();
|
||||
consumes.add(new ConsumeCoolant(0.2f)).update(false).boost();
|
||||
}
|
||||
|
||||
super.init();
|
||||
|
||||
@@ -19,7 +19,7 @@ public class LaserTurret extends PowerTurret{
|
||||
super(name);
|
||||
canOverdrive = false;
|
||||
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.01f)).update(false);
|
||||
consumes.add(new ConsumeCoolant(0.01f)).update(false);
|
||||
coolantMultiplier = 1f;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ public class LiquidTurret extends Turret{
|
||||
hasLiquids = true;
|
||||
loopSound = Sounds.spray;
|
||||
shootSound = Sounds.none;
|
||||
smokeEffect = Fx.none;
|
||||
shootEffect = Fx.none;
|
||||
outlinedIcon = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ public class Turret extends ReloadTurret{
|
||||
public void init(){
|
||||
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
||||
hasLiquids = true;
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUsage)).update(false).boost();
|
||||
consumes.add(new ConsumeCoolant(coolantUsage)).update(false).boost();
|
||||
}
|
||||
|
||||
if(shootLength < 0) shootLength = size * tilesize / 2f;
|
||||
|
||||
@@ -147,7 +147,7 @@ public class Duct extends Block implements Autotiler{
|
||||
@Override
|
||||
public boolean acceptItem(Building source, Item item){
|
||||
return current == null && items.total() == 0 &&
|
||||
(source.block instanceof Duct || Edges.getFacingEdge(source.tile(), tile).relativeTo(tile) == rotation);
|
||||
((source.block.rotate && source.front() == this && source.block.hasItems) || Edges.getFacingEdge(source.tile(), tile).relativeTo(tile) == rotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.world.blocks.distribution;
|
||||
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
@@ -16,8 +17,10 @@ import mindustry.world.meta.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
//TODO display range
|
||||
public class DuctBridge extends Block{
|
||||
private static BuildPlan otherReq;
|
||||
private int otherDst = 0;
|
||||
|
||||
public @Load("@-bridge") TextureRegion bridgeRegion;
|
||||
public @Load("@-bridge-bottom") TextureRegion bridgeBotRegion;
|
||||
//public @Load("@-bridge-top") TextureRegion bridgeTopRegion;
|
||||
@@ -46,6 +49,26 @@ public class DuctBridge extends Block{
|
||||
Draw.rect(dirRegion, req.drawx(), req.drawy(), req.rotation * 90);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
|
||||
otherReq = null;
|
||||
otherDst = range;
|
||||
Point2 d = Geometry.d4(req.rotation);
|
||||
list.each(other -> {
|
||||
if(other.block == this && req != other && Mathf.clamp(other.x - req.x, -1, 1) == d.x && Mathf.clamp(other.y - req.y, -1, 1) == d.y){
|
||||
int dst = Math.max(Math.abs(other.x - req.x), Math.abs(other.y - req.y));
|
||||
if(dst <= otherDst){
|
||||
otherReq = other;
|
||||
otherDst = dst;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(otherReq != null){
|
||||
drawBridge(req.rotation, req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(){
|
||||
return new TextureRegion[]{region, dirRegion};
|
||||
@@ -56,16 +79,14 @@ public class DuctBridge extends Block{
|
||||
Placement.calculateNodes(points, this, rotation, (point, other) -> Math.max(Math.abs(point.x - other.x), Math.abs(point.y - other.y)) <= range);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPlace(int x, int y, int rotation, boolean valid){
|
||||
super.drawPlace(x, y, rotation, valid);
|
||||
|
||||
public void drawPlace(int x, int y, int rotation, boolean valid, boolean line){
|
||||
int length = range;
|
||||
Building found = null;
|
||||
int dx = Geometry.d4x(rotation), dy = Geometry.d4y(rotation);
|
||||
|
||||
//find the link
|
||||
for(int i = 1; i <= range; i++){
|
||||
Tile other = world.tile(x + Geometry.d4x(rotation) * i, y + Geometry.d4y(rotation) * i);
|
||||
Tile other = world.tile(x + dx * i, y + dy * i);
|
||||
|
||||
if(other != null && other.build instanceof DuctBridgeBuild build && build.team == player.team()){
|
||||
length = i;
|
||||
@@ -74,17 +95,50 @@ public class DuctBridge extends Block{
|
||||
}
|
||||
}
|
||||
|
||||
Drawf.dashLine(Pal.placing,
|
||||
x * tilesize + Geometry.d4[rotation].x * (tilesize / 2f + 2),
|
||||
y * tilesize + Geometry.d4[rotation].y * (tilesize / 2f + 2),
|
||||
x * tilesize + Geometry.d4[rotation].x * (length) * tilesize,
|
||||
y * tilesize + Geometry.d4[rotation].y * (length) * tilesize
|
||||
);
|
||||
|
||||
if(found != null){
|
||||
Drawf.square(found.x, found.y, found.block.size * tilesize/2f + 2.5f, 0f);
|
||||
if(line || found != null){
|
||||
Drawf.dashLine(Pal.placing,
|
||||
x * tilesize + dx * (tilesize / 2f + 2),
|
||||
y * tilesize + dy * (tilesize / 2f + 2),
|
||||
x * tilesize + dx * (length) * tilesize,
|
||||
y * tilesize + dy * (length) * tilesize
|
||||
);
|
||||
}
|
||||
|
||||
if(found != null){
|
||||
if(line){
|
||||
Drawf.square(found.x, found.y, found.block.size * tilesize/2f + 2.5f, 0f);
|
||||
}else{
|
||||
Drawf.square(found.x, found.y, 2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPlace(int x, int y, int rotation, boolean valid){
|
||||
super.drawPlace(x, y, rotation, valid);
|
||||
|
||||
drawPlace(x, y, rotation, valid, true);
|
||||
}
|
||||
|
||||
public void drawBridge(int rotation, float x1, float y1, float x2, float y2){
|
||||
Draw.alpha(Renderer.bridgeOpacity);
|
||||
float
|
||||
angle = Angles.angle(x1, y1, x2, y2),
|
||||
cx = (x1 + x2)/2f,
|
||||
cy = (y1 + y2)/2f,
|
||||
len = Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)) - size * tilesize;
|
||||
|
||||
Draw.rect(bridgeRegion, cx, cy, len, tilesize, angle);
|
||||
Draw.color(0.4f, 0.4f, 0.4f, 0.4f * Renderer.bridgeOpacity);
|
||||
Draw.rect(bridgeBotRegion, cx, cy, len, tilesize, angle);
|
||||
Draw.reset();
|
||||
Draw.alpha(Renderer.bridgeOpacity);
|
||||
|
||||
for(float i = 6f; i <= len + size * tilesize - 5f; i += 5f){
|
||||
Draw.rect(arrowRegion, x1 + Geometry.d4x(rotation) * i, y1 + Geometry.d4y(rotation) * i, angle);
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
public boolean positionsValid(int x1, int y1, int x2, int y2){
|
||||
@@ -108,24 +162,42 @@ public class DuctBridge extends Block{
|
||||
var link = findLink();
|
||||
if(link != null){
|
||||
Draw.z(Layer.power);
|
||||
Draw.alpha(Renderer.bridgeOpacity);
|
||||
float
|
||||
angle = angleTo(link),
|
||||
cx = (x + link.x)/2f,
|
||||
cy = (y + link.y)/2f,
|
||||
len = Math.max(Math.abs(x - link.x), Math.abs(y - link.y)) - size * tilesize;
|
||||
drawBridge(rotation, x, y, link.x, link.y);
|
||||
}
|
||||
}
|
||||
|
||||
Draw.rect(bridgeRegion, cx, cy, len, tilesize, angle);
|
||||
Draw.color(0.4f, 0.4f, 0.4f, 0.4f * Renderer.bridgeOpacity);
|
||||
Draw.rect(bridgeBotRegion, cx, cy, len, tilesize, angle);
|
||||
Draw.reset();
|
||||
Draw.alpha(Renderer.bridgeOpacity);
|
||||
@Override
|
||||
public void drawSelect(){
|
||||
drawPlace(tile.x, tile.y, rotation, true, false);
|
||||
//draw incoming bridges
|
||||
for(int dir = 0; dir < 4; dir++){
|
||||
if(dir != rotation){
|
||||
int dx = Geometry.d4x(dir), dy = Geometry.d4y(dir);
|
||||
int length = range;
|
||||
Building found = null;
|
||||
|
||||
for(float i = 6f; i <= len + size * tilesize - 5f; i += 5f){
|
||||
Draw.rect(arrowRegion, x + Geometry.d4x(rotation) * i, y + Geometry.d4y(rotation) * i, angle);
|
||||
//find the link
|
||||
for(int i = 1; i <= range; i++){
|
||||
Tile other = world.tile(tile.x + dx * i, tile.y + dy * i);
|
||||
|
||||
if(other != null && other.build instanceof DuctBridgeBuild build && build.team == player.team() && (build.rotation + 2) % 4 == dir){
|
||||
length = i;
|
||||
found = other.build;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(found != null){
|
||||
Drawf.dashLine(Pal.place,
|
||||
found.x - dx * (tilesize / 2f + 2),
|
||||
found.y - dy * (tilesize / 2f + 2),
|
||||
found.x - dx * (length) * tilesize,
|
||||
found.y - dy * (length) * tilesize
|
||||
);
|
||||
|
||||
Drawf.square(found.x, found.y, 2f, 45f, Pal.place);
|
||||
}
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +245,7 @@ public class DuctBridge extends Block{
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Building source, Item item){
|
||||
int rel = this.relativeTo(source);
|
||||
int rel = this.relativeToEdge(source.tile);
|
||||
return items.total() < itemCapacity && rel != rotation && occupied[(rel + 2) % 4] == null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package mindustry.world.blocks.environment;
|
||||
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
/** Class for quickly defining a floor with no water and no variants. Offers no new functionality. */
|
||||
public class MetalFloor extends Floor{
|
||||
|
||||
public MetalFloor(String name){
|
||||
super(name);
|
||||
variants = 0;
|
||||
attributes.set(Attribute.water, -1);
|
||||
}
|
||||
|
||||
public MetalFloor(String name, int variants){
|
||||
super(name);
|
||||
this.variants = variants;
|
||||
attributes.set(Attribute.water, -1);
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,11 @@ public class BlockUnloader extends BlockLoader{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rotatedOutput(int x, int y){
|
||||
return false;
|
||||
}
|
||||
|
||||
public class BlockUnloaderBuild extends BlockLoaderBuild{
|
||||
|
||||
@Override
|
||||
|
||||
@@ -66,6 +66,12 @@ public class PayloadMassDriver extends PayloadBlock{
|
||||
config(Integer.class, (PayloadDriverBuild tile, Integer point) -> tile.link = point);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
super.init();
|
||||
clipSize = Math.max(clipSize, range*2f + tilesize*size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStats(){
|
||||
super.setStats();
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package mindustry.world.blocks.power;
|
||||
|
||||
import arc.func.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.consumers.*;
|
||||
|
||||
/** A power consumer that uses a dynamic amount of power. */
|
||||
public class DynamicConsumePower extends ConsumePower{
|
||||
private final Floatf<Building> usage;
|
||||
|
||||
public DynamicConsumePower(Floatf<Building> usage){
|
||||
super(0, 0, false);
|
||||
this.usage = usage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float requestedPower(Building entity){
|
||||
return usage.get(entity);
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,8 @@ import mindustry.world.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class CommandCenter extends Block{
|
||||
public final int timerEffect = timers ++;
|
||||
|
||||
public TextureRegionDrawable[] commandRegions = new TextureRegionDrawable[UnitCommand.all.length];
|
||||
public Color topColor = null, bottomColor = Color.valueOf("5e5e5e");
|
||||
public Effect effect = Fx.commandSend;
|
||||
@@ -33,11 +35,17 @@ public class CommandCenter extends Block{
|
||||
solid = true;
|
||||
configurable = true;
|
||||
drawDisabled = false;
|
||||
logicConfigurable = true;
|
||||
|
||||
config(UnitCommand.class, (CommandBuild build, UnitCommand command) -> {
|
||||
build.team.data().command = command;
|
||||
effect.at(build, effectSize);
|
||||
Events.fire(new CommandIssueEvent(build, command));
|
||||
if(build.team.data().command != command){
|
||||
build.team.data().command = command;
|
||||
//do not spam effect
|
||||
if(build.timer(timerEffect, 60f)){
|
||||
effect.at(build, effectSize);
|
||||
}
|
||||
Events.fire(new CommandIssueEvent(build, command));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -52,6 +60,11 @@ public class CommandCenter extends Block{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean configSenseable(){
|
||||
return true;
|
||||
}
|
||||
|
||||
public class CommandBuild extends Building{
|
||||
|
||||
@Override
|
||||
|
||||
@@ -76,7 +76,7 @@ public class RepairPoint extends Block{
|
||||
public void init(){
|
||||
if(acceptCoolant){
|
||||
hasLiquids = true;
|
||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUse)).optional(true, true);
|
||||
consumes.add(new ConsumeCoolant(coolantUse)).optional(true, true);
|
||||
}
|
||||
|
||||
consumes.powerCond(powerUse, (RepairPointBuild entity) -> entity.target != null);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
/** A ConsumeLiquidFilter that consumes specific coolant, selected based on stats. */
|
||||
public class ConsumeCoolant extends ConsumeLiquidFilter{
|
||||
public float maxTemp = 0.5f, maxFlammability = 0.1f;
|
||||
|
||||
public ConsumeCoolant(float amount){
|
||||
this.filter = liquid -> liquid.temperature <= maxTemp && liquid.flammability < maxFlammability;
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
//mods
|
||||
public ConsumeCoolant(){
|
||||
this(0.1f);
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,14 @@ import mindustry.gen.*;
|
||||
|
||||
public abstract class ConsumeLiquidBase extends Consume{
|
||||
/** amount used per frame */
|
||||
public final float amount;
|
||||
public float amount;
|
||||
|
||||
public ConsumeLiquidBase(float amount){
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
public ConsumeLiquidBase(){}
|
||||
|
||||
@Override
|
||||
public ConsumeType type(){
|
||||
return ConsumeType.liquid;
|
||||
|
||||
@@ -11,13 +11,17 @@ import mindustry.world.meta.*;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||
public final Boolf<Liquid> filter;
|
||||
public Boolf<Liquid> filter;
|
||||
|
||||
public ConsumeLiquidFilter(Boolf<Liquid> liquid, float amount){
|
||||
super(amount);
|
||||
this.filter = liquid;
|
||||
}
|
||||
|
||||
public ConsumeLiquidFilter(){
|
||||
this.filter = l -> false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyLiquidFilter(Bits arr){
|
||||
content.liquids().each(filter, item -> arr.set(item.id));
|
||||
|
||||
@@ -68,6 +68,11 @@ public class Consumers{
|
||||
return add(new ConditionalConsumePower(usage, (Boolf<Building>)cons));
|
||||
}
|
||||
|
||||
/** Creates a consumer that consumes a dynamic amount of power. */
|
||||
public <T extends Building> ConsumePower powerDynamic(Floatf<T> usage){
|
||||
return add(new DynamicConsumePower((Floatf<Building>)usage));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a consumer which stores power.
|
||||
* @param powerCapacity The maximum capacity in power units.
|
||||
|
||||
@@ -8,10 +8,12 @@ import arc.scene.ui.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.entities.bullet.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.maps.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
@@ -117,6 +119,51 @@ public class StatValues{
|
||||
);
|
||||
}
|
||||
|
||||
public static StatValue floors(Attribute attr, boolean floating, float scale, boolean startZero){
|
||||
return table -> table.table(c -> {
|
||||
Runnable[] rebuild = {null};
|
||||
Map[] lastMap = {null};
|
||||
|
||||
rebuild[0] = () -> {
|
||||
c.clearChildren();
|
||||
c.left();
|
||||
|
||||
if(state.isGame()){
|
||||
var blocks = Vars.content.blocks()
|
||||
.select(block -> block instanceof Floor f && indexer.isBlockPresent(block) && f.attributes.get(attr) != 0 && !(f.isLiquid && !floating))
|
||||
.<Floor>as().with(s -> s.sort(f -> f.attributes.get(attr)));
|
||||
|
||||
if(blocks.any()){
|
||||
int i = 0;
|
||||
for(var block : blocks){
|
||||
|
||||
floorEfficiency(block, block.attributes.get(attr) * scale, startZero).display(c);
|
||||
if(++i % 5 == 0){
|
||||
c.row();
|
||||
}
|
||||
}
|
||||
}else{
|
||||
c.add("@none.found");
|
||||
}
|
||||
}else{
|
||||
c.add("@stat.showinmap");
|
||||
}
|
||||
};
|
||||
|
||||
rebuild[0].run();
|
||||
|
||||
//rebuild when map changes.
|
||||
c.update(() -> {
|
||||
Map current = state.isGame() ? state.map : null;
|
||||
|
||||
if(current != lastMap[0]){
|
||||
rebuild[0].run();
|
||||
lastMap[0] = current;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public static StatValue blocks(Boolf<Block> pred){
|
||||
return blocks(content.blocks().select(pred));
|
||||
}
|
||||
@@ -246,7 +293,7 @@ public class StatValues{
|
||||
sep(bt, Core.bundle.format("bullet.splashdamage", (int)type.splashDamage, Strings.fixed(type.splashDamageRadius / tilesize, 1)));
|
||||
}
|
||||
|
||||
if(!unit && !Mathf.equal(type.ammoMultiplier, 1f)){
|
||||
if(!unit && !Mathf.equal(type.ammoMultiplier, 1f) && type.displayAmmoMultiplier){
|
||||
sep(bt, Core.bundle.format("bullet.multiplier", (int)type.ammoMultiplier));
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,7 @@ package mindustry.world.meta;
|
||||
import arc.struct.ObjectMap.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.blocks.environment.*;
|
||||
|
||||
/** Hold and organizes a list of block stats. */
|
||||
public class Stats{
|
||||
@@ -68,11 +66,7 @@ public class Stats{
|
||||
}
|
||||
|
||||
public void add(Stat stat, Attribute attr, boolean floating, float scale, boolean startZero){
|
||||
for(var block : Vars.content.blocks()
|
||||
.select(block -> block instanceof Floor f && f.attributes.get(attr) != 0 && !(f.isLiquid && !floating))
|
||||
.<Floor>as().with(s -> s.sort(f -> f.attributes.get(attr)))){
|
||||
add(stat, StatValues.floorEfficiency(block, block.attributes.get(attr) * scale, startZero));
|
||||
}
|
||||
add(stat, StatValues.floors(attr, floating, scale, startZero));
|
||||
}
|
||||
|
||||
/** Adds a single string value with this stat. */
|
||||
|
||||
Reference in New Issue
Block a user