Compare commits

..

13 Commits
v155 ... v155.1

Author SHA1 Message Date
EggleEgg
43a913fa78 Remove shooteffect when missile unit dies without target (#11644) 2026-02-10 10:53:28 -05:00
Anuken
dd4b07b2a2 Fixed #11647 2026-02-10 10:47:57 -05:00
Anuken
b587253ac0 Potential bright screen fix (in arc) 2026-02-09 23:37:34 -05:00
Anuken
d4cda24fb8 Removed borderless fullscreen option (window should always be borderless fullscreen anyway) 2026-02-09 20:39:24 -05:00
Anuken
51a2588c4e Fixed #11646 2026-02-09 20:25:02 -05:00
Anuken
de3c2430c0 Fixed #11645 2026-02-09 20:08:29 -05:00
Anuken
4073ffbbb6 Fixed keyboard focus remaining on cancel button after loading hides 2026-02-09 19:51:12 -05:00
Anuken
a55e0a3d53 Merge remote-tracking branch 'origin/master' 2026-02-09 13:36:08 -05:00
Anuken
d90c830b27 Fixed #11636 2026-02-09 13:36:01 -05:00
Kevin Vilyan
e53047854f Update Bundle ID (#11557)
* Update Bundle ID

* Add files via upload

* Fungal Pass & Frontier Tutorials

* Fix Unicode

* Fix tutorial text for ground factory placement

* data patch hint

* Update Indonesian translations for properties

Updated translations for coastline and max units.

* Fixed word buat -> produksi

* still found inconsistency

* node

* zone

* spotted inconsistency

* SAKELAR URAGH

* translate latest changes from erekir balance
2026-02-09 13:21:43 -05:00
MCxzfwq
cfabcaa871 Some minor modifications (#11575)
* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* Update ForceProjector.java
2026-02-09 13:16:13 -05:00
Cardillan
b3c8a8ec4f Fix draw image bug with tiled displays. (#11638) 2026-02-09 13:14:42 -05:00
EggleEgg
78e2b1d3be Bugfix: fortress real range too small (#11640)
* dont thread the needle

* even less
2026-02-09 13:12:13 -05:00
22 changed files with 294 additions and 211 deletions

View File

@@ -54,25 +54,25 @@ mods.github.open-release = Laman Rilis
mods.browser.sortdate = Urut berdasarkan waktu mods.browser.sortdate = Urut berdasarkan waktu
mods.browser.sortstars = Urut berdasarkan bintang mods.browser.sortstars = Urut berdasarkan bintang
schematic = Skema schematic = Skematik
schematic.add = Menyimpan skema... schematic.add = Menyimpan skematik...
schematics = Kumpulan skema schematics = Kumpulan skematik
schematic.search = Cari skema... schematic.search = Cari skematik...
schematic.replace = Skema dengan nama tersebut telah ada. Ganti dengan yang baru? schematic.replace = Skematik dengan nama tersebut telah ada. Ganti dengan yang baru?
schematic.exists = Skema dengan nama tersebut telah ada. schematic.exists = Skematik dengan nama tersebut telah ada.
schematic.import = Mengimpor skema... schematic.import = Mengimpor skematik...
schematic.exportfile = Ekspor Berkas schematic.exportfile = Ekspor Berkas
schematic.importfile = Impor Berkas schematic.importfile = Impor Berkas
schematic.browseworkshop = Cari di Workshop schematic.browseworkshop = Cari di Workshop
schematic.copy = Salin ke papan klip schematic.copy = Salin ke papan klip
schematic.copy.import = Impor dari papan klip schematic.copy.import = Impor dari papan klip
schematic.shareworkshop = Bagikan di Workshop schematic.shareworkshop = Bagikan di Workshop
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Balik Skema schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Balik Skematik
schematic.saved = Skema telah disimpan. schematic.saved = Skematik telah disimpan.
schematic.delete.confirm = Skema ini akan benar-benar dihapus. schematic.delete.confirm = Skematik ini akan benar-benar dihapus.
schematic.edit = Sunting Skema schematic.edit = Sunting Skematik
schematic.info = {0}x{1}, {2} blok schematic.info = {0}x{1}, {2} blok
schematic.disabled = [scarlet]Skema dimatikan[]\nPenggunaan skema tidak diperbolehkan di [accent]peta[] atau [accent]server[] ini. schematic.disabled = [scarlet]Skematik dinonaktifkan[]\nPenggunaan skematik tidak diperbolehkan di [accent]peta[] atau [accent]server[] ini.
schematic.tags = Tanda: schematic.tags = Tanda:
schematic.edittags = Ubah Tanda schematic.edittags = Ubah Tanda
schematic.addtag = Tambah Tanda schematic.addtag = Tambah Tanda
@@ -98,10 +98,10 @@ level.highscore = Nilai Tertinggi: [accent]{0}
level.select = Pilih Level level.select = Pilih Level
level.mode = Mode Permainan: level.mode = Mode Permainan:
coreattack = < Inti sedang diserang! > coreattack = < Inti sedang diserang! >
nearpoint = [[ [scarlet]TINGGALKAN TITIK PENDARATAN SEGERA[] ]\npemusnahan akan terjadi nearpoint = [[ [scarlet]TINGGALKAN ZONA PENDARATAN SEGERA[] ]\npemusnahan akan terjadi
database = Basis Data Inti database = Basis Data Inti
database.button = Basis Data database.button = Basis Data
database.patched = Modified by data patches. database.patched = Dimodifikasi dengan patch data.
viewfields = Lihat Bidang Konten viewfields = Lihat Bidang Konten
savegame = Simpan Permainan savegame = Simpan Permainan
loadgame = Muat Permainan loadgame = Muat Permainan
@@ -164,7 +164,7 @@ mod.requiresversion.details = Memerlukan versi game: [accent]{0}[]\nGame Anda te
mod.incompatiblemod.details = Mod ini tidak kompatibel dengan versi game ini. Pencipta harus memperbaruinya dengan menambahkan string [accent]minGameVersion: 154[] ke dalam file [accent]mod.json[]. mod.incompatiblemod.details = Mod ini tidak kompatibel dengan versi game ini. Pencipta harus memperbaruinya dengan menambahkan string [accent]minGameVersion: 154[] ke dalam file [accent]mod.json[].
mod.blacklisted.details = Mod ini terdapat di dalam blacklist karena menyebabkan crash atau masalah lain dengan versi game saat ini. Mohon jangan dipakai. mod.blacklisted.details = Mod ini terdapat di dalam blacklist karena menyebabkan crash atau masalah lain dengan versi game saat ini. Mohon jangan dipakai.
mod.missingdependencies.details = Mod ini kekurangan dependensi: {0} mod.missingdependencies.details = Mod ini kekurangan dependensi: {0}
mod.erroredcontent.details = Mod ini menimbulkan masalah pada saat proses memuat. Tanyakan pembuat mod untuk memperbaikinya. mod.erroredcontent.details = Mod ini menimbulkan masalah pada saat proses memuat. Tanyakan pencipta mod untuk memperbaikinya.
mod.circulardependencies.details = Mod ini memiliki dependensi yang memerlukan satu sama lain. mod.circulardependencies.details = Mod ini memiliki dependensi yang memerlukan satu sama lain.
mod.incompletedependencies.details = Mod ini gagal memuat karena kekurangan dependensi atau tidak valid: {0}. mod.incompletedependencies.details = Mod ini gagal memuat karena kekurangan dependensi atau tidak valid: {0}.
@@ -245,7 +245,7 @@ server.kicked.customClient = Server ini tidak mendukung build kostum. Unduh vers
server.kicked.gameover = Permainan telah berakhir! server.kicked.gameover = Permainan telah berakhir!
server.kicked.serverRestarting = Server sedang dimulai ulang. server.kicked.serverRestarting = Server sedang dimulai ulang.
server.versions = Versi Anda:[accent] {0}[]\nVersi server:[accent] {1}[] server.versions = Versi Anda:[accent] {0}[]\nVersi server:[accent] {1}[]
host.info = Tombol [accent]host[] akan membuat server sementara di port [scarlet]6567[]. \nSemua orang di dalam [lightgray]Wi-Fi atau jaringan lokal[] yang sama dapat melihat server Anda di daftar server mereka.\n\nJika Anda ingin pemain dari mana saja memasuki server Anda dengan IP, [accent]port forwarding[] sangat diperlukan.\n\n[lightgray]Catatan: Jika seseorang mengalami masalah memasuki permainan lokal Anda, pastikan Mindustry memiliki akses ke jaringan lokal di pengaturan firewall Anda. Perlu diingat jaringan publik terkadang tidak mengizinkan pencarian server. host.info = Tombol [accent]host[] akan membuat server sementara di port [scarlet]6567[].\nSemua orang di dalam [lightgray]Wi-Fi atau jaringan lokal[] yang sama dapat melihat server Anda di daftar server mereka.\n\nJika Anda ingin pemain dari mana saja memasuki server Anda dengan IP, [accent]port forwarding[] sangat diperlukan.\n\n[lightgray]Catatan: Jika seseorang mengalami masalah memasuki permainan lokal Anda, pastikan Mindustry memiliki akses ke jaringan lokal di pengaturan firewall Anda. Perlu diingat jaringan publik terkadang tidak mengizinkan pencarian server.
join.info = Di sini, Anda bisa memasukkan [accent]IP server[] untuk dihubungkan, serta mencari [accent]jaringan lokal[] atau server [accent]global[] untuk dihubungkan.\nLAN dan WAN mendukung multipemain.\n\n[lightgray]Jika Anda ingin bergabung dengan seseorang melalui IP, Anda perlu menanyakan host tentang IP mereka, yang dapat dicari dengan meng-google "my ip" melalui perangkat mereka. join.info = Di sini, Anda bisa memasukkan [accent]IP server[] untuk dihubungkan, serta mencari [accent]jaringan lokal[] atau server [accent]global[] untuk dihubungkan.\nLAN dan WAN mendukung multipemain.\n\n[lightgray]Jika Anda ingin bergabung dengan seseorang melalui IP, Anda perlu menanyakan host tentang IP mereka, yang dapat dicari dengan meng-google "my ip" melalui perangkat mereka.
hostserver = Host Permainan Multi Pemain hostserver = Host Permainan Multi Pemain
invitefriends = Undang Teman invitefriends = Undang Teman
@@ -506,10 +506,10 @@ waves.health = nyawa: {0}%
waves.perspawn = per muncul waves.perspawn = per muncul
waves.shields = perisai/gelombang waves.shields = perisai/gelombang
waves.to = sampai waves.to = sampai
waves.spawn = Titik Pendaratan: waves.spawn = Zona Pendaratan:
waves.spawn.all = <semua> waves.spawn.all = <semua>
waves.spawn.select = Pilih Tempat Pendaratan Musuh waves.spawn.select = Pilih Zona Pendaratan Musuh
waves.spawn.none = [scarlet]tidak ada tempat pendaratan musuh di peta waves.spawn.none = [scarlet]tidak ada zona pendaratan musuh di peta
waves.max = unit maks waves.max = unit maks
waves.guardian = Penjaga waves.guardian = Penjaga
waves.preview = Pratinjau waves.preview = Pratinjau
@@ -746,7 +746,7 @@ objective.destroyblocks = [accent]Hancurkan: [lightgray]{0}[white]/{1}\n{2}[ligh
objective.item = [accent]Peroleh: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.item = [accent]Peroleh: [][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
objective.coreitem = [accent]Pindahkan ke Inti:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.coreitem = [accent]Pindahkan ke Inti:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3}
objective.build = [accent]Bangun: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.build = [accent]Bangun: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.buildunit = [accent]Buat Unit: [][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]Produksi Unit: [][lightgray]{0}[]x\n{1}[lightgray]{2}
objective.destroyunits = [accent]Hancurkan: [][lightgray]{0}[]x Units objective.destroyunits = [accent]Hancurkan: [][lightgray]{0}[]x Units
objective.enemiesapproaching = [accent]Musuh akan datang dalam [lightgray]{0}[] objective.enemiesapproaching = [accent]Musuh akan datang dalam [lightgray]{0}[]
objective.enemyescelating = [accent]Produksi musuh meningkat dalam [lightgray]{0}[] objective.enemyescelating = [accent]Produksi musuh meningkat dalam [lightgray]{0}[]
@@ -812,7 +812,7 @@ sectors.wave = Gelombang:
sectors.stored = Terisi: sectors.stored = Terisi:
sectors.resume = Lanjutkan sectors.resume = Lanjutkan
sectors.launch = Luncurkan sectors.launch = Luncurkan
sectors.nolaunchcandidate = No Launch Sector sectors.nolaunchcandidate = Tidak Ada Sektor Peluncuran
sectors.viewsubmission = \ue80d Lihat Kiriman sectors.viewsubmission = \ue80d Lihat Kiriman
sectors.select = Pilih sectors.select = Pilih
sectors.launchselect = Pilih Destinasi Peluncuran sectors.launchselect = Pilih Destinasi Peluncuran
@@ -881,14 +881,14 @@ sector.facility32m.name = Fasilitas 32 M
sector.taintedWoods.name = Hutan Tercemar sector.taintedWoods.name = Hutan Tercemar
sector.infestedCanyons.name = Ngarai Terinfestasi sector.infestedCanyons.name = Ngarai Terinfestasi
sector.planetaryTerminal.name = Pusat Peluncuran Planet sector.planetaryTerminal.name = Pusat Peluncuran Planet
sector.coastline.name = Tepi Pantai sector.coastline.name = Tepi Pantai Lembab
sector.navalFortress.name = Benteng Laut sector.navalFortress.name = Benteng Laut
sector.polarAerodrome.name = Pangkalan Kutub sector.polarAerodrome.name = Pangkalan Kutub
sector.atolls.name = Atol sector.atolls.name = Atol
sector.testingGrounds.name = Kawasan Uji Coba sector.testingGrounds.name = Kawasan Uji Coba
sector.perilousHarbor.name = Perilous Harbor sector.perilousHarbor.name = Pelabuhan Berbahaya
sector.weatheredChannels.name = Selat Terkikis sector.weatheredChannels.name = Selat Terkikis
sector.fallenVessel.name = Fallen Vessel sector.fallenVessel.name = Bangkai Kapal
sector.mycelialBastion.name = Benteng Pertahanan Miselium sector.mycelialBastion.name = Benteng Pertahanan Miselium
sector.frontier.name = Perbatasan sector.frontier.name = Perbatasan
sector.sunkenPier.name = Dermaga Karam sector.sunkenPier.name = Dermaga Karam
@@ -901,9 +901,9 @@ sector.saltFlats.description = Di pinggiran padang pasir terdapat Daratan Garam.
sector.craters.description = Air banyak terkumpul di kawah ini, sebuah peninggalan dari perang masa lalu. Klaim area ini lagi. Kumpulkan pasir. Lebur metaglass. Pompa air untuk mendinginkan turret dan bor. sector.craters.description = Air banyak terkumpul di kawah ini, sebuah peninggalan dari perang masa lalu. Klaim area ini lagi. Kumpulkan pasir. Lebur metaglass. Pompa air untuk mendinginkan turret dan bor.
sector.ruinousShores.description = Keluar dari lembah gunung, terdapat garis pantai. Sebelumnya, area ini adalah garis pertahanan pantai. Sekarang tidak banyak yang tersisa. Hanya pertahanan dasar yang tersisa, yang lain telah hancur berkeping keping.\nBangun kembali pertahanan di sini. Pelajari lebih banyak teknologi. sector.ruinousShores.description = Keluar dari lembah gunung, terdapat garis pantai. Sebelumnya, area ini adalah garis pertahanan pantai. Sekarang tidak banyak yang tersisa. Hanya pertahanan dasar yang tersisa, yang lain telah hancur berkeping keping.\nBangun kembali pertahanan di sini. Pelajari lebih banyak teknologi.
sector.stainedMountains.description = Area ini terletak di dekat pegunungan, namun belum tersentuh oleh spora.\nTambang titanium yang ada di area ini. Pelajari fungsinya.\n\nMusuh jauh lebih kuat di sini. Jangan biarkan mereka meluncurkan unit yang lebih kuat. sector.stainedMountains.description = Area ini terletak di dekat pegunungan, namun belum tersentuh oleh spora.\nTambang titanium yang ada di area ini. Pelajari fungsinya.\n\nMusuh jauh lebih kuat di sini. Jangan biarkan mereka meluncurkan unit yang lebih kuat.
sector.overgrowth.description = Area ini banyak ditumbuhi spora, karena dekat dengan sumber spora.\nMusuh telah membangun pangkalan di sini. Buat unit Mace. Hancurkan mereka. Klaim apapun yang tersisa. sector.overgrowth.description = Area ini banyak ditumbuhi spora, karena dekat dengan sumber spora.\nMusuh telah membangun pangkalan di sini. Produksi unit Mace. Hancurkan mereka. Klaim apapun yang tersisa.
sector.tarFields.description = Terletak di pinggiran zona produksi minyak, di antara gunung dan padang pasir. Salah satu dari beberapa area yang memiliki cadangan minyak yang dapat digunakan.\nMeskipun ditinggalkan, area ini terdapat pasukan musuh yang berbahaya di sekitarnya. Jangan meremehkan mereka.\n\n[lightgray]Pelajari proses penyulingan minyak bila memungkinkan. sector.tarFields.description = Terletak di pinggiran zona produksi minyak, di antara gunung dan padang pasir. Salah satu dari beberapa area yang memiliki cadangan minyak yang dapat digunakan.\nMeskipun ditinggalkan, area ini terdapat pasukan musuh yang berbahaya di sekitarnya. Jangan meremehkan mereka.\n\n[lightgray]Pelajari proses penyulingan minyak bila memungkinkan.
sector.desolateRift.description = Zona yang sangat berbahaya. Banyak sumber daya, tetapi terdapat sedikit ruang. Sangat resiko kehancuran sangat tinggi. Buatlah pertahanan udara dan darat secepat yang Anda bisa. Jangan terlena dengan waktu antar gelombang yang lama. sector.desolateRift.description = Zona yang sangat berbahaya. Banyak sumber daya, tetapi terdapat sedikit ruang. Sangat resiko kehancuran sangat tinggi. Bangunlah pertahanan udara dan darat secepat yang Anda bisa. Jangan terlena dengan waktu antar gelombang yang lama.
sector.nuclearComplex.description = Sebuah fasilitas untuk memproduksi dan memproses torium, yang telah hancur.\n[lightgray]Pelajari torium dan cara penggunaanya.\n\nMusuh yang hadir di sini menyerang dalam jumlah besar, tak henti mengintai penyerang. sector.nuclearComplex.description = Sebuah fasilitas untuk memproduksi dan memproses torium, yang telah hancur.\n[lightgray]Pelajari torium dan cara penggunaanya.\n\nMusuh yang hadir di sini menyerang dalam jumlah besar, tak henti mengintai penyerang.
sector.fungalPass.description = Area ini terdapat di antara pegunungan yang lebih tinggi dengan yang lebih rendah, juga daerah yang dipenuhi spora. Musuh membangun markas pengintaian kecil di sini.\nHancurkan itu.\nGunakan unit Dagger. Hancurkan inti mereka. sector.fungalPass.description = Area ini terdapat di antara pegunungan yang lebih tinggi dengan yang lebih rendah, juga daerah yang dipenuhi spora. Musuh membangun markas pengintaian kecil di sini.\nHancurkan itu.\nGunakan unit Dagger. Hancurkan inti mereka.
sector.biomassFacility.description = Asal dari semua spora di planet ini. Tempat ini adalah fasilitas dimana spora dipelajari dan diproduksi.\nPelajari teknologi yang terkait dengannya. Budi dayakan spora untuk memproduksi bahan bakar dan plastik.\n\n[lightgray]Setelah fasilitas ini hancur, spora menyebar. Tidak ada di ekosistem lokal yang dapat bersaing dengan organisme invasif seperti itu. sector.biomassFacility.description = Asal dari semua spora di planet ini. Tempat ini adalah fasilitas dimana spora dipelajari dan diproduksi.\nPelajari teknologi yang terkait dengannya. Budi dayakan spora untuk memproduksi bahan bakar dan plastik.\n\n[lightgray]Setelah fasilitas ini hancur, spora menyebar. Tidak ada di ekosistem lokal yang dapat bersaing dengan organisme invasif seperti itu.
@@ -911,8 +911,8 @@ sector.windsweptIslands.description = Jauh dari pantai terdapat sekumpulan pulau
sector.extractionOutpost.description = Sebuah pos jarak jauh, dibangun musuh untuk meluncurkan sumber daya ke sektor yang lain.\n\nTeknologi transportasi antar sektor dapat memudahkan untuk menguasai lebih banyak sektor. Hancurkan markasnya. Pelajari Alas Peluncur mereka. sector.extractionOutpost.description = Sebuah pos jarak jauh, dibangun musuh untuk meluncurkan sumber daya ke sektor yang lain.\n\nTeknologi transportasi antar sektor dapat memudahkan untuk menguasai lebih banyak sektor. Hancurkan markasnya. Pelajari Alas Peluncur mereka.
sector.impact0078.description = Di sini terletak sisa-sisa pesawat antarbintang yang pertama kali memasuki sistem ini.\n\nSelamatkan apapun yang ada dari sisa-sisa pesawat. Pelajari teknologi apa pun yang utuh. sector.impact0078.description = Di sini terletak sisa-sisa pesawat antarbintang yang pertama kali memasuki sistem ini.\n\nSelamatkan apapun yang ada dari sisa-sisa pesawat. Pelajari teknologi apa pun yang utuh.
sector.planetaryTerminal.description = Target terakhir.\n\nMarkas pesisir pantai ini memiliki struktur yang dapat meluncurkan inti ke planet di sekitarnya. Memiliki pertahanan yang sangat bagus.\n\nProduksi unit laut. Hancurkan musuh secepat mungkin. Pelajari struktur peluncuran mereka. sector.planetaryTerminal.description = Target terakhir.\n\nMarkas pesisir pantai ini memiliki struktur yang dapat meluncurkan inti ke planet di sekitarnya. Memiliki pertahanan yang sangat bagus.\n\nProduksi unit laut. Hancurkan musuh secepat mungkin. Pelajari struktur peluncuran mereka.
sector.coastline.description = Sisa-sisa teknologi Unit Laut telah terdeteksi di lokasi ini. Tolak serangan musuh, rebut sektor ini, dan dapatkan teknologinya. sector.coastline.description = Sisa-sisa teknologi unit laut telah terdeteksi di lokasi ini. Tolak serangan musuh, rebut sektor ini, dan dapatkan teknologinya.
sector.navalFortress.description = Musuh telah mendirikan markas di sebuah pulau terpencil, dibentengi secara alami. Hancurkan pangkalan ini. Dapatkan teknologi Unit Laut mereka yang canggih, dan telitilah sector.navalFortress.description = Musuh telah mendirikan markas di sebuah pulau terpencil, dibentengi secara alami. Hancurkan pangkalan ini. Dapatkan teknologi unit laut mereka yang canggih, dan telitilah.
sector.onset.name = Serangan Awal sector.onset.name = Serangan Awal
sector.aegis.name = Aegis sector.aegis.name = Aegis
@@ -943,9 +943,9 @@ sector.marsh.description = Sektor ini memiliki kelimpahan arkisit, namun memilik
sector.peaks.description = Medan pegunungan di sektor ini membuat sebagian besar unit tidak berguna. Unit terbang akan diperlukan.\nWaspadai instalasi anti-udara yang dimiliki musuh. Beberapa instalasi ini mungkin dapat dinonaktifkan dengan menargetkan bangunan pendukungnya terlebih dahulu. sector.peaks.description = Medan pegunungan di sektor ini membuat sebagian besar unit tidak berguna. Unit terbang akan diperlukan.\nWaspadai instalasi anti-udara yang dimiliki musuh. Beberapa instalasi ini mungkin dapat dinonaktifkan dengan menargetkan bangunan pendukungnya terlebih dahulu.
sector.ravine.description = Jalur transportasi penting bagi musuh. Tidak ada inti musuh yang ditemukan di sini, namun hati-hati terhadap berbagai jenis musuh.\nProduksi [accent]paduan logam[]. Bangun menara [accent]Afflict[]. sector.ravine.description = Jalur transportasi penting bagi musuh. Tidak ada inti musuh yang ditemukan di sini, namun hati-hati terhadap berbagai jenis musuh.\nProduksi [accent]paduan logam[]. Bangun menara [accent]Afflict[].
sector.caldera-erekir.description = Sumber daya yang terdeteksi di sektor ini tersebar di beberapa pulau.\nRiset dan sebarkan transportasi berbasis drone. sector.caldera-erekir.description = Sumber daya yang terdeteksi di sektor ini tersebar di beberapa pulau.\nRiset dan sebarkan transportasi berbasis drone.
sector.stronghold.description = Markas musuh yang besar di sektor ini menjaga simpanan [accent]torium[] dalam jumlah besar .\nGunakan itu untuk mengembangkan unit dan menara ke tingkat yang lebih tinggi. sector.stronghold.description = Markas musuh yang besar di sektor ini menjaga simpanan [accent]torium[] dalam jumlah besar.\nGunakan itu untuk mengembangkan unit dan menara ke tingkat yang lebih tinggi.
sector.crevice.description = Musuh akan mengirimkan pasukan serangan yang hebat untuk menghancurkan markasmu di sektor ini.\nKembangkan [accent]karbida[] dan [accent]Generator Pirolisis[] mungkin imperatif untuk bertahan hidup. sector.crevice.description = Musuh akan mengirimkan pasukan serangan yang hebat untuk menghancurkan markasmu di sektor ini.\nKembangkan [accent]karbida[] dan [accent]Generator Pirolisis[] mungkin imperatif untuk bertahan hidup.
sector.siege.description = Sektor ini memiliki dua ngarai paralel yang akan memaksa serangan dari dua arah.\nRiset [accent]sianogen[] untuk mendapatkan kemampuan untuk membuat unit tank yang lebih kuat.\nPeringatan: Rudal jarak jauh milik musuh telah terdeteksi. Rudal tersebut mungkin ditembak jatuh sebelum terjadi benturan. sector.siege.description = Sektor ini memiliki dua ngarai paralel yang akan memaksa serangan dari dua arah.\nRiset [accent]sianogen[] untuk mendapatkan kemampuan untuk memproduksi unit tank yang lebih kuat.\nPeringatan: Rudal jarak jauh milik musuh telah terdeteksi. Rudal tersebut mungkin ditembak jatuh sebelum terjadi benturan.
sector.crossroads.description = Pangkalan musuh di sektor ini telah didirikan di berbagai medan. Riset unit yang berbeda untuk beradaptasi.\nSelain itu, beberapa markas telah dilindungi oleh perisai. Cari tahu bagaimana mereka diberi daya. sector.crossroads.description = Pangkalan musuh di sektor ini telah didirikan di berbagai medan. Riset unit yang berbeda untuk beradaptasi.\nSelain itu, beberapa markas telah dilindungi oleh perisai. Cari tahu bagaimana mereka diberi daya.
sector.karst.description = Sektor ini kaya akan sumber daya, namun akan diserang oleh musuh begitu inti baru mendarat.\nManfaatkan sumber daya dan riset [accent]fabrik phase[]. sector.karst.description = Sektor ini kaya akan sumber daya, namun akan diserang oleh musuh begitu inti baru mendarat.\nManfaatkan sumber daya dan riset [accent]fabrik phase[].
sector.origin.description = Sektor terakhir dengan kehadiran musuh yang signifikan.\nTidak ada peluang penelitian yang tersisa - fokuslah pada menghancurkan semua inti musuh. sector.origin.description = Sektor terakhir dengan kehadiran musuh yang signifikan.\nTidak ada peluang penelitian yang tersisa - fokuslah pada menghancurkan semua inti musuh.
@@ -1047,7 +1047,7 @@ stat.boosteffect = Efek Pendorong
stat.maxunits = Batas Unit Aktif stat.maxunits = Batas Unit Aktif
stat.health = Nyawa stat.health = Nyawa
stat.armor = Pelindung stat.armor = Pelindung
stat.buildtime = Waktu Pembuatan stat.buildtime = Waktu Pembangunan
stat.maxconsecutive = Batas Konsekutif stat.maxconsecutive = Batas Konsekutif
stat.buildcost = Biaya Bangunan stat.buildcost = Biaya Bangunan
stat.inaccuracy = Melenceng stat.inaccuracy = Melenceng
@@ -1057,13 +1057,13 @@ stat.ammo = Amunisi
stat.shieldhealth = Nyawa Perisai stat.shieldhealth = Nyawa Perisai
stat.cooldowntime = Waktu Pendinginan stat.cooldowntime = Waktu Pendinginan
stat.regenerationrate = Laju Pemulihan stat.regenerationrate = Laju Pemulihan
stat.activationtime = Activation Time stat.activationtime = Waktu Aktivasi
stat.explosiveness = Daya Ledak stat.explosiveness = Daya Ledak
stat.basedeflectchance = Peluang Defleksi Dasar stat.basedeflectchance = Peluang Defleksi Dasar
stat.lightningchance = Peluang Menghasilkan Petir stat.lightningchance = Peluang Menghasilkan Petir
stat.lightningdamage = Damage Petir stat.lightningdamage = Damage Petir
stat.flammability = Daya Bakar stat.flammability = Daya Bakar
stat.radioactivity = Daya Radioaktif stat.radioactivity = Radioaktivitas
stat.charge = Setruman stat.charge = Setruman
stat.heatcapacity = Kapasitas Panas stat.heatcapacity = Kapasitas Panas
stat.viscosity = Kekentalan stat.viscosity = Kekentalan
@@ -1095,7 +1095,7 @@ ability.repairfield.description = Memperbaiki unit terdekat
ability.statusfield = Bidang Status ability.statusfield = Bidang Status
ability.statusfield.description = Menerapkan efek status ke unit terdekat ability.statusfield.description = Menerapkan efek status ke unit terdekat
ability.unitspawn = Pabrik ability.unitspawn = Pabrik
ability.unitspawn.description = Membangun unit ability.unitspawn.description = Memproduksi unit
ability.shieldregenfield = Bidang Pemulihan Perisai ability.shieldregenfield = Bidang Pemulihan Perisai
ability.shieldregenfield.description = Memulihkan perisai unit di sekitarnya ability.shieldregenfield.description = Memulihkan perisai unit di sekitarnya
ability.movelightning = Pergerakan Petir ability.movelightning = Pergerakan Petir
@@ -1105,7 +1105,7 @@ ability.armorplate.description = Mengurangi damage yang diterima saat menembak
ability.shieldarc = Perisai Busur ability.shieldarc = Perisai Busur
ability.shieldarc.description = Memproyeksikan perisai dalam busur yang menyerap atau menangkis peluru, misil, dan unit ability.shieldarc.description = Memproyeksikan perisai dalam busur yang menyerap atau menangkis peluru, misil, dan unit
ability.suppressionfield = Bidang Penahan Perbaikan ability.suppressionfield = Bidang Penahan Perbaikan
ability.suppressionfield.description = Menghentikan bangunan perbaikan di sekitarnya ability.suppressionfield.description = Menghentikan bangunan perbaikan dan menara pembangun di sekitarnya
ability.energyfield = Bidang Energi ability.energyfield = Bidang Energi
ability.energyfield.description = Menyengat musuh di sekitar ability.energyfield.description = Menyengat musuh di sekitar
ability.energyfield.healdescription = Menyengat musuh di sekitar dan memulihkan unit sekutu ability.energyfield.healdescription = Menyengat musuh di sekitar dan memulihkan unit sekutu
@@ -1168,8 +1168,8 @@ bar.input = Masukan
bar.output = Keluaran bar.output = Keluaran
bar.strength = [stat]{0}[lightgray]x penguatan bar.strength = [stat]{0}[lightgray]x penguatan
bar.regenerationrate = [stat]{0}/sec[lightgray] waktu pulih bar.regenerationrate = [stat]{0}/sec[lightgray] waktu pulih
bar.activationtimer = Activates in {0} bar.activationtimer = Aktif dalam {0}
bar.activated = Activated bar.activated = Aktif
units.processorcontrol = [lightgray]Dikendalikan Prosesor units.processorcontrol = [lightgray]Dikendalikan Prosesor
@@ -1178,9 +1178,9 @@ bullet.splashdamage = [stat]{0}[lightgray] damage percikan~[stat] {1}[lightgray]
bullet.incendiary = [stat]membakar bullet.incendiary = [stat]membakar
bullet.homing = [stat]mengejar bullet.homing = [stat]mengejar
bullet.armorpierce = [stat]menembus pelindung bullet.armorpierce = [stat]menembus pelindung
bullet.armorweakness = [red]{0}%[lightgray] armor weakness bullet.armorweakness = [red]{0}%[lightgray] melemahkan pelindung
bullet.armorpiercing = [stat]{0}%[lightgray] armor piercing bullet.armorpiercing = [stat]{0}%[lightgray] menembus pelindung
bullet.antiarmor = [stat]{0}x[lightgray] anti-armor bullet.antiarmor = [stat]{0}x[lightgray] anti-pelindung
bullet.maxdamagefraction = [stat]{0}%[lightgray] batas damage bullet.maxdamagefraction = [stat]{0}%[lightgray] batas damage
bullet.suppression = [stat]{0}[lightgray] detik penahan perbaikan ~ [stat]{1}[lightgray] ubin bullet.suppression = [stat]{0}[lightgray] detik penahan perbaikan ~ [stat]{1}[lightgray] ubin
bullet.interval = [stat]{0}/detik[lightgray] jarak antar peluru: bullet.interval = [stat]{0}/detik[lightgray] jarak antar peluru:
@@ -1246,7 +1246,7 @@ setting.buildautopause.name = Jeda Otomatis ketika Membangun
setting.doubletapmine.name = Ketuk Dua Kali untuk Menambang setting.doubletapmine.name = Ketuk Dua Kali untuk Menambang
setting.commandmodehold.name = Tahan Untuk Mode Perintah setting.commandmodehold.name = Tahan Untuk Mode Perintah
setting.distinctcontrolgroups.name = Batasi Satu Grup Kontrol Per Unit setting.distinctcontrolgroups.name = Batasi Satu Grup Kontrol Per Unit
setting.modcrashdisable.name = Matikan Mod Ketika Ada Masalah Saat Memulai Game setting.modcrashdisable.name = Nonaktifkan Mod Ketika Ada Masalah Saat Memulai Game
setting.animatedwater.name = Animasi Perairan setting.animatedwater.name = Animasi Perairan
setting.animatedshields.name = Animasi Perisai setting.animatedshields.name = Animasi Perisai
setting.playerindicators.name = Indikasi Pemain setting.playerindicators.name = Indikasi Pemain
@@ -1350,7 +1350,7 @@ keybind.unit_stance_ram.name = Posisi Unit: Tabrak
keybind.unit_command_move.name = Perintah Unit: Bergerak keybind.unit_command_move.name = Perintah Unit: Bergerak
keybind.unit_command_repair.name = Perintah Unit: Perbaiki keybind.unit_command_repair.name = Perintah Unit: Perbaiki
keybind.unit_command_rebuild.name = Perintah Unit: Bangun kembali keybind.unit_command_rebuild.name = Perintah Unit: Bangun Kembali
keybind.unit_command_assist.name = Perintah Unit: Ikuti Player keybind.unit_command_assist.name = Perintah Unit: Ikuti Player
keybind.unit_command_mine.name = Perintah Unit: Menambang keybind.unit_command_mine.name = Perintah Unit: Menambang
keybind.unit_command_boost.name = Perintah Unit: Mendorong keybind.unit_command_boost.name = Perintah Unit: Mendorong
@@ -1362,7 +1362,7 @@ keybind.unit_command_loop_payload.name = Perintah Unit: Perulangan Transfer Unit
keybind.rebuild_select.name = Membangun Ulang Wilayah keybind.rebuild_select.name = Membangun Ulang Wilayah
keybind.schematic_select.name = Pilih Daerah keybind.schematic_select.name = Pilih Daerah
keybind.schematic_menu.name = Menu Skema keybind.schematic_menu.name = Menu Skematik
keybind.schematic_flip_x.name = Balik Skematik Horizontal keybind.schematic_flip_x.name = Balik Skematik Horizontal
keybind.schematic_flip_y.name = Balik Skematik Vertikal keybind.schematic_flip_y.name = Balik Skematik Vertikal
keybind.category_prev.name = Kategori Sebelumnya keybind.category_prev.name = Kategori Sebelumnya
@@ -1434,13 +1434,13 @@ rules.hidebannedblocks = Sembunyikan Blok Terlarang
rules.infiniteresources = Sumber Daya Tak Terbatas rules.infiniteresources = Sumber Daya Tak Terbatas
rules.fillitems = Isi Inti Dengan Sumber Daya rules.fillitems = Isi Inti Dengan Sumber Daya
rules.onlydepositcore = Hanya Izinkan Penyetoran Inti rules.onlydepositcore = Hanya Izinkan Penyetoran Inti
rules.coreunloaders = Allow Core Unloaders rules.coreunloaders = Izinkan Pembongkar Inti
rules.coreunloaders.info = When enabled, Serpulo unloaders can take items from the core.\nDoes not affect Erekir unloaders. rules.coreunloaders.info = Saat diaktifkan, pembongkar Serpulo dapat mengambil item dari inti.\nTidak memengaruhi pipa pembongkar Erekir.
rules.derelictrepair = Izinkan Perbaikan Blok rules.derelictrepair = Izinkan Perbaikan Blok Derelik
rules.reactorexplosions = Ledakan Reaktor rules.reactorexplosions = Ledakan Reaktor
rules.coreincinerates = Penghangusan Luapan Inti rules.coreincinerates = Penghangusan Luapan Inti
rules.disableworldprocessors = Nonaktifkan Prosesor Dunia rules.disableworldprocessors = Nonaktifkan Prosesor Dunia
rules.schematic = Skema Diperbolehkan rules.schematic = Skematik Diperbolehkan
rules.wavetimer = Pengaturan Waktu Gelombang rules.wavetimer = Pengaturan Waktu Gelombang
rules.wavesending = Pengiriman Gelombang rules.wavesending = Pengiriman Gelombang
rules.allowedit = Izinkan Aturan Pengeditan rules.allowedit = Izinkan Aturan Pengeditan
@@ -1466,22 +1466,22 @@ rules.cleanupdeadteams = Bersihkan Bangunan Tim yang Kalah (PvP)
rules.corecapture = Kuasai Inti Saat Penghancuran rules.corecapture = Kuasai Inti Saat Penghancuran
rules.polygoncoreprotection = Poligon Pelindung Inti rules.polygoncoreprotection = Poligon Pelindung Inti
rules.placerangecheck = Pemeriksaan Jarak Penempatan rules.placerangecheck = Pemeriksaan Jarak Penempatan
rules.protectcores = Protect Cores rules.protectcores = Lindungi Inti
rules.protectcores.info = When disabled, the core no-build radius won't affect this team.\nPlayers won't be assigned to unprotected teams. rules.protectcores.info = Saat dinonaktifkan, radius dilarang membangun disekitar inti tidak akan memengaruhi tim ini.\nPemain tidak akan dimasukkan ke tim yang tidak dilindungi.
rules.checkplacement = Check Placement rules.checkplacement = Periksa Penempatan
rules.checkplacement.info = When disabled, buildings of this team are ignored in placement range checks. rules.checkplacement.info = Saat dinonaktifkan, bangunan tim ini akan diabaikan dalam pemeriksaan jarak penempatan.
rules.enemyCheat = Sumber Daya Musuh Tak Terbatas rules.enemyCheat = Sumber Daya Musuh Tak Terbatas
rules.blockhealthmultiplier = Penggandaan Nyawa Blok rules.blockhealthmultiplier = Penggandaan Nyawa Blok
rules.blockdamagemultiplier = Penggandaan Damage Blok rules.blockdamagemultiplier = Penggandaan Damage Blok
rules.unitbuildspeedmultiplier = Penggandaan Kecepatan Pembuatan Unit rules.unitbuildspeedmultiplier = Penggandaan Kecepatan Produksi Unit
rules.unitcostmultiplier = Penggandaan Bahan Pembuatan Unit rules.unitcostmultiplier = Penggandaan Bahan Produksi Unit
rules.unithealthmultiplier = Penggandaan Nyawa Unit rules.unithealthmultiplier = Penggandaan Nyawa Unit
rules.unitdamagemultiplier = Penggandaan Damage Unit rules.unitdamagemultiplier = Penggandaan Damage Unit
rules.unitcrashdamagemultiplier = Penggandaan Damage Jatuhnya Unit rules.unitcrashdamagemultiplier = Penggandaan Damage Jatuhnya Unit
rules.unitminespeedmultiplier = Penggandaan Kecepatan Unit Menambang rules.unitminespeedmultiplier = Penggandaan Kecepatan Unit Menambang
rules.logicunitcontrol = Logic Unit Control rules.logicunitcontrol = Logika Kontrol Unit
rules.logicunitbuild = Logic Unit Building rules.logicunitbuild = Logika Unit Membangun
rules.logicunitdeconstruct = Logic Unit Deconstruction rules.logicunitdeconstruct = Logika Unit Dekonstruksi
rules.solarmultiplier = Penggandaan Tenaga Surya rules.solarmultiplier = Penggandaan Tenaga Surya
rules.unitcapvariable = Inti Memengaruhi Batas Unit rules.unitcapvariable = Inti Memengaruhi Batas Unit
rules.unitpayloadsexplode = Muatan yang Dibawa Meledak Bersama Unit rules.unitpayloadsexplode = Muatan yang Dibawa Meledak Bersama Unit
@@ -1514,7 +1514,7 @@ rules.invasions = Invasi Sektor Musuh
rules.legacylaunchpads = Mekanisme Alas Peluncur Warisan rules.legacylaunchpads = Mekanisme Alas Peluncur Warisan
rules.legacylaunchpads.info = Mengizinkan penggunaan alas peluncur tanpa alas pendaratan, seperti pada versi 7.0. rules.legacylaunchpads.info = Mengizinkan penggunaan alas peluncur tanpa alas pendaratan, seperti pada versi 7.0.
landingpad.legacy.disabled = [scarlet]\ue815 Nonaktifkan[lightgray] (Alas Peluncur Warisan diaktifkan) landingpad.legacy.disabled = [scarlet]\ue815 Nonaktifkan[lightgray] (Alas Peluncur Warisan diaktifkan)
rules.showspawns = Tampilkan Titik Pendaratan Musuh rules.showspawns = Tampilkan Zona Pendaratan Musuh
rules.randomwaveai = Gelombang AI yang Tak Terduga rules.randomwaveai = Gelombang AI yang Tak Terduga
rules.fire = Api rules.fire = Api
rules.anyenv = <Apapun> rules.anyenv = <Apapun>
@@ -1529,27 +1529,27 @@ rules.randomwaveai.info = Membuat unit yang muncul dalam gelombang menargetkan s
rules.placerangecheck.info = Mencegah pemain menempatkan apa pun di dekat bangunan musuh.\nKetika mencoba memasang menara, jangkauannya akan ditingkatkan sehingga menara tidak akan bisa menjangkau musuh. rules.placerangecheck.info = Mencegah pemain menempatkan apa pun di dekat bangunan musuh.\nKetika mencoba memasang menara, jangkauannya akan ditingkatkan sehingga menara tidak akan bisa menjangkau musuh.
rules.onlydepositcore.info = Mencegah unit menyimpan bahan ke dalam bangunan apa pun kecuali inti. rules.onlydepositcore.info = Mencegah unit menyimpan bahan ke dalam bangunan apa pun kecuali inti.
database-category.item = Items database-category.item = Bahan
database-category.liquid = Fluids database-category.liquid = Zat Cair
database-category.unit = Units database-category.unit = Unit
database-category.block = Blocks database-category.block = Blok
database-category.status = Status Effects database-category.status = Status Efek
database-category.sector = Sectors database-category.sector = Sektor
database-category.team = Factions database-category.team = Faksi
database-tag.turret = Turret database-tag.turret = Menara
database-tag.production = Production database-tag.production = Produksi
database-tag.distribution = Distribution database-tag.distribution = Distribusi
database-tag.liquid = Liquid database-tag.liquid = Perairan
database-tag.power = Power database-tag.power = Kelistrikan
database-tag.defense = Defense database-tag.defense = Pertahanan
database-tag.crafting = Crafting database-tag.crafting = Kerajinan
database-tag.units = Units database-tag.units = Pabrik Unit
database-tag.effect = Utility database-tag.effect = Utilitas
database-tag.logic = Logic database-tag.logic = Logika
database-tag.unit-air = Air database-tag.unit-air = Udara
database-tag.unit-naval = Naval database-tag.unit-naval = Laut
database-tag.unit-ground = Ground database-tag.unit-ground = Darat
wallore = (Dinding) wallore = (Dinding)
@@ -1683,7 +1683,7 @@ block.kiln.name = Pembakar
block.graphite-press.name = Pencetak Grafit block.graphite-press.name = Pencetak Grafit
block.multi-press.name = Multi-Cetak block.multi-press.name = Multi-Cetak
block.constructing = {0} [lightgray](Membangun) block.constructing = {0} [lightgray](Membangun)
block.spawn.name = Titik Pendaratan Musuh block.spawn.name = Zona Pendaratan Musuh
block.remove-wall.name = Hapus Dinding block.remove-wall.name = Hapus Dinding
block.remove-ore.name = Hapus Bijih block.remove-ore.name = Hapus Bijih
block.core-shard.name = Inti: Shard block.core-shard.name = Inti: Shard
@@ -1787,7 +1787,7 @@ block.inverted-sorter.name = Penyortir Terbalik
block.message.name = Pesan block.message.name = Pesan
block.reinforced-message.name = Pesan yang Diperkuat block.reinforced-message.name = Pesan yang Diperkuat
block.world-message.name = Pesan Dunia block.world-message.name = Pesan Dunia
block.world-switch.name = Saklar Dunia block.world-switch.name = Sakelar Dunia
block.illuminator.name = Lampu block.illuminator.name = Lampu
block.overflow-gate.name = Gerbang Luapan block.overflow-gate.name = Gerbang Luapan
block.underflow-gate.name = Gerbang Luapan Terbalik block.underflow-gate.name = Gerbang Luapan Terbalik
@@ -1797,7 +1797,7 @@ block.pulverizer.name = Penghancur
block.cryofluid-mixer.name = Pencampur Kriogenik block.cryofluid-mixer.name = Pencampur Kriogenik
block.melter.name = Pencair block.melter.name = Pencair
block.incinerator.name = Insinerator block.incinerator.name = Insinerator
block.spore-press.name = Penekan Spora block.spore-press.name = Pencetak Spora
block.separator.name = Pemisah Rongsokan block.separator.name = Pemisah Rongsokan
block.coal-centrifuge.name = Sentrifugal Batu Bara block.coal-centrifuge.name = Sentrifugal Batu Bara
block.power-node.name = Simpul Tenaga block.power-node.name = Simpul Tenaga
@@ -1895,11 +1895,11 @@ block.silicon-crucible.name = Tungku Peleburan Silikon
block.overdrive-dome.name = Kubah Proyektor Pemercepat block.overdrive-dome.name = Kubah Proyektor Pemercepat
block.interplanetary-accelerator.name = Akselerator Antarplanet block.interplanetary-accelerator.name = Akselerator Antarplanet
block.constructor.name = Konstruktor block.constructor.name = Konstruktor
block.constructor.description = Membuat bangunan hingga ubin berukuran 2x2. block.constructor.description = Mengonstruksi bangunan hingga ubin berukuran 2x2.
block.large-constructor.name = Konstruktor Besar block.large-constructor.name = Konstruktor Besar
block.large-constructor.description = Membuat bangunan hingga ubin berukuran 4x4. block.large-constructor.description = Mengonstruksi bangunan hingga ubin berukuran 4x4.
block.deconstructor.name = Dekonstruktor Besar block.deconstructor.name = Dekonstruktor Besar
block.deconstructor.description = Mendekonstruksi bangunan dan unit. Mengembalikan 100% dari biaya pembuatan. block.deconstructor.description = Mendekonstruksi bangunan dan unit. Mengembalikan 100% dari biaya pembangunan.
block.payload-loader.name = Pemuat Muatan block.payload-loader.name = Pemuat Muatan
block.payload-loader.description = Memuat cairan dan item ke dalam blok. block.payload-loader.description = Memuat cairan dan item ke dalam blok.
block.payload-unloader.name = Pembongkar Muatan block.payload-unloader.name = Pembongkar Muatan
@@ -2000,7 +2000,7 @@ block.large-shield-projector.name = Proyektor Perisai Besar
block.armored-duct.name = Pipa Berlapis Tungsten block.armored-duct.name = Pipa Berlapis Tungsten
block.overflow-duct.name = Pipa Luapan block.overflow-duct.name = Pipa Luapan
block.underflow-duct.name = Pipa Luapan Terbalik block.underflow-duct.name = Pipa Luapan Terbalik
block.duct-unloader.name = Pipa Pembongkar Muatan block.duct-unloader.name = Pipa Pembongkar
block.surge-conveyor.name = Konveyor Berbahan Logam block.surge-conveyor.name = Konveyor Berbahan Logam
block.surge-router.name = Pengarah Berbahan Logam block.surge-router.name = Pengarah Berbahan Logam
block.unit-cargo-loader.name = Pemuat Unit Kargo block.unit-cargo-loader.name = Pemuat Unit Kargo
@@ -2010,8 +2010,8 @@ block.reinforced-conduit.name = Saluran yang Diperkuat
block.reinforced-liquid-junction.name = Persimpangan Cairan yang Diperkuat block.reinforced-liquid-junction.name = Persimpangan Cairan yang Diperkuat
block.reinforced-bridge-conduit.name = Jembatan Saluran yang Diperkuat block.reinforced-bridge-conduit.name = Jembatan Saluran yang Diperkuat
block.reinforced-liquid-router.name = Pengarah Cairan yang Diperkuat block.reinforced-liquid-router.name = Pengarah Cairan yang Diperkuat
block.reinforced-liquid-container.name = Kontainer Cairan yang Diperkuatkan block.reinforced-liquid-container.name = Kontainer Cairan yang Diperkuat
block.reinforced-liquid-tank.name = Tangki Cairan yang Diperkuatkan block.reinforced-liquid-tank.name = Tangki Cairan yang Diperkuat
block.beam-node.name = Simpul Sinar block.beam-node.name = Simpul Sinar
block.beam-tower.name = Menara Sinar block.beam-tower.name = Menara Sinar
block.beam-link.name = Tautan Sinar block.beam-link.name = Tautan Sinar
@@ -2062,7 +2062,7 @@ block.malign.name = Malign
block.flux-reactor.name = Reaktor Flux block.flux-reactor.name = Reaktor Flux
block.neoplasia-reactor.name = Reaktor Neoplasia block.neoplasia-reactor.name = Reaktor Neoplasia
block.switch.name = Saklar block.switch.name = Sakelar
block.micro-processor.name = Prosesor Mikro block.micro-processor.name = Prosesor Mikro
block.logic-processor.name = Prosesor Logika block.logic-processor.name = Prosesor Logika
block.hyper-processor.name = Prosesor Raksasa block.hyper-processor.name = Prosesor Raksasa
@@ -2113,7 +2113,7 @@ hint.waveFire = Menara [accent]Wave[] yang terisi dengan air akan memadamkan api
hint.generator = :combustion-generator: [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energi ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas dengan :power-node: [accent]Simpul Daya[]. hint.generator = :combustion-generator: [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energi ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas dengan :power-node: [accent]Simpul Daya[].
hint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak efektif[].\n\nGunakan menara yang lebih bagus atau amunisi yang lebih kuat seperti :graphite: [accent]Grafit[] :duo:Duo/:salvo:Salvo untuk menghancurkan Penjaga. hint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak efektif[].\n\nGunakan menara yang lebih bagus atau amunisi yang lebih kuat seperti :graphite: [accent]Grafit[] :duo:Duo/:salvo:Salvo untuk menghancurkan Penjaga.
hint.coreUpgrade = Inti dapat ditingkatkan dengan cara [accent]meletakkan Inti yang lebih besar di atasnya[].\n\nLetakkan sebuah inti :core-foundation: [accent]Foundation[] diatas inti :core-shard: [accent]Shard[]. Pastikan terdapat ruang kosong dari bangunan yang lain. hint.coreUpgrade = Inti dapat ditingkatkan dengan cara [accent]meletakkan Inti yang lebih besar di atasnya[].\n\nLetakkan sebuah inti :core-foundation: [accent]Foundation[] diatas inti :core-shard: [accent]Shard[]. Pastikan terdapat ruang kosong dari bangunan yang lain.
hint.serpuloCoreZone = Additional cores may be constructed on :core-zone: [accent]Core Zone[] tiles. hint.serpuloCoreZone = [accent]Inti[] :core-shard: tambahan dapat dibangun di atas ubin :core-zone: [accent]Zona Inti[].
hint.cannotUpgrade = Ikon [red]:tree:[] di atas pabrik unit menunjukkan bahwa versi yang ditingkatkan belum diteliti.\n\nPeningkatan unit harus diteliti di [accent]:tree: pohon teknologi[] sebelum dapat diproduksi di rekonstruktor. hint.cannotUpgrade = Ikon [red]:tree:[] di atas pabrik unit menunjukkan bahwa versi yang ditingkatkan belum diteliti.\n\nPeningkatan unit harus diteliti di [accent]:tree: pohon teknologi[] sebelum dapat diproduksi di rekonstruktor.
hint.presetLaunch = [accent]Zona pendaratan[] yang berwarna abu-abu, seperti [accent]Hutan Beku[] dapat diluncurkan dari mana saja. Sektor seperti ini tidak perlu diluncurkan dari sektor terdekat milik Anda.\n\n[accent]Sektor yang bernomor[], seperti yang ini, bersifat [accent]opsional[]. hint.presetLaunch = [accent]Zona pendaratan[] yang berwarna abu-abu, seperti [accent]Hutan Beku[] dapat diluncurkan dari mana saja. Sektor seperti ini tidak perlu diluncurkan dari sektor terdekat milik Anda.\n\n[accent]Sektor yang bernomor[], seperti yang ini, bersifat [accent]opsional[].
hint.presetDifficulty = Sektor ini memiliki [scarlet]tingkat ancaman musuh yang tinggi[].\nMeluncurkan ke sektor tersebut [accent]tidak disarankan[] tanpa teknologi yang sesuai dan persiapan yang matang. hint.presetDifficulty = Sektor ini memiliki [scarlet]tingkat ancaman musuh yang tinggi[].\nMeluncurkan ke sektor tersebut [accent]tidak disarankan[] tanpa teknologi yang sesuai dan persiapan yang matang.
@@ -2140,35 +2140,35 @@ gz.supplyturret = [accent]Suplai Menara
gz.zone1 = Ini adalah zona pendaratan musuh. gz.zone1 = Ini adalah zona pendaratan musuh.
gz.zone2 = Apa pun yang dibangun dalam radius tersebut \nakan hancur ketika gelombang mulai. gz.zone2 = Apa pun yang dibangun dalam radius tersebut \nakan hancur ketika gelombang mulai.
gz.zone3 = Gelombang akan dimulai sekarang. Bersiaplah. gz.zone3 = Gelombang akan dimulai sekarang. Bersiaplah.
gz.finish = Bangun lebih banyak menara, tambang lebih banyak sumber daya,\ndan bertahanlah terhadap semua gelombang untuk [accent]menaklukkan sektor[]. gz.finish = Bangun lebih banyak menara, tambang lebih banyak sumber daya,\ndan bertahanlah terhadap semua gelombang untuk [accent]menguasai sektor[].
fungalpass.tutorial1 = Use [accent]units[] to defend buildings and attack the enemy.\nResearch and place a :ground-factory: [accent]ground factory[]. fungalpass.tutorial1 = Gunakan [accent]unit[] untuk mempertahankan bangunan dan menyerang musuh.\nTeliti dan tempatkan :ground-factory: [accent]pabrik unit darat[].
fungalpass.tutorial2 = Select :dagger: [accent]Dagger[] units in the factory.\nProduce 3 units. fungalpass.tutorial2 = Pilih unit :dagger: [accent]Dagger[] di pabrik.\nProduksi 3 Unit.
frontier.tutorial1 = The :additive-reconstructor: [accent]Additive Reconstructor[]\nupgrades tier 1 units to tier 2\nusing :silicon: silicon and :graphite: graphite.\n\n[accent]Research and reconstruct\na []:dagger:[accent] dagger to a []:mace:[accent] mace. frontier.tutorial1 = Pabrik :additive-reconstructor: [accent]Rekonstruktor Aditif[]\nmeningkatkan unit tingkat 1 ke tingkat 2\nmenggunakan :silicon: silikon dan :graphite: grafit.\n\n[accent]Teliti dan rekonstruksi\nunit []:dagger:[accent] dagger menjadi unit []:mace:[accent] mace[].
frontier.tutorial2 = Enemy waves send [accent]infinitely[] until all enemy cores are [unlaunched]destroyed. frontier.tutorial2 = Musuh mengirimkan gelombang [accent]tanpa henti[] sampai semua inti musuh [unlaunched]dihancurkan[].
frontier.tutorial3 = [accent]Attack the enemy base fast to prevent waves from getting too high[]. frontier.tutorial3 = [accent]Serang markas musuh secepat mungkin untuk mencegah gelombang menjadi terlalu tinggi[].
atolls.destroy1 = Destroy the 2 enemy [accent]foundation cores[] first.\n[accent]Gain access to thorium[]. atolls.destroy1 = Hancurkan 2 [accent]inti foundation[] musuh terlebih dahulu.\n[accent]Dapatkan akses ke torium[].
atolls.mega1 = Enter [accent]command mode[] and select the :mega:[accent]Mega[] units. atolls.mega1 = Masuk ke [accent]mode perintah[] dan pilih unit :mega: [accent]Mega[].
atolls.mega2 = Select the \ue87b [accent]Load Units[] command to have Mega units to pick up ground units. atolls.mega2 = Pilih perintah \ue87b [accent]Muat Unit[] untuk memerintahkan unit Mega mengambil unit darat.
atolls.mega3 = Move the Mega units [accent]above[] ground units to load them in. atolls.mega3 = Perintahkan unit Mega untuk bergerak, lalu berhenti [accent]di atas[] unit darat agar dapat dimuat.
atolls.mega4 = [accent]Drop ground units here to attack. atolls.mega4 = [accent]Kerahkan unit darat di sini untuk menyerang[].
atolls.mega5 = Select the \ue879 [accent]Unload Payload[] command to have Mega units drop their carried units. atolls.mega5 = Pilih perintah \ue879 [accent]Turunkan Muatan[] untuk memerintahkan unit Mega menurunkan unit yang dibawanya.
atolls.mega6 = Units will be [accent]automatically dropped[] while the \ue879 Unload Payload command is selected. atolls.mega6 = Unit akan [accent]diturunkan secara otomatis[] saat perintah \ue879 [accent]Turunkan Muatan[] dipilih.
atolls.mega7 = Mega units [accent]will not[] drop ground units while they are above walls or deep water. atolls.mega7 = Unit Mega [accent]tidak akan[] menurunkan unit darat saat mereka berada di atas tembok atau perairan dalam.
atolls.mega8 = [accent]Drop naval units here to attack.[] atolls.mega8 = [accent]Kerahkan unit laut disini untuk menyerang[].
atolls.attack1 = 1: Drop ground units here to attack from this location. atolls.attack1 = 1: Kerahkan unit darat di sini untuk menyerang dari lokasi ini.
atolls.attack2 = 2: Alternatively, drop naval units here to launch a surprise attack. atolls.attack2 = 2: Cara alternatif, kerahkan unit laut di sini untuk melancarkan serangan kejutan.
atolls.carry1 = Carrying ground units requires :mega:[accent]Mega[] units. atolls.carry1 = Mengangkut unit darat memerlukan unit :mega: [accent]Mega[].
atolls.carry2 = 1: Command Mega units to [accent]move over[] the ground units. atolls.carry2 = 1: Perintahkan unit Mega untuk bergerak, lalu [accent]berhenti di atas[] unit darat.
atolls.carry3 = 2: Select the \ue87b [accent]Load Units[] command in order to pick up the ground units with the Mega units. atolls.carry3 = 2: Pilih perintah \ue87b [accent]Muat Unit[] untuk mengambil unit darat dengan unit Mega.
atolls.carry4 = 3: Command and move the Mega carriers [accent]loaded with units[]. atolls.carry4 = 3: Perintahkan unit Mega yang telah [accent]dimuat dengan unit[].
atolls.carry5 = 4: Select the \ue879 [accent]'Unload Payload'[] command in order for the Mega units to drop the ground units. atolls.carry5 = 4: Pilih perintah \ue879 [accent]'Turunkan Muatan'[] agar unit Mega menurunkan unit darat yang dibawanya.
atolls.carry6 = These steps can be reviewed [accent]here[]. atolls.carry6 = Langkah-langkah ini dapat ditinjau [accent]di sini[].
atolls.carry7 = Follow these instructions to airdrop more units near the enemy base. atolls.carry7 = Ikuti petunjuk ini untuk mengerahkan lebih banyak unit dari udara di dekat markas musuh.
atolls.noairunit = This base is too well-fortified to destroy with air units. atolls.noairunit = Markas ini terlalu kokoh untuk dihancurkan dengan unit udara.
atolls.2strategies = There are two strategies to destroy this base. atolls.2strategies = Ada dua strategi untuk menghancurkan markas ini.
onset.mine = Klik untuk menambang :beryllium: [accent]berilium[] dari dinding.\n\nGunakan tombol [accent][[WASD] untuk bergerak. onset.mine = Klik untuk menambang :beryllium: [accent]berilium[] dari dinding.\n\nGunakan tombol [accent][[WASD] untuk bergerak.
onset.mine.mobile = Ketuk untuk menambang :beryllium: [accent]berilium[] dari dinding. onset.mine.mobile = Ketuk untuk menambang :beryllium: [accent]berilium[] dari dinding.
@@ -2180,7 +2180,7 @@ onset.ducts.mobile = Riset dan tempatkan :duct: [accent]saluran[] untuk memindah
onset.moremine = Perluas operasi penambangan.\nTempatkan lebih banyak Bor Plasma, nyalakan bor plasma menggunakan simpul sinar,\nlalu gunakan pipa untuk memindahkan sumber daya yang ditambang ke inti.\n\nTambang 200 berilium. onset.moremine = Perluas operasi penambangan.\nTempatkan lebih banyak Bor Plasma, nyalakan bor plasma menggunakan simpul sinar,\nlalu gunakan pipa untuk memindahkan sumber daya yang ditambang ke inti.\n\nTambang 200 berilium.
onset.graphite = Blok yang lebih kompleks memerlukan :graphite: [accent]grafit[].\nSiapkan bor plasma untuk menambang grafit. onset.graphite = Blok yang lebih kompleks memerlukan :graphite: [accent]grafit[].\nSiapkan bor plasma untuk menambang grafit.
onset.research2 = Mulailah meneliti [accent]bangunan pabrik[].\nRiset :cliff-crusher: [accent]penghancur tebing[] dan :silicon-arc-furnace: [accent]tungku listrik silikon[]. onset.research2 = Mulailah meneliti [accent]bangunan pabrik[].\nRiset :cliff-crusher: [accent]penghancur tebing[] dan :silicon-arc-furnace: [accent]tungku listrik silikon[].
onset.arcfurnace = Tungku Listrik Silikon memerlukan :sand: [accent]pasir[] dan :graphite: [accent]grafit[] untuk membuat :silicon: [accent]silikon[].\n[accent]Tenaga[] juga dibutuhkan. onset.arcfurnace = Tungku Listrik Silikon memerlukan :sand: [accent]pasir[] dan :graphite: [accent]grafit[] untuk memproduksi :silicon: [accent]silikon[].\n[accent]Tenaga[] juga dibutuhkan.
onset.crusher = Gunakan :cliff-crusher: [accent]penghancur tebing[] untuk menambang pasir. onset.crusher = Gunakan :cliff-crusher: [accent]penghancur tebing[] untuk menambang pasir.
onset.fabricator = Gunakan [accent]unit[] untuk menjelajah peta, mempertahakan bangunan, dan menyerang musuh. Riset dan tempatkan :tank-fabricator: [accent]pabrikator tank[]. onset.fabricator = Gunakan [accent]unit[] untuk menjelajah peta, mempertahakan bangunan, dan menyerang musuh. Riset dan tempatkan :tank-fabricator: [accent]pabrikator tank[].
onset.makeunit = Produksi sebuah unit.\nTekan tombol "?" untuk melihat persyaratan pabrik yang dipilih. onset.makeunit = Produksi sebuah unit.\nTekan tombol "?" untuk melihat persyaratan pabrik yang dipilih.
@@ -2198,7 +2198,7 @@ aegis.tungsten = Tungsten dapat ditambang menggunakan [accent]bor tumbukan[].\nB
split.pickup = Beberapa blok dapat diambil oleh unit inti.\nAmbil [accent]kontainer[] ini dan letakkan di [accent]pemuat muatan[].\n(Tombol bawaannya ialah [ dan ] untuk mengambil dan menurunkan) split.pickup = Beberapa blok dapat diambil oleh unit inti.\nAmbil [accent]kontainer[] ini dan letakkan di [accent]pemuat muatan[].\n(Tombol bawaannya ialah [ dan ] untuk mengambil dan menurunkan)
split.pickup.mobile = Beberapa blok dapat diambil oleh unit inti.\nAmbil [accent]kontainer[] ini dan letakkan di [accent]pemuat muatan[].\n(Untuk mengambil atau menurunkan sesuatu, tekan lama blok tersebut) split.pickup.mobile = Beberapa blok dapat diambil oleh unit inti.\nAmbil [accent]kontainer[] ini dan letakkan di [accent]pemuat muatan[].\n(Untuk mengambil atau menurunkan sesuatu, tekan lama blok tersebut)
split.acquire = Anda harus memperoleh beberapa tungsten untuk membangun unit. split.acquire = Peroleh beberapa tungsten untuk membangun unit.
split.build = Unit harus diangkut ke sisi lain tembok.\nTempatkan dua [accent]Penembak Muatan Massal[], satu di setiap sisi dinding.\nHubungkan penembak muatan massal dengan menekan salah satunya, lalu pilih penembak muatan massal yang lain. split.build = Unit harus diangkut ke sisi lain tembok.\nTempatkan dua [accent]Penembak Muatan Massal[], satu di setiap sisi dinding.\nHubungkan penembak muatan massal dengan menekan salah satunya, lalu pilih penembak muatan massal yang lain.
split.container = Mirip dengan kontainer, unit juga dapat diangkut menggunakan [accent]Penembak Muatan Massal[].\nTempatkan pabrikator meka menghadap ke penembak muatan massal untuk memuat unit,\nlalu kirim mereka melintasi dinding untuk menyerang markas musuh. split.container = Mirip dengan kontainer, unit juga dapat diangkut menggunakan [accent]Penembak Muatan Massal[].\nTempatkan pabrikator meka menghadap ke penembak muatan massal untuk memuat unit,\nlalu kirim mereka melintasi dinding untuk menyerang markas musuh.
@@ -2237,7 +2237,7 @@ liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, menara, d
#Erekir #Erekir
liquid.arkycite.description = Digunakan dalam reaksi kimia untuk pembangkit listrik dan material sintesis. liquid.arkycite.description = Digunakan dalam reaksi kimia untuk pembangkit listrik dan material sintesis.
liquid.ozone.description = Digunakan sebagai bahan bakar dan zat pengoksidasi dalam memproduki material. Cukup eksplosif. liquid.ozone.description = Digunakan sebagai bahan bakar dan zat pengoksidasi dalam memproduksi material. Cukup eksplosif.
liquid.hydrogen.description = Digunakan dalam ekstraksi sumber daya, produksi unit, dan perbaikan bangunan. Mudah terbakar. liquid.hydrogen.description = Digunakan dalam ekstraksi sumber daya, produksi unit, dan perbaikan bangunan. Mudah terbakar.
liquid.cyanogen.description = Digunakan untuk amunisi, pembangunan unit canggih, dan berbagai reaksi pada blok canggih. Sangat mudah terbakar. liquid.cyanogen.description = Digunakan untuk amunisi, pembangunan unit canggih, dan berbagai reaksi pada blok canggih. Sangat mudah terbakar.
liquid.nitrogen.description = Digunakan dalam ekstraksi sumber daya, pembuatan gas, dan produksi unit. Lembam. liquid.nitrogen.description = Digunakan dalam ekstraksi sumber daya, pembuatan gas, dan produksi unit. Lembam.
@@ -2375,7 +2375,7 @@ block.spectre.description = Menembakkan peluru besar yang menembus pelindung ke
block.meltdown.description = Mengisi dan menembakkan sinar laser secara terus-menerus ke musuh di sekitar. Memerlukan pendingin untuk beroperasi. block.meltdown.description = Mengisi dan menembakkan sinar laser secara terus-menerus ke musuh di sekitar. Memerlukan pendingin untuk beroperasi.
block.foreshadow.description = Menembakkan baut besar jarak jauh yang hanya menargetkan satu musuh dengan batas nyawa tertinggi. block.foreshadow.description = Menembakkan baut besar jarak jauh yang hanya menargetkan satu musuh dengan batas nyawa tertinggi.
block.repair-point.description = Memulihkan unit yang terluka di sekitar secara terus-menerus. block.repair-point.description = Memulihkan unit yang terluka di sekitar secara terus-menerus.
block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak akan ditargetkan. block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak dapat ditargetkan.
block.parallax.description = Menembakkan laser yang menarik target udara, juga merusaknya selama dalam proses. block.parallax.description = Menembakkan laser yang menarik target udara, juga merusaknya selama dalam proses.
block.tsunami.description = Menembakkan cairan dalam jumlah dan tekanan besar ke arah musuh. Dapat memadamkan api secara otomatis jika diisi dengan air. block.tsunami.description = Menembakkan cairan dalam jumlah dan tekanan besar ke arah musuh. Dapat memadamkan api secara otomatis jika diisi dengan air.
block.silicon-crucible.description = Memurnikan silikon dari pasir dan batu bara, menggunakan pyratit sebagai sumber panas tambahan. Lebih efesien jika diletakkan di area yang panas. block.silicon-crucible.description = Memurnikan silikon dari pasir dan batu bara, menggunakan pyratit sebagai sumber panas tambahan. Lebih efesien jika diletakkan di area yang panas.
@@ -2440,9 +2440,9 @@ block.impact-drill.description = Saat ditempatkan pada bijih, mengeluarkan bahan
block.eruption-drill.description = Bor tumbukan yang ditingkatkan. Mampu menambang torium. Memerlukan hidrogen. block.eruption-drill.description = Bor tumbukan yang ditingkatkan. Mampu menambang torium. Memerlukan hidrogen.
block.reinforced-conduit.description = Memindahkan cairan ke depan. Tidak menerima masukkan ke samping. block.reinforced-conduit.description = Memindahkan cairan ke depan. Tidak menerima masukkan ke samping.
block.reinforced-liquid-router.description = Mendistribusikan cairan secara merata ke semua sisi. block.reinforced-liquid-router.description = Mendistribusikan cairan secara merata ke semua sisi.
block.reinforced-liquid-tank.description = Menyimpan sejumlah besar cairan. block.reinforced-liquid-tank.description = Menyimpan jumlah cairan yang sangat banyak.
block.reinforced-liquid-container.description = Menyimpan jumlah cairan yang cukup besar. block.reinforced-liquid-container.description = Menyimpan jumlah cairan yang banyak.
block.reinforced-bridge-conduit.description = Memindahkan cairan melintasi medan dan bangunan block.reinforced-bridge-conduit.description = Memindahkan cairan melintasi medan dan bangunan.
block.reinforced-pump.description = Memompa dan mengeluarkan cairan. Memerlukan hidrogen. block.reinforced-pump.description = Memompa dan mengeluarkan cairan. Memerlukan hidrogen.
block.beryllium-wall.description = Melindungi bangunan dari proyektil musuh. block.beryllium-wall.description = Melindungi bangunan dari proyektil musuh.
block.beryllium-wall-large.description = Melindungi bangunan dari proyektil musuh. block.beryllium-wall-large.description = Melindungi bangunan dari proyektil musuh.
@@ -2464,10 +2464,10 @@ block.underflow-duct.description = Kebalikan dari pipa luapan. Mengeluarkan bara
block.reinforced-liquid-junction.description = Bertindak sebagai persimpangan antara dua saluran penyeberangan. block.reinforced-liquid-junction.description = Bertindak sebagai persimpangan antara dua saluran penyeberangan.
block.surge-conveyor.description = Memindahkan barang secara bertumpuk. Dapat dipercepat dengan tenaga. Menghantarkan tenaga. block.surge-conveyor.description = Memindahkan barang secara bertumpuk. Dapat dipercepat dengan tenaga. Menghantarkan tenaga.
block.surge-router.description = Mendistribusikan barang secara merata ke tiga arah dari konveyor berbahan logam. Dapat dipercepat dengan tenaga. Menghantarkan tenaga. block.surge-router.description = Mendistribusikan barang secara merata ke tiga arah dari konveyor berbahan logam. Dapat dipercepat dengan tenaga. Menghantarkan tenaga.
block.unit-cargo-loader.description = Membuat unit kargo. Unit kargo secara otomatis mendistribusikan barang ke titik bongkar muatan unit kargo dengan filter yang cocok. block.unit-cargo-loader.description = Memproduksi unit kargo. Unit kargo secara otomatis mendistribusikan barang ke titik bongkar muatan unit kargo dengan filter yang cocok.
block.unit-cargo-unload-point.description = Bertindak sebagai titik bongkar muatan unit kargo. Menerima barang yang cocok dengan filter yang dipilih. block.unit-cargo-unload-point.description = Bertindak sebagai titik bongkar muatan unit kargo. Menerima barang yang cocok dengan filter yang dipilih.
block.beam-node.description = Mentransmisikan tenaga ke blok lain secara ortogonal. Menyimpan sejumlah kecil tenaga. block.beam-node.description = Mentransmisikan tenaga ke blok lain secara ortogonal. Menyimpan tenaga dalam jumlah yang kecil.
block.beam-tower.description = Mentransmisikan tenaga ke blok lain secara ortogonal. Menyimpan sejumlah besar tenaga. Jarak jauh. block.beam-tower.description = Mentransmisikan tenaga ke blok lain secara ortogonal. Menyimpan tenaga dalam jumlah yang besar. Jarak jauh.
block.beam-link.description = Mentransmisikan tenaga ke blok lain dengan jarak yang sangat jauh.\nHanya mampu terhubung ke struktur yang berdekatan atau tautan sinar lainnya. block.beam-link.description = Mentransmisikan tenaga ke blok lain dengan jarak yang sangat jauh.\nHanya mampu terhubung ke struktur yang berdekatan atau tautan sinar lainnya.
block.turbine-condenser.description = Menghasilkan tenaga ketika ditempatkan pada ventilasi. Menghasilkan sedikit air. block.turbine-condenser.description = Menghasilkan tenaga ketika ditempatkan pada ventilasi. Menghasilkan sedikit air.
block.chemical-combustion-chamber.description = Menghasilkan tenaga dari arkisit dan ozon. block.chemical-combustion-chamber.description = Menghasilkan tenaga dari arkisit dan ozon.
@@ -2478,9 +2478,9 @@ block.build-tower.description = Secara otomatis membangun kembali bangunan dalam
block.regen-projector.description = Perlahan menyembuhkan bangunan sekutu di perimeter persegi. Memerlukan hidrogen. Dapat menggunakan fabrik phase untuk meningkatkan efisiensi. block.regen-projector.description = Perlahan menyembuhkan bangunan sekutu di perimeter persegi. Memerlukan hidrogen. Dapat menggunakan fabrik phase untuk meningkatkan efisiensi.
block.reinforced-container.description = Menyimpan sejumlah kecil barang. Isi kontainer dapat diambil melalui pembongkar muatan. Tidak dapat meningkatkan kapasitas penyimpanan inti. block.reinforced-container.description = Menyimpan sejumlah kecil barang. Isi kontainer dapat diambil melalui pembongkar muatan. Tidak dapat meningkatkan kapasitas penyimpanan inti.
block.reinforced-vault.description = Menyimpan sejumlah besar barang. Isi gudang dapat diambil melalui pembongkar muatan. Tidak dapat meningkatkan kapasitas penyimpanan inti. block.reinforced-vault.description = Menyimpan sejumlah besar barang. Isi gudang dapat diambil melalui pembongkar muatan. Tidak dapat meningkatkan kapasitas penyimpanan inti.
block.tank-fabricator.description = Membangun unit Stell. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan. block.tank-fabricator.description = Memproduksi unit Stell. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan.
block.ship-fabricator.description = Membangun unit Elude. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan. block.ship-fabricator.description = Memproduksi unit Elude. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan.
block.mech-fabricator.description = Membangun unit Merui. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan. block.mech-fabricator.description = Memproduksi unit Merui. Unit dapat digunakan secara langsung, atau dipindahkan ke pabrikator ulang untuk ditingkatkan.
block.tank-assembler.description = Merakit Unit Tank besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul. block.tank-assembler.description = Merakit Unit Tank besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul.
block.ship-assembler.description = Merakit Unit Kapal besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul. block.ship-assembler.description = Merakit Unit Kapal besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul.
block.mech-assembler.description = Merakit Unit Meka besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul. block.mech-assembler.description = Merakit Unit Meka besar dari blok dan unit yang dimasukkan. Tingkatan unit dapat ditingkatkan dengan menambahkan modul.
@@ -2528,7 +2528,7 @@ unit.risso.description = Menembak rentetan misil dan peluru ke arah musuh.
unit.minke.description = Menembak cangkang pembakar dan peluru standar ke target darat. unit.minke.description = Menembak cangkang pembakar dan peluru standar ke target darat.
unit.bryde.description = Menembak artileri jarak jauh dan misil ke arah musuh. unit.bryde.description = Menembak artileri jarak jauh dan misil ke arah musuh.
unit.sei.description = Menembak rentetan misil dan peluru yang dapat menembus pelindung ke arah musuh. unit.sei.description = Menembak rentetan misil dan peluru yang dapat menembus pelindung ke arah musuh.
unit.omura.description = Menembak senapan rel jarak jauh penembus ke arah musuh. Dapat memproduksi unit flare. unit.omura.description = Menembak senapan rel jarak jauh penembus ke arah musuh.
unit.alpha.description = Melindungi Inti Shard dari musuh. Dapat membangun struktur. unit.alpha.description = Melindungi Inti Shard dari musuh. Dapat membangun struktur.
unit.beta.description = Melindungi Inti Foundation dari musuh. Dapat membangun struktur. unit.beta.description = Melindungi Inti Foundation dari musuh. Dapat membangun struktur.
unit.gamma.description = Melindungi Inti Nucleus dari musuh. Dapat membangun struktur. unit.gamma.description = Melindungi Inti Nucleus dari musuh. Dapat membangun struktur.
@@ -2541,9 +2541,9 @@ unit.navanax.description = Menembak proyektil elektromagnetik yang meledak, memb
#Erekir #Erekir
unit.stell.description = Menembak peluru standar ke arah musuh. unit.stell.description = Menembak peluru standar ke arah musuh.
unit.locus.description = Menembak peluru bergantian ke arah musuh. unit.locus.description = Menembak peluru bergantian ke arah musuh.
unit.precept.description = Menembak gugusan peluru penusuk ke arah musuh. Sedikit terpengaruh oleh medan yang berbahaya. unit.precept.description = Menembak gugusan peluru penusuk ke arah musuh. Sedikit terpengaruh oleh hambatan cairan.
unit.vanquish.description = Menembak peluru penusuk besar yang membelah ke arah musuh. Sedikit terpengaruh oleh medan yang berbahaya. unit.vanquish.description = Menembak peluru penusuk besar yang membelah ke arah musuh. Sedikit terpengaruh oleh hambatan cairan.
unit.conquer.description = Menembak pancaran peluru penusuk besar ke arah musuh. Sedikit terpengaruh oleh medan yang berbahaya. unit.conquer.description = Menembak pancaran peluru penusuk besar ke arah musuh. Jauh lebih sedikit terpengaruh oleh hambatan cairan.
unit.merui.description = Menembak artileri jarak jauh ke arah musuh di darat. Dapat melewati hampir semua dataran. unit.merui.description = Menembak artileri jarak jauh ke arah musuh di darat. Dapat melewati hampir semua dataran.
unit.cleroi.description = Menembak peluru ganda ke arah musuh. Menargetkan proyektil musuh terdekat dengan titik menara pertahanan. Dapat melewati hampir semua medan. unit.cleroi.description = Menembak peluru ganda ke arah musuh. Menargetkan proyektil musuh terdekat dengan titik menara pertahanan. Dapat melewati hampir semua medan.
unit.anthicus.description = Menembak misil pelacak jarak jauh ke arah musuh. Dapat melewati hampir semua medan. unit.anthicus.description = Menembak misil pelacak jarak jauh ke arah musuh. Dapat melewati hampir semua medan.
@@ -2669,7 +2669,7 @@ laccess.displaywidth = Lebar blok tampilan logika dalam piksel.
laccess.displayheight = Tinggi blok tampilan logika dalam piksel. laccess.displayheight = Tinggi blok tampilan logika dalam piksel.
laccess.buffersize = Untuk pesan: Panjang dari isi pesan.\nUntuk tampilan: Jumlah dari perintah grafis mentah. laccess.buffersize = Untuk pesan: Panjang dari isi pesan.\nUntuk tampilan: Jumlah dari perintah grafis mentah.
laccess.operations = Jumlah operasi yang dilakukan pada blok.\nUntuk tampilan, mengembalikan jumlah dari operasi drawflush. laccess.operations = Jumlah operasi yang dilakukan pada blok.\nUntuk tampilan, mengembalikan jumlah dari operasi drawflush.
laccess.maxunits = Maximum units that a team can have.\nCan only be sensed from cores. laccess.maxunits = Jumlah unit maksimum yang dapat dimiliki sebuah tim.\nHanya dapat dideteksi dari inti.
lcategory.unknown = Tak Diketahui lcategory.unknown = Tak Diketahui
lcategory.unknown.description = Instruksi tanpa kategori. lcategory.unknown.description = Instruksi tanpa kategori.
@@ -2749,7 +2749,7 @@ lenum.player = Unit yang dikendalikan oleh pemain.
lenum.ore = Bahan tambang. lenum.ore = Bahan tambang.
lenum.damaged = Bangunan sekutu yang rusak. lenum.damaged = Bangunan sekutu yang rusak.
lenum.spawn = Titik mendaratnya musuh.\nDapat berupa inti atau suatu posisi. lenum.spawn = Zona mendaratnya musuh.\nDapat berupa inti atau suatu posisi.
lenum.building = Bangunan dalam suatu kumpulan. lenum.building = Bangunan dalam suatu kumpulan.
lenum.core = Inti apapun. lenum.core = Inti apapun.
@@ -2792,7 +2792,7 @@ playsound.limit = Jika benar, cegah suara ini diputar \njika sudah diputar pada
lenum.idle = Tidak bergerak, namun tetap membangun/menambang.\nSifat awalan. lenum.idle = Tidak bergerak, namun tetap membangun/menambang.\nSifat awalan.
lenum.stop = Berhenti bergerak/menambang/membangun. lenum.stop = Berhenti bergerak/menambang/membangun.
lenum.unbind = Mematikan kendali logika.\nLanjutkan A.I. standar. lenum.unbind = Menonaktifkan kendali logika.\nLanjutkan A.I. standar.
lenum.move = Bergerak ke posisi yang ditentukan. lenum.move = Bergerak ke posisi yang ditentukan.
lenum.approach = Mendekati posisi dalam radius. lenum.approach = Mendekati posisi dalam radius.
lenum.pathfind = Mencari arah ke tempat pendaratan musuh. lenum.pathfind = Mencari arah ke tempat pendaratan musuh.
@@ -2844,4 +2844,4 @@ lenum.ambientlight = Warna cahaya sekitar. Digunakan saat pencahayaan diaktifkan
lenum.solarmultiplier = Menggandakan pengeluaran tenaga panel surya. lenum.solarmultiplier = Menggandakan pengeluaran tenaga panel surya.
lenum.dragmultiplier = Penggandaan hambatan lingkungan. lenum.dragmultiplier = Penggandaan hambatan lingkungan.
lenum.ban = Blok atau unit yang tidak dapat ditempatkan atau dibangun. lenum.ban = Blok atau unit yang tidak dapat ditempatkan atau dibangun.
lenum.unban = Batalkan larangan membuat suatu unit atau membangun blok. lenum.unban = Batalkan larangan memproduksi suatu unit atau membangun blok.

View File

@@ -32,6 +32,7 @@ public class MissileAI extends AIController{
//kill instantly on enemy building contact //kill instantly on enemy building contact
if(build != null && build.team != unit.team && (build == target || !build.block.underBullets)){ if(build != null && build.team != unit.team && (build == target || !build.block.underBullets)){
unit.hasTarget = true;
unit.kill(); unit.kill();
} }
} }

View File

@@ -94,16 +94,18 @@ public class Blocks{
//sandbox //sandbox
powerSource, powerVoid, itemSource, itemVoid, liquidSource, liquidVoid, payloadSource, payloadVoid, illuminator, heatSource, powerSource, powerVoid, itemSource, itemVoid, liquidSource, liquidVoid, payloadSource, payloadVoid, illuminator, heatSource,
//defense //walls
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, plastaniumWall, plastaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge, copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, plastaniumWall, plastaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, phaseWall, phaseWallLarge, surgeWall, surgeWallLarge,
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
//walls - erekir //walls - erekir
berylliumWall, berylliumWallLarge, tungstenWall, tungstenWallLarge, blastDoor, reinforcedSurgeWall, reinforcedSurgeWallLarge, carbideWall, carbideWallLarge, berylliumWall, berylliumWallLarge, tungstenWall, tungstenWallLarge, blastDoor, reinforcedSurgeWall, reinforcedSurgeWallLarge, carbideWall, carbideWallLarge,
shieldedWall, shieldedWall,
//defense
mender, mendProjector, overdriveProjector, overdriveDome, forceProjector, shockMine, mender, mendProjector, overdriveProjector, overdriveDome, forceProjector, shockMine,
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
//defense - erekir //defense - erekir
radar, radar,

View File

@@ -1891,6 +1891,73 @@ public class Fx{
}).layer(Layer.effect + 1f), }).layer(Layer.effect + 1f),
shootQuellPulse = new Effect(40f, e -> {
rand.setSeed(e.id);
float randSize = 0.1f;
float fout = e.fout() * rand.random(1f - randSize, 1f);
float fin = e.fin() * rand.random(1f - randSize, 1f);
float coreRadius = 30f * e.fout(Interp.smooth2);
Color coreColor = Tmp.c1.set(e.color).mul(0.8f);
Color edgeColor = e.color;
e.scaled(10, i -> {
stroke(4f * i.fout());
Lines.circle(e.x, e.y, 2f + i.fin() * 40f);
});
int count = 8;
for(int i = 0; i < count; i++){
float t = (i + 1f) / count;
float radius = coreRadius + 5f;
color(Tmp.c1.set(coreColor).mul(1f + fout / 8f));
alpha(Mathf.pow(1f - t, 2.5f) * fout * 0.5f);
Fill.circle(e.x, e.y, Mathf.lerp(coreRadius * 0.6f, coreRadius * 1.7f, t));
}
color(Tmp.c1.set(edgeColor).mul(1.2f));
e.scaled(fout * 0.8f, i -> {
stroke(3f * i.fout());
Lines.circle(e.x, e.y, coreRadius * 0.6f);
});
color(coreColor);
alpha(0.5f * e.fout(Interp.smooth) + 0.8f);
stroke(e.fout(Interp.pow2InInverse) * 3f);
float circleRad = e.finpow() * 28f;
Lines.circle(e.x, e.y, circleRad);
stroke(e.fout(Interp.smooth) * 3f);
for(int i = 0; i < 9; i++){
float angle = rand.random(360f);
float lenRand = rand.random(0.5f, 1.2f);
Tmp.v1.trns(angle, circleRad);
for(int s : Mathf.signs){
Drawf.tri(e.x + Tmp.v1.x, e.y + Tmp.v1.y, e.fout() * 10f, e.fout() * 10f * lenRand + 8f, angle + 90f + s * 90f);
}
}
color(edgeColor);
alpha(e.fout(Interp.pow2InInverse) + 0.5f);
for(int i = 0; i < rand.random(8, 13); i++){
float randomPos = rand.random(0.9f, 1.1f);
float angle = rand.random(360f);
float len = rand.random(0.7f, 1.3f) * 10f + fout * 2f;
float width = rand.random(1f, 4f) * 1.5f * fout + 1f;
float dist = 8f + coreRadius * rand.random(0.8f, 1.4f);
Tmp.v1.trns(angle, circleRad);
for(int s : Mathf.signs){
Drawf.tri(e.x + Angles.trnsx(angle, dist) - Tmp.v1.x / 2, e.y + Angles.trnsy(angle, dist) * randomPos - Tmp.v1.y * randomPos / 2, width, len, angle + 90f + s * 90f);
}
}
reset();
}),
shootTitan = new Effect(10, e -> { shootTitan = new Effect(10, e -> {
color(Pal.lightOrange, e.color, e.fin()); color(Pal.lightOrange, e.color, e.fin());
float w = 1.3f + 10 * e.fout(); float w = 1.3f + 10 * e.fout();

View File

@@ -176,8 +176,8 @@ public class UnitTypes{
bullet = new ArtilleryBulletType(2f, 20, "shell"){{ bullet = new ArtilleryBulletType(2f, 20, "shell"){{
hitEffect = Fx.blastExplosion; hitEffect = Fx.blastExplosion;
knockback = 0.8f; knockback = 0.8f;
lifetime = 120f - 35f / 2f; lifetime = 120f - (35f - 8f) / 2f;
rangeOverride = 240f; maxRange = 240f;
width = height = 14f; width = height = 14f;
collides = true; collides = true;
collidesTiles = true; collidesTiles = true;
@@ -3504,8 +3504,9 @@ public class UnitTypes{
mirror = false; mirror = false;
reload = 1f; reload = 1f;
shootOnDeath = true; shootOnDeath = true;
shootOnDeathEffect = Fx.massiveExplosion;
bullet = new ExplosionBulletType(140f, 25f){{ bullet = new ExplosionBulletType(140f, 25f){{
shootEffect = new MultiEffect(Fx.massiveExplosion, new WrapEffect(Fx.dynamicSpikes, Pal.techBlue, 24f), new WaveEffect(){{ shootEffect = new MultiEffect(new WrapEffect(Fx.dynamicSpikes, Pal.techBlue, 24f), new WaveEffect(){{
colorFrom = colorTo = Pal.techBlue; colorFrom = colorTo = Pal.techBlue;
sizeTo = 40f; sizeTo = 40f;
lifetime = 12f; lifetime = 12f;
@@ -4147,8 +4148,9 @@ public class UnitTypes{
mirror = false; mirror = false;
reload = 1f; reload = 1f;
shootOnDeath = true; shootOnDeath = true;
bullet = new ExplosionBulletType(110f, 25f) {{ shootOnDeathEffect = Fx.massiveExplosion;
shootEffect = Fx.massiveExplosion; bullet = new ExplosionBulletType(110f, 25f){{
shootEffect = new WrapEffect(Fx.shootQuellPulse, Pal.suppress);
collidesAir = false; collidesAir = false;
}}; }};
}}); }});
@@ -4289,14 +4291,15 @@ public class UnitTypes{
mirror = false; mirror = false;
reload = 1f; reload = 1f;
shootOnDeath = true; shootOnDeath = true;
shootOnDeathEffect = Fx.massiveExplosion;
bullet = new ExplosionBulletType(140f, 25f){{ bullet = new ExplosionBulletType(140f, 25f){{
collidesAir = false; collidesAir = false;
suppressionRange = 140f; suppressionRange = 140f;
shootEffect = new ExplosionEffect(){{ shootEffect = new ExplosionEffect(){{
lifetime = 50f; lifetime = 50f;
waveStroke = 5f; waveStroke = 5f;
waveLife = 8f; waveLife = 12f;
waveColor = Color.white; waveColor = Pal.sap.cpy().mul(1.8f);
sparkColor = smokeColor = Pal.suppress; sparkColor = smokeColor = Pal.suppress;
waveRad = 40f; waveRad = 40f;
smokeSize = 4f; smokeSize = 4f;

View File

@@ -411,6 +411,9 @@ public class BulletType extends Content implements Cloneable{
if(spawnUnit != null){ if(spawnUnit != null){
return spawnUnit.estimateDps(); return spawnUnit.estimateDps();
} }
if(despawnUnit != null){
return despawnUnit.estimateDps();
}
float sum = (damage + splashDamage*0.75f) * (pierce ? pierceCap == -1 ? 2 : Mathf.clamp(pierceCap, 1, 2) : 1f); float sum = (damage + splashDamage*0.75f) * (pierce ? pierceCap == -1 ? 2 : Mathf.clamp(pierceCap, 1, 2) : 1f);
if(fragBullet != null && fragBullet != this){ if(fragBullet != null && fragBullet != this){
@@ -426,6 +429,7 @@ public class BulletType extends Content implements Cloneable{
protected float calculateRange(){ protected float calculateRange(){
if(rangeOverride > 0) return rangeOverride; if(rangeOverride > 0) return rangeOverride;
if(spawnUnit != null) return spawnUnit.lifetime * spawnUnit.speed; if(spawnUnit != null) return spawnUnit.lifetime * spawnUnit.speed;
if(despawnUnit != null) return despawnUnit.lifetime * despawnUnit.speed;
return Math.max(Mathf.zero(drag) ? speed * lifetime : speed * (1f - Mathf.pow(1f - drag, lifetime)) / drag, maxRange); return Math.max(Mathf.zero(drag) ? speed * lifetime : speed * (1f - Mathf.pow(1f - drag, lifetime)) / drag, maxRange);
} }

View File

@@ -89,7 +89,8 @@ abstract class TankComp implements Posc, Hitboxc, Unitc, ElevationMovec{
&& Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){ && Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){
if(t.build != null && t.build.team != team){ if(t.build != null && t.build.team != team){
t.build.damage(team, type.crushDamage * Time.delta * t.block().crushDamageMultiplier * state.rules.unitDamage(team)); t.build.damage(team, type.crushDamage * Time.delta * t.block().crushDamageMultiplier * state.rules.unitDamage(team)
* ((speedMultiplier- 1) / 5 + 1));
}else if(t.block().unitMoveBreakable){ }else if(t.block().unitMoveBreakable){
ConstructBlock.deconstructFinish(t, t.block(), self()); ConstructBlock.deconstructFinish(t, t.block(), self());
} }

View File

@@ -59,6 +59,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
transient String lastCommanded; transient String lastCommanded;
transient float shadowAlpha = -1f, healTime; transient float shadowAlpha = -1f, healTime;
transient int lastFogPos; transient int lastFogPos;
/** Only used in suicide units */
transient boolean hasTarget;
private transient float resupplyTime = Mathf.random(10f); private transient float resupplyTime = Mathf.random(10f);
private transient boolean wasPlayer; private transient boolean wasPlayer;
private transient boolean wasHealed; private transient boolean wasHealed;
@@ -876,6 +878,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
for(WeaponMount mount : mounts){ for(WeaponMount mount : mounts){
if(mount.weapon.shootOnDeath && !(mount.weapon.bullet.killShooter && mount.totalShots > 0)){ if(mount.weapon.shootOnDeath && !(mount.weapon.bullet.killShooter && mount.totalShots > 0)){
if(mount.weapon.shootOnDeathEffect != null && !hasTarget){
mount.allowShootEffects = false;
mount.weapon.shootOnDeathEffect.at(x, y, rotation);
}
mount.reload = 0f; mount.reload = 0f;
mount.shoot = true; mount.shoot = true;
mount.weapon.update(self(), mount); mount.weapon.update(self(), mount);

View File

@@ -32,6 +32,8 @@ public class WeaponMount{
public float aimX, aimY; public float aimX, aimY;
/** whether to shoot right now */ /** whether to shoot right now */
public boolean shoot = false; public boolean shoot = false;
/** whether to allow any shooting effects */
public boolean allowShootEffects = true;
/** whether to rotate to face the target right now */ /** whether to rotate to face the target right now */
public boolean rotate = false; public boolean rotate = false;
/** extra state for alternating weapons */ /** extra state for alternating weapons */

View File

@@ -980,7 +980,7 @@ public class LExecutor{
if(p1.obj() instanceof UnlockableContent u){ if(p1.obj() instanceof UnlockableContent u){
packed = (u.id << 5) | (u.getContentType().ordinal() & 31); packed = (u.id << 5) | (u.getContentType().ordinal() & 31);
}else if(p1.obj() instanceof LogicDisplayBuild d){ }else if(p1.obj() instanceof LogicDisplayBuild d){
packed = (d.index << 5) | LogicDisplay.displayDrawType; packed = (d.rootDisplay.index << 5) | LogicDisplay.displayDrawType;
} }
num1 = packed & 0x3FF; num1 = packed & 0x3FF;
num4 = packed >> 10; num4 = packed >> 10;

View File

@@ -544,6 +544,8 @@ public class ContentParser{
child.isArray() ? new ConsumeItems(parser.readValue(ItemStack[].class, child)) : child.isArray() ? new ConsumeItems(parser.readValue(ItemStack[].class, child)) :
child.isString() ? new ConsumeItems(new ItemStack[]{parser.readValue(ItemStack.class, child)}) : child.isString() ? new ConsumeItems(new ItemStack[]{parser.readValue(ItemStack.class, child)}) :
parser.readValue(ConsumeItems.class, child)); parser.readValue(ConsumeItems.class, child));
case "itemsBoost" -> block.consume(child.isArray() ? new ConsumeItems(parser.readValue(ItemStack[].class, child)) :
parser.readValue(ConsumeItems.class, child)).boost();
case "liquidFlammable" -> block.consume((Consume)parser.readValue(ConsumeLiquidFlammable.class, child)); case "liquidFlammable" -> block.consume((Consume)parser.readValue(ConsumeLiquidFlammable.class, child));
case "liquid" -> block.consume((Consume)parser.readValue(ConsumeLiquid.class, child)); case "liquid" -> block.consume((Consume)parser.readValue(ConsumeLiquid.class, child));
@@ -551,6 +553,8 @@ public class ContentParser{
child.isArray() ? new ConsumeLiquids(parser.readValue(LiquidStack[].class, child)) : child.isArray() ? new ConsumeLiquids(parser.readValue(LiquidStack[].class, child)) :
parser.readValue(ConsumeLiquids.class, child)); parser.readValue(ConsumeLiquids.class, child));
case "coolant" -> block.consume((Consume)parser.readValue(ConsumeCoolant.class, child)); case "coolant" -> block.consume((Consume)parser.readValue(ConsumeCoolant.class, child));
case "liquidsBoost" -> block.consume(child.isArray() ? new ConsumeLiquids(parser.readValue(LiquidStack[].class, child)) :
parser.readValue(ConsumeLiquids.class, child)).boost();
case "power" -> { case "power" -> {
if(child.isNumber()){ if(child.isNumber()){
block.consumePower(child.asFloat()); block.consumePower(child.asFloat());

View File

@@ -157,6 +157,8 @@ public class Weapon implements Cloneable{
public float shootStatusDuration = 60f * 5f; public float shootStatusDuration = 60f * 5f;
/** whether this weapon should fire when its owner dies */ /** whether this weapon should fire when its owner dies */
public boolean shootOnDeath = false; public boolean shootOnDeath = false;
/** If not null and shootOnDeath == true, overrides the weapon's shoot effect only when its owner dies. */
public @Nullable Effect shootOnDeathEffect = null;
/** extra animated parts */ /** extra animated parts */
public Seq<DrawPart> parts = new Seq<>(DrawPart.class); public Seq<DrawPart> parts = new Seq<>(DrawPart.class);
@@ -516,9 +518,11 @@ public class Weapon implements Cloneable{
initialShootSound.at(bulletX, bulletY, Mathf.random(soundPitchMin, soundPitchMax), shootSoundVolume); initialShootSound.at(bulletX, bulletY, Mathf.random(soundPitchMin, soundPitchMax), shootSoundVolume);
} }
if(mount.allowShootEffects){
ejectEffect.at(mountX, mountY, angle * Mathf.sign(this.x)); ejectEffect.at(mountX, mountY, angle * Mathf.sign(this.x));
bullet.shootEffect.at(bulletX, bulletY, angle, bullet.hitColor, unit); bullet.shootEffect.at(bulletX, bulletY, angle, bullet.hitColor, unit);
bullet.smokeEffect.at(bulletX, bulletY, angle, bullet.hitColor, unit); bullet.smokeEffect.at(bulletX, bulletY, angle, bullet.hitColor, unit);
}
unit.vel.add(Tmp.v1.trns(shootAngle + 180f, bullet.recoil)); unit.vel.add(Tmp.v1.trns(shootAngle + 180f, bullet.recoil));
Effect.shake(shake, shake, bulletX, bulletY); Effect.shake(shake, shake, bulletX, bulletY);

View File

@@ -426,12 +426,6 @@ public class SettingsMenuDialog extends BaseDialog{
if(!mobile){ if(!mobile){
graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b)); graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b));
graphics.checkPref("fullscreen", false, b -> { graphics.checkPref("fullscreen", false, b -> {
if(b && settings.getBool("borderlesswindow")){
Core.graphics.setWindowedMode(Core.graphics.getWidth(), Core.graphics.getHeight());
settings.put("borderlesswindow", false);
graphics.rebuild();
}
if(b){ if(b){
Core.graphics.setFullscreen(); Core.graphics.setFullscreen();
}else{ }else{
@@ -439,24 +433,12 @@ public class SettingsMenuDialog extends BaseDialog{
} }
}); });
graphics.checkPref("borderlesswindow", false, b -> {
if(b && settings.getBool("fullscreen")){
Core.graphics.setWindowedMode(Core.graphics.getWidth(), Core.graphics.getHeight());
settings.put("fullscreen", false);
graphics.rebuild();
}
Core.graphics.setBorderless(b);
});
Core.graphics.setVSync(Core.settings.getBool("vsync")); Core.graphics.setVSync(Core.settings.getBool("vsync"));
if(Core.settings.getBool("fullscreen")){ if(Core.settings.getBool("fullscreen")){
Core.app.post(() -> Core.graphics.setFullscreen()); Core.app.post(() -> Core.graphics.setFullscreen());
} }
if(Core.settings.getBool("borderlesswindow")){
Core.app.post(() -> Core.graphics.setBorderless(true));
}
}else if(!ios){ }else if(!ios){
graphics.checkPref("landscape", false, b -> { graphics.checkPref("landscape", false, b -> {
if(b){ if(b){

View File

@@ -109,8 +109,10 @@ public class LoadingFragment{
public void hide(){ public void hide(){
table.clearActions(); table.clearActions();
table.toFront(); table.toFront();
button.visible = false;
table.touchable = Touchable.disabled; table.touchable = Touchable.disabled;
table.actions(Actions.fadeOut(0.5f), Actions.visible(false)); table.actions(Actions.fadeOut(0.5f), Actions.visible(false));
if(Core.scene.getKeyboardFocus() == button){ if(Core.scene.getKeyboardFocus() == button){
Core.scene.setKeyboardFocus(null); Core.scene.setKeyboardFocus(null);
} }

View File

@@ -9,6 +9,7 @@ import arc.scene.event.*;
import arc.scene.style.*; import arc.scene.style.*;
import arc.scene.ui.*; import arc.scene.ui.*;
import arc.scene.ui.Tooltip.*; import arc.scene.ui.Tooltip.*;
import arc.scene.ui.layout.Stack;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
@@ -29,6 +30,8 @@ import mindustry.world.*;
import mindustry.world.blocks.ConstructBlock.*; import mindustry.world.blocks.ConstructBlock.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import java.util.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class PlacementFragment{ public class PlacementFragment{
@@ -474,9 +477,9 @@ public class PlacementFragment{
Bits availableCommands = new Bits(content.unitCommands().size); Bits availableCommands = new Bits(content.unitCommands().size);
Bits availableStances = new Bits(content.unitStances().size); Bits availableStances = new Bits(content.unitStances().size);
Bits activeTypes = new Bits(content.units().size), prevActiveTypes = new Bits(content.units().size);
u.left(); u.left();
int[] curCount = {0};
Bits usedCommands = new Bits(content.unitCommands().size); Bits usedCommands = new Bits(content.unitCommands().size);
var commands = new Seq<UnitCommand>(); var commands = new Seq<UnitCommand>();
@@ -484,6 +487,8 @@ public class PlacementFragment{
var stances = new Seq<UnitStance>(); var stances = new Seq<UnitStance>();
var stancesOut = new Seq<UnitStance>(); var stancesOut = new Seq<UnitStance>();
int[] counts = new int[content.units().size];
rebuildCommand = () -> { rebuildCommand = () -> {
u.clearChildren(); u.clearChildren();
var units = control.input.selectedUnits; var units = control.input.selectedUnits;
@@ -492,8 +497,7 @@ public class PlacementFragment{
usedStances.clear(); usedStances.clear();
commands.clear(); commands.clear();
stances.clear(); stances.clear();
Arrays.fill(counts, 0);
int[] counts = new int[content.units().size];
for(var unit : units){ for(var unit : units){
counts[unit.type.id] ++; counts[unit.type.id] ++;
@@ -514,12 +518,18 @@ public class PlacementFragment{
int col = 0; int col = 0;
for(int i = 0; i < counts.length; i++){ for(int i = 0; i < counts.length; i++){
int fi = i;
if(counts[i] > 0){ if(counts[i] > 0){
var type = content.unit(i); var type = content.unit(i);
unitlist.add(StatValues.stack(type, counts[i])).pad(4).with(b -> { unitlist.add(StatValues.stack(type, counts[i])).pad(4).with(b -> {
b.clearListeners(); b.clearListeners();
b.addListener(Tooltips.getInstance().create(type.localizedName, false)); b.addListener(Tooltips.getInstance().create(type.localizedName, false));
Label amountLabel = b.find("stack amount");
if(amountLabel != null){
amountLabel.setText(() -> counts[fi] + "");
}
var listener = new ClickListener(); var listener = new ClickListener();
//left click -> select //left click -> select
@@ -602,6 +612,9 @@ public class PlacementFragment{
activeStances.clear(); activeStances.clear();
availableCommands.clear(); availableCommands.clear();
availableStances.clear(); availableStances.clear();
activeTypes.clear();
Arrays.fill(counts, 0);
//find the command that all units have, or null if they do not share one //find the command that all units have, or null if they do not share one
for(var unit : control.input.selectedUnits){ for(var unit : control.input.selectedUnits){
@@ -610,6 +623,10 @@ public class PlacementFragment{
activeStances.set(cmd.stances); activeStances.set(cmd.stances);
} }
counts[unit.type.id] ++;
activeTypes.set(unit.type.id);
stancesOut.clear(); stancesOut.clear();
unit.type.getUnitStances(unit, stancesOut); unit.type.getUnitStances(unit, stancesOut);
@@ -622,12 +639,9 @@ public class PlacementFragment{
} }
} }
int size = control.input.selectedUnits.size; if(!usedCommands.equals(availableCommands) || !usedStances.equals(availableStances) || !prevActiveTypes.equals(activeTypes)){
if(curCount[0] != size || !usedCommands.equals(availableCommands) || !usedStances.equals(availableStances)){
if(!(curCount[0] + size == 0)){
rebuildCommand.run(); rebuildCommand.run();
} prevActiveTypes.set(activeTypes);
curCount[0] = size;
} }
//not a huge fan of running input logic here, but it's convenient as the stance arrays are all here... //not a huge fan of running input logic here, but it's convenient as the stance arrays are all here...

View File

@@ -736,6 +736,12 @@ public class Block extends UnlockableContent implements Senseable{
setBars(); setBars();
offset = ((size + 1) % 2) * tilesize / 2f; offset = ((size + 1) % 2) * tilesize / 2f;
sizeOffset = -((size - 1) / 2); sizeOffset = -((size - 1) / 2);
if(consumeBuilder.size != 0){
for(var consume : consumeBuilder){
consume.apply(this);
}
}
} }
public boolean consumesItem(Item item){ public boolean consumesItem(Item item){

View File

@@ -284,8 +284,6 @@ public class Turret extends ReloadTurret{
public @Nullable float[] curRecoils; public @Nullable float[] curRecoils;
public float shootWarmup, charge, warmupHold = 0f; public float shootWarmup, charge, warmupHold = 0f;
public int totalShots, barrelCounter; public int totalShots, barrelCounter;
public float excessReload = 0;
public int reloadShots = 0;
public boolean logicShooting = false; public boolean logicShooting = false;
public @Nullable Posc target; public @Nullable Posc target;
public Vec2 targetPos = new Vec2(); public Vec2 targetPos = new Vec2();
@@ -358,6 +356,13 @@ public class Turret extends ReloadTurret{
return isShooting() || (reloadCounter < reload && totalShots > 0); return isShooting() || (reloadCounter < reload && totalShots > 0);
} }
@Override
public BlockStatus status(){
if(enabled && !hasAmmo()) return BlockStatus.noInput;
return super.status();
}
@Override @Override
public boolean canControl(){ public boolean canControl(){
return playerControllable; return playerControllable;
@@ -491,6 +496,8 @@ public class Turret extends ReloadTurret{
shootWarmup = Mathf.lerpDelta(shootWarmup, warmupTarget, shootWarmupSpeed * (warmupTarget > 0 ? efficiency : 1f)); shootWarmup = Mathf.lerpDelta(shootWarmup, warmupTarget, shootWarmupSpeed * (warmupTarget > 0 ? efficiency : 1f));
} }
wasShooting = false;
curRecoil = Mathf.approachDelta(curRecoil, 0, 1 / recoilTime); curRecoil = Mathf.approachDelta(curRecoil, 0, 1 / recoilTime);
if(recoils > 0){ if(recoils > 0){
if(curRecoils == null) curRecoils = new float[recoils]; if(curRecoils == null) curRecoils = new float[recoils];
@@ -523,11 +530,8 @@ public class Turret extends ReloadTurret{
if(reloadWhileCharging || !charging()){ if(reloadWhileCharging || !charging()){
updateReload(); updateReload();
updateCooling(); updateCooling();
capReload();
} }
wasShooting = false;
if(state.rules.fog){ if(state.rules.fog){
float newRange = hasAmmo() ? peekAmmo().rangeChange : 0f; float newRange = hasAmmo() ? peekAmmo().rangeChange : 0f;
if(newRange != lastRangeChange){ if(newRange != lastRangeChange){
@@ -694,30 +698,11 @@ public class Turret extends ReloadTurret{
return queuedBullets > 0 && shoot.firstShotDelay > 0; return queuedBullets > 0 && shoot.firstShotDelay > 0;
} }
@Override
protected boolean canReload(){
//keep reloading as the turret keeps shooting
return reloadShots < 1 || wasShooting;
}
protected void updateReload(){ protected void updateReload(){
if(!canReload()) return;
reloadCounter += delta() * ammoReloadMultiplier() * baseReloadSpeed(); reloadCounter += delta() * ammoReloadMultiplier() * baseReloadSpeed();
}
protected void capReload(){ //cap reload for visual reasons
//cap reload for visual reasons, need to store the excess reload to keep the firerate consistent
if(canReload() && reloadCounter >= reload){
reloadShots += (int)(reloadCounter / reload);
excessReload += reloadCounter % reload;
}
reloadCounter = Math.min(reloadCounter, reload); reloadCounter = Math.min(reloadCounter, reload);
reloadShots = Math.min(reloadShots, 5);
if(!wasShooting){
reloadShots = 0;
excessReload = 0;
}
} }
@Override @Override
@@ -727,14 +712,12 @@ public class Turret extends ReloadTurret{
protected void updateShooting(){ protected void updateShooting(){
if(reloadShots > 0 && !charging() && shootWarmup >= minWarmup){ if(reloadCounter >= reload && !charging() && shootWarmup >= minWarmup){
BulletType type = peekAmmo(); BulletType type = peekAmmo();
shoot(type); shoot(type);
reloadCounter = excessReload; reloadCounter %= reload;
excessReload = 0;
reloadShots--;
} }
} }

View File

@@ -268,8 +268,10 @@ public class LogicDisplay extends Block{
super.remove(); super.remove();
if(index != -1){ if(index != -1){
displays.get(displays.size - 1).index = index; LogicDisplayBuild last = displays.get(displays.size - 1);
displays.remove(index); last.index = index;
displays.set(index, last);
displays.remove(displays.size - 1);
index = -1; index = -1;
} }

View File

@@ -53,7 +53,7 @@ public class HeatCrafter extends GenericCrafter{
@Override @Override
public boolean shouldConsume(){ public boolean shouldConsume(){
return (heatRequirement <= 0f || heat > 0) && super.canConsume(); return (heatRequirement <= 0f || heat > 0) && super.shouldConsume();
} }
@Override @Override

View File

@@ -236,7 +236,7 @@ public class StatValues{
if(amount != 0){ if(amount != 0){
stack.add(new Table(t -> { stack.add(new Table(t -> {
t.left().bottom(); t.left().bottom();
t.add(amount >= 1000 ? UI.formatAmount(amount) : amount + "").style(Styles.outlineLabel); t.add(amount >= 1000 ? UI.formatAmount(amount) : amount + "").name("stack amount").style(Styles.outlineLabel);
t.pack(); t.pack();
})); }));
} }

View File

@@ -180,7 +180,7 @@ platforms.each{ platform ->
} }
} }
//packr is broken and won't let me add one hyphen,so I have to do that myself later //packr is broken and won't let me add one hyphen, so I have to do that myself later
outputJsonFile.text = outputJsonFile.text.replace("-enable-native-access=ALL-UNNAMED", "--enable-native-access=ALL-UNNAMED") outputJsonFile.text = outputJsonFile.text.replace("-enable-native-access=ALL-UNNAMED", "--enable-native-access=ALL-UNNAMED")
} }

View File

@@ -26,4 +26,4 @@ org.gradle.caching=true
org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.socketTimeout=100000
org.gradle.internal.http.connectionTimeout=100000 org.gradle.internal.http.connectionTimeout=100000
android.enableR8.fullMode=false android.enableR8.fullMode=false
archash=e1ae1436f2 archash=acfda45497