From 8a3c4b4ddd36b4c57d4c4f44a3b6ab43e26dce00 Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Wed, 18 Nov 2020 14:13:28 +0700 Subject: [PATCH 001/162] [Bundle][ID] Updated translation Sector names are reverted back to previous translation name along with the updated new sectors, Foreshadow block description, sector captured/attacked/lost popup, threats, stats, and other fixes. --- core/assets/bundles/bundle_in_ID.properties | 216 +++++++++++--------- 1 file changed, 125 insertions(+), 91 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 1616c1ef5e..1e87e96419 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -17,7 +17,9 @@ linkfail = Gagal membuka tautan!\nURL disalin ke papan ke papan klip. screenshot = Tangkapan layar disimpan di {0} screenshot.invalid = Peta terlalu besar, tidak cukup memori untuk menangkap layar. gameover = Permainan Habis +gameover.disconnect = Terputus gameover.pvp = Tim[accent] {0}[] menang! +gameover.waiting = [accent]Menunggu peta selanjutnya... highscore = [accent]Rekor Baru! copied = Tersalin. indevpopup = [accent]v6[] saat ini dalam versi [accent]alpha[].\n[lightgray]Artinya:[]\n[scarlet]- Kampanye belum sepenuhnya selesai[]\n- Beberapa konten tidak tersedia\n - Beberapa [scarlet]Unit AI[] tidak sepenuhnya bekerja\n- Beberapa unit belum sepenuhnya selesai\n- Semua yang kamu lihat dapat berubah atau dihapus sewaktu-waktu.\n\nLaporkan bug atau crash di [accent]Github[]. @@ -57,6 +59,7 @@ schematic.rename = Ganti nama Skema schematic.info = {0}x{1}, {2} blok schematic.disabled = [scarlet]Skema dilarang[]\nAnda tidak diperbolehkan untuk menggunakan skema di [accent]peta[] atau [accent]server ini. +stats = Statistik stat.wave = Gelombang Terkalahkan:[accent] {0} stat.enemiesDestroyed = Musuh Terhancurkan:[accent] {0} stat.built = Jumlah Blok yang Dibangun:[accent] {0} @@ -189,6 +192,10 @@ servers.local = Server Lokal servers.remote = Server Jarak Jauh (Simpanan) servers.global = Server Komunitas +servers.showhidden = Tampilkan Server Tersembunyi +server.shown = Ditampilkan +server.hidden = Disembunyikan + trace = Melacak Pemain trace.playername = Nama pemain: [accent]{0} trace.ip = IP: [accent]{0} @@ -286,6 +293,7 @@ cancelbuilding = [accent][[{0}][] untuk menghapus rencana selectschematic = [accent][[{0}][] untuk memilih+salin pausebuilding = [accent][[{0}][] untuk berhenti membangun resumebuilding = [scarlet][[{0}][] untuk lanjut membangun +showui = UI disembunyikan.\nTekan [accent][[{0}][] untuk menampilkan UI. wave = [accent]Gelombang {0} wave.cap = [accent]Gelombang {0}/{1} wave.waiting = [lightgray]Gelombang di {0} @@ -293,6 +301,8 @@ wave.waveInProgress = [lightgray]Gelombang sedang berlangsung waiting = [lightgray]Menunggu... waiting.players = Menunggu pemain lainnya... wave.enemies = [lightgray]{0} Musuh Tersisa +wave.enemycores = [accent]{0}[lightgray] Inti Musuh +wave.enemycore = [accent]{0}[lightgray] Inti Musuh wave.enemy = [lightgray]{0} Musuh Tersisa wave.guardianwarn = Guardian akan tiba dalam [accent]{0}[] gelombang. wave.guardianwarn.one = Guardian akan tiba dalam [accent]{0}[] gelombang. @@ -525,34 +535,50 @@ weather.fog.name = Kabut sectors.unexplored = [lightgray]Belum Ditelusuri sectors.resources = Sumber Daya: sectors.production = Produksi: +sectors.export = Ekspor: +sectors.time = Waktu: +sectors.threat = Threat: +sectors.wave = Gelombang: sectors.stored = Terisi: sectors.resume = Lanjutkan sectors.launch = Luncurkan sectors.select = Pilih sectors.nonelaunch = [lightgray]tidak ada sectors.rename = Ganti Nama Sektor + +sector.curcapture = Sektor Ditaklukkan sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup +sector.attacked = Sektor [accent]{0}[white] sedang diserang! +sector.lost = Sektor [accent]{0}[white] telah dihancurkan! +#note: the missing space in the line below is intentional +sector.captured = Sektor [accent]{0}[white]ditaklukkan! + +threat.low = Rendah +threat.medium = Sedang +threat.high = Tinggi +threat.extreme = Ekstrem +threat.eradication = Pemusnahan + +planets = Planet planet.serpulo.name = Serpulo -#TODO better name planet.sun.name = Matahari -#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway -sector.groundZero.name = Ground Zero -sector.craters.name = The Craters -sector.frozenForest.name = Frozen Forest -sector.ruinousShores.name = Ruinous Shores -sector.stainedMountains.name = Stained Mountains -sector.desolateRift.name = Desolate Rift -sector.nuclearComplex.name = Nuclear Production Complex -sector.overgrowth.name = Overgrowth -sector.tarFields.name = Tar Fields -sector.saltFlats.name = Salt Flats -sector.fungalPass.name = Fungal Pass - -#unused -#sector.impact0078.name = Impact 0078 -#sector.crags.name = Crags +sector.impact0078.name = Impact 0078 +sector.groundZero.name = Titik Nol +sector.craters.name = Kawah +sector.frozenForest.name = Hutan Beku +sector.ruinousShores.name = Pantai Hancur +sector.stainedMountains.name = Gunung Bernoda +sector.desolateRift.name = Retakan Terpencil +sector.nuclearComplex.name = Kompleks Produksi Nuklir +sector.overgrowth.name = Pertumbuhan +sector.tarFields.name = Lahan Tar +sector.saltFlats.name = Dataran Garam +sector.fungalPass.name = Lintasan Jamur +sector.biomassFacility.name = Pabrik Sintesis Biomassa +sector.windsweptIslands.name = Pulau Bersemilir +sector.extractionOutpost.name = Pos Ekstraksi sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Beberapa sumber daya dapat dikumpulkan.\nKumpulkan timah dan tembaga sebanyak yang kamu bisa.\nMulai dari sini. sector.frozenForest.description = Disini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nHasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -624,6 +650,8 @@ stat.memorycapacity = Kapasitas Memori stat.basepowergeneration = Basis Generasi Tenaga stat.productiontime = Waktu Produksi stat.repairtime = Waktu Memperbaiki Blok Penuh +stat.weapons = Senjata +stat.bullet = Peluru stat.speedincrease = Tambahan Kecepatan stat.range = Jarak stat.drilltier = Sumber Daya yang Bisa di Bor @@ -632,22 +660,22 @@ stat.boosteffect = Efek Pendorong stat.maxunits = Maks Unit Aktif stat.health = Darah stat.buildtime = Waktu Pembuatan -stat.maxconsecutive = Max Consecutive +stat.maxconsecutive = Maks Konsekutif stat.buildcost = Biaya Bangunan stat.inaccuracy = Jarak Melenceng stat.shots = Tembakan stat.reload = Tembakan/Detik stat.ammo = Amunisi stat.shieldhealth = Darah Perisai -stat.cooldowntime = Cooldown Time -stat.explosiveness = Explosiveness -stat.basedeflectchance = Base Deflect Chance -stat.lightningchance = Lightning Chance -stat.lightningdamage = Lightning Damage -stat.flammability = Flammability -stat.radioactivity = Radioactivity -stat.heatcapacity = Heat Capacity -stat.viscosity = Viscosity +stat.cooldowntime = Waktu Pendinginan +stat.explosiveness = Ledakan +stat.basedeflectchance = Peluang Defleksi Dasar +stat.lightningchance = Peluang Menghasilkan Petir +stat.lightningdamage = Kerusakan Petir +stat.flammability = Pembakar +stat.radioactivity = Radiasi +stat.heatcapacity = Kapasitas Panas +stat.viscosity = Kelekatan stat.temperature = Temperatur stat.speed = Kecepatan stat.buildspeed = Kecepatan Membangun @@ -655,15 +683,16 @@ stat.minespeed = Kecepatan Menambang stat.minetier = Tingkat Menambang stat.payloadcapacity = Kapasitas Muatan stat.commandlimit = Batas Perintah -stat.abilities = Abilities -stat.canboost = Can Boost +stat.abilities = Kemampuan +stat.canboost = Dapat dipercepat stat.flying = Terbang -ability.forcefield = Force Field -ability.repairfield = Repair Field -ability.statusfield = Status Field +ability.forcefield = Bidang Kekuatan +ability.repairfield = Bidang Perbaikan +ability.statusfield = Bidang Status ability.unitspawn = {0} Pabrik -ability.shieldregenfield = Shield Regen Field +ability.shieldregenfield = Bidang Regenerasi Perisai +ability.movelightning = Pergerakan Petir bar.drilltierreq = Membutuhkan Bor yang Lebih Baik bar.noresources = Sumber Daya Tidak Ditemukan @@ -692,12 +721,14 @@ units.processorcontrol = [lightgray]Dikendalikan Prosesor bullet.damage = [stat]{0}[lightgray] kekuatan (dmg) bullet.splashdamage = [stat]{0}[lightgray] kekuatan percikan~[stat] {1}[lightgray] kotak bullet.incendiary = [stat]membakar +bullet.sapping = [stat]sapping bullet.homing = [stat]mengejar bullet.shock = [stat]mengkejut bullet.frag = [stat]menyebar bullet.knockback = [stat]{0}[lightgray] pantulan kembali bullet.pierce = [stat]{0}[lightgray]x tembus bullet.infinitepierce = [stat]menembus +bullet.healpercent = [stat]{0}[lightgray]% menyembuhkan bullet.freezing = [stat]membeku bullet.tarred = [stat]tar bullet.multiplier = [stat]{0}[lightgray]x multiplikasi amunisi @@ -897,7 +928,7 @@ rules.buildspeedmultiplier = Multiplikasi Waktu Pembuatan Bangunan rules.deconstructrefundmultiplier = Penggembalian Dana Mendekonstruksi Blok rules.waitForWaveToEnd = Gelombang menunggu musuh rules.dropzoneradius = Radius Titik Muncul:[lightgray] (Blok) -rules.unitammo = Unit Membutuhkan AMunisi +rules.unitammo = Unit Membutuhkan Amunisi rules.title.waves = Gelombang rules.title.resourcesbuilding = Sumber Daya & Bangunan rules.title.enemy = Musuh @@ -917,6 +948,7 @@ content.item.name = Item content.liquid.name = Zat Cair content.unit.name = Unit content.block.name = Blok +content.sector.name = Sektor item.copper.name = Tembaga item.lead.name = Timah @@ -935,7 +967,7 @@ item.pyratite.name = Pyratit item.metaglass.name = Metaglass item.scrap.name = Rongsokan liquid.water.name = Air -liquid.slag.name = Terak +liquid.slag.name = Lava liquid.oil.name = Minyak liquid.cryofluid.name = Cairan Pendingin @@ -978,7 +1010,7 @@ block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Batu Pasir Besar block.grass.name = Rumput -block.slag.name = Slag +block.slag.name = Lahar block.space.name = Luar Angkasa block.salt.name = Garam block.salt-wall.name = Bukit Garam @@ -1066,7 +1098,7 @@ block.thorium-wall-large.name = Dinding Thorium Besar block.door.name = Pintu block.door-large.name = Pintu Besar block.duo.name = Duo -block.scorch.name = Scorch +block.scorch.name = Penyembur Api block.scatter.name = Scatter block.hail.name = Hail block.lancer.name = Lancer @@ -1078,11 +1110,11 @@ block.junction.name = Simpangan block.router.name = Pengarah block.distributor.name = Distributor block.sorter.name = Penyortir -block.inverted-sorter.name = Penyortir terbalik +block.inverted-sorter.name = Penyortir Terbalik block.message.name = Pesan -block.illuminator.name = Penerang +block.illuminator.name = Lampu block.overflow-gate.name = Gerbang Luap -block.underflow-gate.name = Gerbang Tidak Meluap +block.underflow-gate.name = Gerbang Luap Terbalik block.silicon-smelter.name = Pelebur Silikon block.phase-weaver.name = Pengrajut Phase block.pulverizer.name = Pulverisator @@ -1119,7 +1151,7 @@ block.unloader.name = Pembongkar Muatan block.vault.name = Gudang block.wave.name = Wave block.tsunami.name = Tsunami -block.swarmer.name = Swarmer +block.swarmer.name = Peluncur Misil block.salvo.name = Salvo block.ripple.name = Ripple block.phase-conveyor.name = Pengantar Berbahan Phase @@ -1146,7 +1178,7 @@ block.thermal-pump.name = Pompa Suhu Panas block.thermal-generator.name = Generator Suhu Panas block.alloy-smelter.name = Pelebur Paduan Listrik block.mender.name = Mender -block.mend-projector.name = Mender Proyektor +block.mend-projector.name = Mender Projektor block.surge-wall.name = Dinding Listrik block.surge-wall-large.name = Dinding Listrik Besar block.cyclone.name = Cyclone @@ -1177,14 +1209,14 @@ block.disassembler.name = Pembongkar block.silicon-crucible.name = Multi-Lebur block.overdrive-dome.name = Kubah Proyeksi Percepat #experimental, may be removed -block.block-forge.name = Block Forge -block.block-loader.name = Block Loader -block.block-unloader.name = Block Unloader +block.block-forge.name = Pemadu Blok +block.block-loader.name = Pemuat Blok +block.block-unloader.name = Pembongkar Blok block.switch.name = Saklar block.micro-processor.name = Prosesor Mikro block.logic-processor.name = Prosesor Logika -block.hyper-processor.name = Prosesor Cepat +block.hyper-processor.name = Prosesor Raksasa block.logic-display.name = Tampilan Logika block.large-logic-display.name = Tampilan Logika Besar block.memory-cell.name = Sel Memori @@ -1192,7 +1224,7 @@ block.memory-bank.name = Bank Memori team.blue.name = biru team.crux.name = merah -team.sharded.name = oranye +team.sharded.name = kuning team.orange.name = jingga team.derelict.name = abu-abu team.green.name = hijau @@ -1226,28 +1258,29 @@ item.lead.description = Bahan dasar di awal permainan. Digunakan di elektronik d item.lead.details = Padat. Lembam. Biasanya digunakan dalam baterai.\nCatatan : Kemungkinan beracun untuk kehidupan biologis. Bukan berarti tidak banyak disini. item.metaglass.description = Kaca yang super-kuat. Digunakan untuk distribusi zar cair dan penyimpanan. item.graphite.description = Karbon termineralisasi, dipakai untuk amunisi dan penyekatan listrik. -item.sand.description = Bahan umum yang digunakan di berbagai peleburan -item.coal.description = Bahan bakar umum. +item.sand.description = Digunakan sebagai produksi untuk material yang akan dimurnikan. +item.coal.description = Digunakan sebagai bahan bakar dan memurnikan material. item.coal.details = Hasil dari tumbuhan yang menjadi fosil, sudah terjadi sangat lama sebelum spora-spora menyebar. -item.titanium.description = Logam langka yang sangat ringan digunakan di transportasi zat cair, bor dan pesawat terbang. -item.thorium.description = Logam yang padat dan radioaktif, sebagai bantuan struktur ban bahan bakar nuklir. -item.scrap.description = Peninggalan bangunan dan unit tua. mengandung beberapa zat logam. +item.titanium.description = Digunakan di transportasi zat cair, bor dan pesawat terbang. +item.thorium.description = Digunakan dalam struktur tahan lama dan sebagai bahan bakar nuklir. +item.scrap.description = Dilebur dan dimurnikan menjadi material lain. item.scrap.details = Sisa sisa bangunan dan unit tua. -item.silicon.description = Semi-konduktor yang sangat berguna, penerapan di panel surya dan banyak benda elektronik. -item.plastanium.description = Bahan yang ringan dan elastis, digunakan di pesawat terbang canggih dan amunisi kepingan. -item.phase-fabric.description = Zat yang hampir tidak ada bobot ini digunakan di elektronik canggih dan teknologi reparasi. -item.surge-alloy.description = Paduan canggih dengan properti listrik yang unik. +item.silicon.description = Digunakan di panel surya, bahan elektronik yang kompleks, dan amunisi yang bisa mengejar. +item.plastanium.description = Digunakan dalam unit canggih, isolasi dan amunisi fragmentasi . +item.phase-fabric.description = Digunakan di elektronik canggih dan teknologi perbaikan diri sendiri. +item.surge-alloy.description = Digunakan di pertahanan yang lebih canggih dan struktur pertahanan reaktif. item.spore-pod.description = Digunakan untuk produksi minyak, bahan peledak dan bahan bakar. item.spore-pod.details = Spora. Sepertinya bentuk kehidupan sintetis. Menghasilkan gas beracun yang meracuni kehidupan biologis lainnya. Sangat mudah menyebar. Sangat mudah terbakar dalam kondisi tertentu. -item.blast-compound.description = Senyawa yang digunakan di bom dan peledak lainnya. Bisa dipakai untuk bahan bakar, tetapi tidak disarankan. -item.pyratite.description = Zat yang mudah dibakar ini digunakan di senjata pembakar. +item.blast-compound.description = Senyawa yang digunakan di bom dan amunisi peledak. +item.pyratite.description = Digunakan di senjata pembakar dan generator yang membutuhkan bahan mudah terbakar. + liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan pendaur ulang. -liquid.slag.description = Berbagai tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprokat ke musuh dijadikn senjata. -liquid.oil.description = Bisa dibakar, diledakkan atau sebagai pendigin. -liquid.cryofluid.description = Zat cair paling efisien untuk mendinginkan hal-hal. +liquid.slag.description = Berbagai campuran tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprokan ke musuh sebagai senjata. +liquid.oil.description = Digunakan di produksi material lanjutan dan sebagai amunisi yang mudah terbakar. +liquid.cryofluid.description = Digunakan sebagai pendingin di reaktor, turret, dan pabrik. block.armored-conveyor.description = Memindahkan barang sama cepatnya dengan pengantar titanium, namun memiliki lebih banyak armor. Tidak dapat menerima masukan dari samping dari apapun kecuali dari pengantar. -block.illuminator.description = Sebuah benda berukuran kecil, sumber penghasil cahaya. Membutuhkan tenaga untuk berfungsi. +block.illuminator.description = Sebuah lampu kecil untuk menerangi daerah sekitar. Perlu listrik untuk bekerja. block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu. block.graphite-press.description = Memadatkan bongkahan batu bara menjadi lempengan grafit murni. block.multi-press.description = Versi pemadat grafit yang lebih bagus. Membutuhkan air dan tenaga untuk memproses batu bara lebih cepat dan efisien. @@ -1259,8 +1292,8 @@ block.alloy-smelter.description = Memproduksi campuran logam dari titanium, tima block.cryofluidmixer.description = Mencampur air dan titanium menjadi cairan dingin yang lebih efisien untuk pendingin. block.blast-mixer.description = Menggunakan minyak untuk membentuk pyratite menjadi senyawa peledak yang kurang mudah terbakar tetapi lebih eksplosif. block.pyratite-mixer.description = Mencampur batu bara, timah dan pasir menjadi pyratite yang sangat mudah terbakar. -block.melter.description = Melelehkan kepingan menjadi terak untuk proses selanjutnya atau digunakan menara. -block.separator.description = Mengekstrak logam-logam berguna dari terak. +block.melter.description = Melelehkan rongsokan menjadi lava. +block.separator.description = Mengekstrak komponen mineral dari lava. block.spore-press.description = Menekan polong spora menjadi minyak. block.pulverizer.description = Menghancurkan kepingan menjadi pasir. Berguna jika tidak ada pasir disekitar. block.coal-centrifuge.description = Memadatkan minyak menjadi bongkahan batu bara. @@ -1286,7 +1319,7 @@ block.surge-wall-large.description = Blok pelindung terkuat.\nMempunyai kemungki block.door.description = Pintu kecil yang bisa dibuka-tutup dengan menekannya.\nJika dibuka, musuh bisa masuk dan menembak. block.door-large.description = Pintu kecil yang bisa dibuka-tutup dengan menekannya.\nJika dibuka, musuh bisa masuk dan menembak.\nSebesar 4 blok. block.mender.description = Menyembuhkan blok di sekelilingnya secara berkala. Menjaga keutuhan pertahanan di sela-sela gelombang.\nDapat menggunakan silikon untuk meningkatkan jangkauan dan efisiensi. -block.mend-projector.description = Versi reparator yang lebih baik. Menyembuhkan blok di sekelilingnya secara berkala.\nDapat menggunakan silikon untuk meningkatkan jangkauan dan efisiensi. +block.mend-projector.description = Versi mender yang lebih besar. Menyembuhkan blok di sekelilingnya secara berkala.\nDapat menggunakan phase untuk meningkatkan jangkauan dan efisiensi. block.overdrive-projector.description = Menambah kecepatan bangunan sekitar, seperti bor dan pengantar. block.force-projector.description = Membentuk medan gaya berbentuk heksagon disekitar, melindungi bangunan dan unit didalamnya dari tembakan. Dapat mengalami kelebihan panas jika membendung terlalu banyak kerusakan. Bisa menggunakan cairan untuk mendinginkan. Gunakan fabrik phase untuk memperbesar jangkauan. block.shock-mine.description = Mencedera musuh yang menginjak ranjau. Hampir tak kasat mata kepada musuh. @@ -1336,13 +1369,13 @@ block.laser-drill.description = Mengebor lebih cepat lewat teknologi laser, tapi block.blast-drill.description = Bor tercanggih. Membutuhkan banyak tenaga. block.water-extractor.description = Mengekstrak air dari tanah. Gunakan jika tidak ada sumber air disekitar. block.cultivator.description = Membudidaya spora kecil menjadi polong siap diolah. -block.cultivator.details = Recovered technology. Used to produce massive amounts of biomass as efficiently as possible. Likely the initial incubator of the spores now covering Serpulo. +block.cultivator.details = Teknologi yang dipulihkan. Digunakan untuk memproduksi biomassa secara efesien. Kemungkinan merupakan inkubator awal dari spora yang sekarang menutupi Serpulo. block.oil-extractor.description = Menggunakan tenaga cukup besar untuk mengekstrak minyak dari pasir. Gunakan jika tidak ada sumber minyak disekitar. block.core-shard.description = Versi pertama dari pengulangan kapsul inti. Jika hancur, Semua kontak dengan daerah akan hilang. Jangan biarkan ini terjadi. block.core-shard.details = Iterasi pertama. Padat. Bisa menggandakan dirinya (untuk menguasai sektor disekitarnya). Dilengkapi dengan pendorong yang sekali pakai. Tidak didesain untuk perjalanan antar planet. -block.core-foundation.description = Versi kedua dari intk. Lebih kuat. Menyimpan banyak sumber daya. +block.core-foundation.description = Versi kedua dari inti. Lebih kuat. Menyimpan banyak sumber daya. block.core-foundation.details = Iterasi kedua. -block.core-nucleus.description = Versi ketiga dan pengulangan terakhir dari kapsul inti. Sangkat kuat. Menyimpan sangat banyak sumberr daya. +block.core-nucleus.description = Versi ketiga dan pengulangan terakhir dari kapsul inti. Sangat kuat. Menyimpan sangat banyak sumber daya. block.core-nucleus.details = Iterasi ketiga dan yang terakhir. block.vault.description = Menyimpan semua tipe item berkuantitas besar. [lightgray] pembongkar muatan[] bisa digunakan untuk mengeluarkan item dari gudang. block.container.description = Menyimpan semua tipe item. [lightgray] pembongkar muatan[] bisa digunakan untuk mengeluarkan item dari kontainer. @@ -1363,31 +1396,32 @@ block.ripple.description = Menara meriam besar yang menembak beberapa peluru sek block.cyclone.description = Menara penembak beruntun besar. block.spectre.description = Menara besar yang menembak dua peluru kuat sekaligus. block.meltdown.description = Menara besar ini menembak sinar panjang yang kuat. +block.foreshadow.description = Menembak laser besar dalam jarak yang jauh ke satu target. block.repair-point.description = Terus menerus memulihkan unit terluka disekitar. block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak akan ditargetkan. -block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process. -block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water. -block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations. -block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium. -block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate. -block.payload-conveyor.description = Moves large payloads, such as units from factories. -block.payload-router.description = Splits input payloads into 3 output directions. -block.command-center.description = Controls unit behavior with several different commands. -block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading. -block.air-factory.description = Produces air units. Output units can be used directly, or moved into reconstructors for upgrading. -block.naval-factory.description = Produces naval units. Output units can be used directly, or moved into reconstructors for upgrading. -block.additive-reconstructor.description = Upgrades inputted units to the second tier. -block.multiplicative-reconstructor.description = Upgrades inputted units to the third tier. -block.exponential-reconstructor.description = Upgrades inputted units to the fourth tier. -block.tetrative-reconstructor.description = Upgrades inputted units to the fifth and final tier. -block.switch.description = A toggleable switch. State can be read and controlled with logic processors. -block.micro-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. -block.logic-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the micro processor. -block.hyper-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the logic processor. -block.memory-cell.description = Stores information for a logic processor. -block.memory-bank.description = Stores information for a logic processor. High capacity. -block.logic-display.description = Displays arbitrary graphics from a logic processor. -block.large-logic-display.description = Displays arbitrary graphics from a logic processor. +block.parallax.description = Menembak laser yang menarik target udara, juga merusaknya selama dalam proses. +block.tsunami.description = Menembak cairan dalam jumlah dan tekanan besar ke arah musuh. Akan memadamkan api secara otomatis jika diisi dengan air. +block.silicon-crucible.description = Memurnikan silikon dari pasir dan batubara, menggunakan pyratit sebagai sumber panas tambahan. Lebih efesien jika diletakkan di area yang panas. +block.disassembler.description = Memisahkan lava menjadi mineral langka dalam efesiensi rendah. Bisa memproduksi thorium. +block.overdrive-dome.description = Menambah kecepatan kepada bangunan disekitarnya. Membutuhkan phase dan silikon untuk bekerja. +block.payload-conveyor.description = Memindahkan muatan yang besar, seperti unit dari pabrik. +block.payload-router.description = Membagi muatan masukan menjadi 3 arah keluaran. +block.command-center.description = Mengontrol perilaku unit dengan beberapa perintah berbeda. +block.ground-factory.description = Memproduksi unit darat. Hasil unit dapat digunakan secara langsung, atau dipindah ke rekonstruktor untuk ditingkatkan. +block.air-factory.description = Memproduksi unit udara. Hasil unit dapat digunakan secara langsung, atau dipindah ke rekonstruktor untuk ditingkatkan. +block.naval-factory.description = Memproduksi unit laut. Hasil unit dapat digunakan secara langsung, atau dipindah ke rekonstruktor untuk ditingkatkan. +block.additive-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat dua +block.multiplicative-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat tiga. +block.exponential-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat empat. +block.tetrative-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat lima. +block.switch.description = Sakelar yang dapat dialihkan. Status dapat dibaca dan dikontrol dengan prosesor logika. +block.micro-processor.description = Menjalankan urutan instruksi logika dalam satu lingkaran. Dapat digunakan untuk mengontrol unit dan bangunan. +block.logic-processor.description = Menjalankan urutan instruksi logika dalam satu lingkaran. Dapat digunakan untuk mengontrol unit dan bangunan. Lebih cepat dibandingkan prosesor mikro. +block.hyper-processor.description = Menjalankan urutan instruksi logika dalam satu lingkaran. Dapat digunakan untuk mengontrol unit dan bangunan. Lebih cepat dibandingkan prosesor logika. +block.memory-cell.description = Menyimpan informasi untuk prosesor. +block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar. +block.logic-display.description = Menampilkan grafik sembarang dari prosesor. +block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar. unit.dagger.description = Menembak musuh terdekat dengan amunisi standar. unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya. From 071d98dbfa6e521c57ed19b721f1abd2be2cb28e Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 18 Nov 2020 20:48:12 +0100 Subject: [PATCH 002/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 138 +++++++++++------------ 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index dad6c44fa3..dd2e03f2cc 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -34,30 +34,30 @@ load.mod = Mods load.scripts = Scripts be.update = Una nueva e innovadora versión disponible: -be.update.confirm = Descargar y reiniciar ahora? +be.update.confirm = ¿Descargar y reiniciar ahora? be.updating = Actualizando... be.ignore = Ignorar be.noupdates = No se encontraron actualizaciones. be.check = Revisando actualizaciones -schematic = Esquema -schematic.add = Guardar esquema... -schematics = Esquemas -schematic.replace = Un esquema con ese nombre ya existe. ¿Deseas remplazarlo? -schematic.exists = Un esquema con ese nombre ya existe. -schematic.import = Importar esquema... +schematic = Plantilla +schematic.add = Guardar plantilla... +schematics = Plantillas +schematic.replace = Ya existe una plantilla con ese nombre. ¿Deseas remplazarla? +schematic.exists = Ya existe una plantilla con ese nombre. +schematic.import = Importar plantilla... schematic.exportfile = Exportar archivo schematic.importfile = Importar archivo schematic.browseworkshop = Buscar en el Steam Workshop schematic.copy = Copiar al portapapeles. schematic.copy.import = Importar desde el portapapeles. schematic.shareworkshop = Compartir en el Steam Workshop -schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Girar esquemático -schematic.saved = Esquemático guardado. -schematic.delete.confirm = Esto esquemático será completamente borrado. -schematic.rename = Renombrar esquemático +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Girar plantilla +schematic.saved = Plantilla guardada. +schematic.delete.confirm = Esta plantilla será completamente borrada. +schematic.rename = Renombrar plantilla schematic.info = {0}x{1}, {2} bloques -schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. +schematic.disabled = [scarlet]Plantillas desactivadas.[]\nNo puedes usar plantillas en este [accent]mapa[] o [accent]servidor. stat.wave = Oleadas Derrotadas:[accent] {0} stat.enemiesDestroyed = Enemigos Destruidos:[accent] {0} @@ -69,13 +69,13 @@ stat.playtime = Tiempo jugado:[accent] {0} stat.rank = Rango final: [accent]{0} globalitems = [accent]Global Items -map.delete = ¿Estás seguro que quieres borrar el mapa "[accent]{0}[]"? +map.delete = ¿Estás seguro de que quieres borrar el mapa "[accent]{0}[]"? level.highscore = Puntuación más alta: [accent]{0} level.select = Selección de nivel level.mode = Modo de juego: coreattack = < ¡El núcleo está bajo ataque! > nearpoint = [[ [scarlet]ABANDONA EL PUNTO DE APARICIÓN INMEDIATAMENTE[] ]\nAniquilación inminente -database = Base de datos del núcleo +database = Base de datos savegame = Guardar Partida loadgame = Cargar Partida joingame = Unirse a la Partida @@ -92,7 +92,7 @@ maps = Mapas maps.browse = Navegar por los Mapas continue = Continuar maps.none = [lightgray]¡No se han encontrado mapas! -invalid = Invalido +invalid = No es válido pickcolor = Escoge Color preparingconfig = Preparando Configuración preparingcontent = Preparando Contenido @@ -104,43 +104,43 @@ feature.unsupported = Tu dispositivo no soporta esta función. mods.alphainfo = Ten en cuenta que los mods estan en versión Alpha, y[scarlet] pueden tener varios problemas[].\nReporta cualquier error que encuentres en la página de GitHub de Mindustry o Discord. mods = Mods -mods.none = [lightgray]No se encontraron Mods! +mods.none = [lightgray]¡No se encontraron Mods! mods.guide = Guía de Modding mods.report = Reportar Error mods.openfolder = Abrir carpeta de mods mods.reload = Recargar -mods.reloadexit = El juego se va a cerrar para recargar los mods. +mods.reloadexit = A continuación se cerrará el juego para recargar los mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Activado mod.disabled = [scarlet]Desactivado mod.disable = Desactivar mod.content = Contenido: -mod.delete.error = Fallo al elminar el mod. Quizás el archivo esta en uso. -mod.requiresversion = [scarlet]Requiere mínima versión del juego: [accent]{0} +mod.delete.error = No se pudo elminar el mod. Tal vez esté en uso por el juego. +mod.requiresversion = [scarlet]Requiere como mínimo la versión del juego: [accent]{0} mod.outdated = [scarlet]No es compatible con la V6 (no minGameVersion: 105) mod.missingdependencies = [scarlet]Dependencias faltantes: {0} -mod.erroredcontent = [scarlet]Errores de contenido -mod.errors = Ocurrieron fallos al cargar el contenido. -mod.noerrorplay = [scarlet]Tienes mods con fallos.[]Deshabilita las modificaciones afectadas o arregla los errores antes de jugar. +mod.erroredcontent = [scarlet]Contenido erróneo +mod.errors = Ha ocurrido un fallo al cargar el contenido. +mod.noerrorplay = [scarlet]Se están ejecutando algunos mods con fallos.[]Deshabilítalos o arregla los errores antes de jugar. mod.nowdisabled = [scarlet]Al/Los Mod/s '{0}'le esta/n faltando dependencias:[accent] {1}\n[lightgray]Estos mods necesitan descargarse primero.\nEste mod será automaticamente desactivado. mod.enable = Activar mod.requiresrestart = El juego se cerrará para aplicar los mods. -mod.reloadrequired = [scarlet]Se requiere actualizar +mod.reloadrequired = [scarlet]Se requiere volver a cargar mod.import = Importar mod mod.import.file = Importar archivo mod.import.github = Importar Mod de Github -mod.jarwarn = [scarlet]Los mods JAR pueden ser inseguros.[]\nAsegúrate de que los descargaste de una fuente segura! +mod.jarwarn = [scarlet]Los mods JAR pueden no ser seguros.[]\n¡Asegúrate de haberlos descargado de una fuente en la que confíes! mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod. mod.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar? mod.author = [lightgray]Autor:[] {0} -mod.missing = Esta partida guardada usa mods que has actualizado recientemente o que ya no has instalado. Se puede corromper la partida guardada. ¿Estás seguro de que quieres cargarla?\n[lightgray]Mods:\n{0} +mod.missing = Esta partida guardada usa mods que has actualizado recientemente o que no tienes instalados. Se puede corromper la partida guardada. ¿Quieres cargarla a pesar de ello?\n[lightgray]Mods:\n{0} mod.preview.missing = Antes de publicar este mod en el Steam Workshop, debe añadir una imagen de vista previa.\nAñada una imagen con nombre[accent] preview.png[] en la carpeta del mod e intente nuevamente. mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods. mod.scripts.disable = Tu dispositivo no soporta los mods con scripts. Debes deshabilitar esos mods para jugar. -about.button = Acerca de +about.button = Acerca del juego name = Nombre: noname = Elige un[accent] nombre de jugador[] primero. planetmap = Mapa del planeta @@ -149,45 +149,45 @@ filename = Nombre del archivo: unlocked = ¡Nuevo Bloque Desbloqueado! completed = [accent]Completado techtree = Árbol de Tecnologías -research.list = [lightgray]investigación: +research.list = [lightgray]Investigación: research = Investigación researched = [lightgray]{0} investigado. research.progress = {0}% completado players = {0} jugadores online players.single = {0} jugador online -players.search = buscar +players.search = Buscar players.notfound = [gray]No se encontraron jugadores server.closing = [accent]Cerrando servidor... -server.kicked.kick = ¡Has sido expulsado del servidor! -server.kicked.whitelist = No estas en la lista blanca de aqui. -server.kicked.serverClose = El servidor ha cerrado. -server.kicked.vote = Te han expulsado por votación. Adiós! -server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza tu juego! +server.kicked.kick = ¡Te han echado del servidor! +server.kicked.whitelist = No estás en la lista blanca de este servidor. +server.kicked.serverClose = El servidor se ha cerrado. +server.kicked.vote = Has sido expulsado por votación. ¡Adiós! +server.kicked.clientOutdated = ¡Cliente desactualizado! ¡Actualiza el juego! server.kicked.serverOutdated = ¡Servidor desactualizado! ¡Pídele al anfitrión que lo actualice! -server.kicked.banned = Has sido expulsado del servidor. +server.kicked.banned = Has sido baneado en este servidor. server.kicked.typeMismatch = Este servidor no es compatible con su tipo de compilación. -server.kicked.playerLimit = Este servidor está lleno. Espera un espacio vacío. +server.kicked.playerLimit = Este servidor está lleno. Aunque siempre puedes esperar a que alguien deje un hueco... server.kicked.recentKick = Has sido expulsado recientemente.\nEspera para poder conectarte de nuevo. server.kicked.nameInUse = Ya hay alguien con ese\nnombre en el servidor. -server.kicked.nameEmpty = Tu nombre debe por lo menos contener un carácter o número. -server.kicked.idInUse = ¡Ya estás en el servidor! Conectarse con dos cuentas no está permitido. +server.kicked.nameEmpty = Tu nombre debe contener al menos un carácter o número. +server.kicked.idInUse = ¡Ya estás en el servidor! No está permitido conectarse con dos cuentas. server.kicked.customClient = Este servidor no soporta versiones personalizadas. Descarga una versión oficial. server.kicked.gameover = ¡Fin del juego! server.kicked.serverRestarting = Se esta reiniciando el servidor. server.versions = Tu versión:[accent] {0}[]\nVersión del servidor:[accent] {1}[] -host.info = El botón [accent]host[] crea un servidor en el puerto [scarlet]6567[]. \nCualquier persona en la misma [lightgray]wifi o red local[] debería poder ver tu servidor en la lista de servidores.\n\nSi quieres que cualquier persona se pueda conectar de cualquier lugar por IP, la [accent]asignación de puertos[] es requerida.\n\n[lightgray]Nota: Si alguien experimenta problemas conectándose a tu partida LAN, asegúrate de permitir a Mindustry acceso a tu red local mediante la configuración de tu firewall. -join.info = Aquí, puedes escribir la [accent]IP de un server[] para conectarte, o descubrir servidores de [accent]red local[] para conectarte.\nLAN y WAN es soportado para jugar en multijugador.\n\n[lightgray]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP. +host.info = El botón [accent]host[] crea un servidor en el puerto [scarlet]6567[]. \nCualquier persona en la misma [lightgray]wifi []o [lightgray]red local[] debería poder ver tu servidor en la lista de servidores.\n\nSi quieres que cualquier persona se pueda conectar de cualquier lugar mediante IP, se requiere [accent]asignación de puertos[].\n\n[lightgray]Nota: Si alguien experimenta problemas conectándose a tu partida LAN, asegúrate de permitir a Mindustry acceso a tu red local mediante la configuración de tu firewall. +join.info = Aquí, puedes escribir la [accent]IP de un servidor[] para conectarte, o descubrir servidores en tu [accent]red local[] para conectarte.\nTambién se puede jugar multijugador en redes LAN y WAN.\n\n[lightgray]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP. hostserver = Crear Servidor invitefriends = Invitar Amigos hostserver.mobile = Crear\nJuego host = Servidor hosting = [accent]Abriendo servidor... hosts.refresh = Actualizar -hosts.discovering = Descubrir partidas LAN -hosts.discovering.any = Descubrir juegos +hosts.discovering = Buscando partidas en LAN... +hosts.discovering.any = Buscando partidas server.refreshing = Actualizando servidor... -hosts.none = [lightgray]¡No se han encontrado partidas LAN! -host.invalid = [scarlet]No se ha podido conectar al anfitrión. +hosts.none = [lightgray]No se han encontrado partidas en LAN +host.invalid = [scarlet]No se ha podido conectar al anfitrión servers.local = Servidores Locales servers.remote = Servidores Remotos @@ -197,13 +197,13 @@ trace = Rastrear Jugador trace.playername = Nombre de jugador: [accent]{0} trace.ip = IP: [accent]{0} trace.id = ID Única: [accent]{0} -trace.mobile = Cliente de movíl: [accent]{0} +trace.mobile = Cliente de móvil: [accent]{0} trace.modclient = Cliente Personalizado: [accent]{0} invalidid = ¡ID de cliente inválida! Envía un informe del error. server.bans = Expulsiones -server.bans.none = ¡Ningún usuario ha sido expulsado! +server.bans.none = No se ha expulsado a ningún usuario aún server.admins = Administradores -server.admins.none = ¡Ningún administrador ha sido encontrado! +server.admins.none = No se ha encontrado ningún administrador server.add = Agregar Servidor server.delete = ¿Estás seguro de querer borrar este servidor? server.edit = Editar Servidor @@ -211,26 +211,26 @@ server.outdated = [crimson]¡Servidor desactualizado![] server.outdated.client = [crimson]¡Cliente desactualizado![] server.version = [lightgray]Versión: {0} server.custombuild = [accent]Versión personalizada -confirmban = ¿Estás seguro de querer banear este jugador? +confirmban = ¿Quieres banear a este jugador? confirmkick = ¿Estás seguro de querer expulsar este jugador? -confirmvotekick = ¿Estás seguro de querer hechar por votación a este jugador? -confirmunban = ¿Estás seguro de querer desbanear este jugador? -confirmadmin = ¿Estás seguro de querer hacer administrador a este jugador? -confirmunadmin = ¿Estás seguro de querer quitar los permisos de administrador a este jugador? +confirmvotekick = ¿Estás de acuerdo en expulsar este jugador? +confirmunban = ¿Quieres desbanear a este jugador? +confirmadmin = ¿Quieres hacer administrador a este jugador? +confirmunadmin = ¿Quieres quitar los permisos de administrador a este jugador? joingame.title = Unirse a la partida joingame.ip = IP: disconnect = Desconectado. disconnect.error = Error en la conexión. disconnect.closed = Conexión cerrada. disconnect.timeout = Desconectado. -disconnect.data = ¡Se ha fallado la carga de datos del mundo! +disconnect.data = ¡Hubo un fallo con la carga de datos! cantconnect = No es posible unirse a la partida ([accent]{0}[]). connecting = [accent]Conectando... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! server.invalidport = ¡El número de puerto es invalido! -server.error = [crimson]Error creando el servidor: error [accent]{0} +server.error = [crimson]Error al crear el servidor: error [accent]{0} save.new = Nuevo Punto de Guardado save.overwrite = ¿Estás seguro de querer sobrescribir\neste punto de guardado? overwrite = Sobrescribir @@ -249,17 +249,17 @@ save.rename.text = Nuevo nombre: selectslot = Selecciona un Punto de Guardado. slot = [accent]Casilla {0} editmessage = Editar mensaje -save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, esto debe ser probablemente un cambio en el formato de guardado y[scarlet] no[] un error. +save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, probablemente se deba a un cambio en el formato de guardado y[scarlet] no[] un a error. empty = -on = Encendido -off = Apagado +on = ON +off = OFF save.autosave = Autoguardado: {0} save.map = Mapa: {0} save.wave = Oleada {0} -save.mode = ModoJuego: {0} +save.mode = Modo de Juego: {0} save.date = Última vez guardado: {0} save.playtime = Tiempo de juego: {0} -warning = Aviso. +warning = Aviso confirm = Confirmar delete = Borrar view.workshop = Ver en el Steam Workshop @@ -283,22 +283,22 @@ loading = [accent]Cargando... reloading = [accent]Recargando mods... saving = [accent]Guardando... -respawn = [accent][[{0}][] para respawnear en el nucleo +respawn = [accent][[{0}][] para reaparecer en el núcleo cancelbuilding = [accent][[{0}][] para limpiar el plan selectschematic = [accent][[{0}][] para seleccionar+copiar pausebuilding = [accent][[{0}][] para pausar la construcción -resumebuilding = [scarlet][[{0}][] para resumir la construcción +resumebuilding = [scarlet][[{0}][] para reanudar la construcción wave = [accent]Oleada {0} -wave.cap = [accent]Wave {0}/{1} +wave.cap = [accent]Oleada {0}/{1} wave.waiting = Oleada en {0} wave.waveInProgress = [lightgray]Oleada en progreso waiting = Esperando... waiting.players = Esperando jugadores... wave.enemies = [lightgray]{0} Enemigos Restantes wave.enemy = [lightgray]{0} Enemigo Restante -wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. -wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. +wave.guardianwarn = Se aproxima un Guardián en [accent]{0}[] oleadas. +wave.guardianwarn.one = Se aproxima un Guardián en [accent]{0}[] oleada. loadimage = Cargar Imagen saveimage = Guardar Imagen unknown = Desconocido @@ -306,9 +306,9 @@ custom = Personalizado builtin = Incorporado map.delete.confirm = ¿Estás seguro de querer borrar este mapa? ¡Recuerda que está acción no se puede deshacer! map.random = [accent]Mapa Aleatorio -map.nospawn = ¡Este mapa no tiene ningún núcleo en el cual pueda aparecer el jugador! Agrega un núcleo[accent] orange[] [white]al mapa con el editor. -map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[scarlet] red[] a este mapa en el editor. -map.nospawn.attack = ¡Este mapa no tiene núcleos para que el jugador ataque! Añade núcleos[scarlet] red[] a este mapa en el editor. +map.nospawn = ¡Este mapa no tiene ningún núcleo en que pueda aparecer el jugador! Agrega un núcleo[accent] naranja[] al mapa con el editor. +map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[scarlet] "de otro color"[] a este mapa en el editor. +map.nospawn.attack = ¡Este mapa no tiene núcleos a los que los jugadores deban atacar! Añade núcleos[scarlet] rojos[] a este mapa en el editor. map.invalid = Error cargando el mapa: archivo corrupto o inválido. workshop.update = Actualizar artículo workshop.error = Error al obtener detalles del Steam Workshop: {0} @@ -319,7 +319,7 @@ changelog = Lista de cambios (optional): eula = EULA de Steam missing = Este artículo ha sido movido o eliminado.\n[lightgray]La lista del taller ahora se ha desvinculado automáticamente. publishing = [accent]Publicando... -publish.confirm = ¿Estás seguro de que quieres publicar esto?\n\n[lightgray]¡Asegúrese de aceptar primero el EULA del taller, o sus artículos no aparecerán! +publish.confirm = ¿Estás seguro de que quieres publicar esto?\n\n[lightgray]¡Asegúrese de aceptar primero el EULA del Steam Workshop, o sus artículos no aparecerán! publish.error = Error publicando el artículo: {0} steam.error = Error al inicializar los servicios de Steam.\nError: {0} @@ -337,7 +337,7 @@ editor.generation = Generación: editor.ingame = Editar dentro del juego editor.publish.workshop = Publicar en el Steam Workshop editor.newmap = Nuevo Mapa -editor.center = Center +editor.center = Centrar workshop = Steam Workshop waves.title = Oleadas waves.remove = Borrar @@ -386,7 +386,7 @@ editor.savemap = Guardar Mapa editor.saved = ¡Guardado! editor.save.noname = ¡Tu mapa no tiene un nombre! Pon uno en el menú 'Info del Mapa'. editor.save.overwrite = ¡Tu mapa sobrescribe uno ya incorporado! Elige un nombre diferente en el menú 'Info del Mapa'. -editor.import.exists = [scarlet]¡No se ha podido importar:[] un mapa incorporado con el nombre '{0}' ya existe! +editor.import.exists = [scarlet]¡No se ha podido importar:[] ya existe un mapa incorporado con el nombre '{0}'. editor.import = Importar... editor.importmap = Importar Mapa editor.importmap.description = Importar un mapa ya existente From 224cd7bb444b026acbb86b3d6998ef1c6e58a8b7 Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Thu, 19 Nov 2020 08:50:31 +0700 Subject: [PATCH 003/162] changed boss.health and new lines addition "Darah Bos" to "Darah Guardian" indev.campaign and interplanetary-accelerator planetaryTerminal sector --- core/assets/bundles/bundle_in_ID.properties | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 1e87e96419..e2d2b48725 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -24,6 +24,7 @@ highscore = [accent]Rekor Baru! copied = Tersalin. indevpopup = [accent]v6[] saat ini dalam versi [accent]alpha[].\n[lightgray]Artinya:[]\n[scarlet]- Kampanye belum sepenuhnya selesai[]\n- Beberapa konten tidak tersedia\n - Beberapa [scarlet]Unit AI[] tidak sepenuhnya bekerja\n- Beberapa unit belum sepenuhnya selesai\n- Semua yang kamu lihat dapat berubah atau dihapus sewaktu-waktu.\n\nLaporkan bug atau crash di [accent]Github[]. indev.notready = Bagian tersebut saat ini belum siap +indev.campaign = [accent]Youve reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates. load.sound = Suara load.map = Peta @@ -504,6 +505,7 @@ loadout = Muatan resources = Sumber Daya bannedblocks = Balok yang dilarang addall = Tambah Semua +launch.from = Meluncurkan Dari: [accent]{0} launch.destination = Destinasi: {0} configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}. zone.unlocked = [lightgray]{0} terbuka. @@ -513,7 +515,7 @@ zone.objective = [lightgray]Objektif: [accent]{0} zone.objective.survival = Bertahan zone.objective.attack = Hancurkan Inti Musuh add = Menambahkan... -boss.health = Darah Bos +boss.health = Darah Guardian connectfail = [scarlet]Gagal menyambung ke server:\n\n[accent]{0} error.unreachable = Server tak terjangkau.\nApakah alamatnya benar? @@ -579,6 +581,7 @@ sector.fungalPass.name = Lintasan Jamur sector.biomassFacility.name = Pabrik Sintesis Biomassa sector.windsweptIslands.name = Pulau Bersemilir sector.extractionOutpost.name = Pos Ekstraksi +sector.planetaryTerminal.name = Planetary Launch Terminal sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Beberapa sumber daya dapat dikumpulkan.\nKumpulkan timah dan tembaga sebanyak yang kamu bisa.\nMulai dari sini. sector.frozenForest.description = Disini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nHasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -1212,6 +1215,7 @@ block.overdrive-dome.name = Kubah Proyeksi Percepat block.block-forge.name = Pemadu Blok block.block-loader.name = Pemuat Blok block.block-unloader.name = Pembongkar Blok +block.interplanetary-accelerator.name = Interplanetary Accelerator block.switch.name = Saklar block.micro-processor.name = Prosesor Mikro @@ -1422,6 +1426,7 @@ block.memory-cell.description = Menyimpan informasi untuk prosesor. block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar. block.logic-display.description = Menampilkan grafik sembarang dari prosesor. block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar. +block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. unit.dagger.description = Menembak musuh terdekat dengan amunisi standar. unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya. From 7515d1aca7f70f08a1b6bda73b235df1496d5298 Mon Sep 17 00:00:00 2001 From: Quick-Korc <68910156+Quick-korkc@users.noreply.github.com> Date: Thu, 19 Nov 2020 13:32:21 +0700 Subject: [PATCH 004/162] New entity translate and minor change --- core/assets/bundles/bundle_in_ID.properties | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index e2d2b48725..097bde8d99 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -24,7 +24,7 @@ highscore = [accent]Rekor Baru! copied = Tersalin. indevpopup = [accent]v6[] saat ini dalam versi [accent]alpha[].\n[lightgray]Artinya:[]\n[scarlet]- Kampanye belum sepenuhnya selesai[]\n- Beberapa konten tidak tersedia\n - Beberapa [scarlet]Unit AI[] tidak sepenuhnya bekerja\n- Beberapa unit belum sepenuhnya selesai\n- Semua yang kamu lihat dapat berubah atau dihapus sewaktu-waktu.\n\nLaporkan bug atau crash di [accent]Github[]. indev.notready = Bagian tersebut saat ini belum siap -indev.campaign = [accent]Youve reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates. +indev.campaign = [accent]Kamu telah mencapai batas dari kampanye![]\n\nHanya sejauh ini yang kamu bisa. Perjalanan antarplanet akan ditambahkan di masa mendatang. load.sound = Suara load.map = Peta @@ -569,19 +569,19 @@ planet.sun.name = Matahari sector.impact0078.name = Impact 0078 sector.groundZero.name = Titik Nol sector.craters.name = Kawah -sector.frozenForest.name = Hutan Beku -sector.ruinousShores.name = Pantai Hancur +sector.frozenForest.name = Hutan Yang Beku +sector.ruinousShores.name = Pantai Yang Hancur sector.stainedMountains.name = Gunung Bernoda sector.desolateRift.name = Retakan Terpencil sector.nuclearComplex.name = Kompleks Produksi Nuklir sector.overgrowth.name = Pertumbuhan sector.tarFields.name = Lahan Tar sector.saltFlats.name = Dataran Garam -sector.fungalPass.name = Lintasan Jamur +sector.fungalPass.name = Lintasan Spora sector.biomassFacility.name = Pabrik Sintesis Biomassa sector.windsweptIslands.name = Pulau Bersemilir sector.extractionOutpost.name = Pos Ekstraksi -sector.planetaryTerminal.name = Planetary Launch Terminal +sector.planetaryTerminal.name = Pusat Peluncuran Planet sector.groundZero.description = Lokasi yang optimal untuk bermain satu kali lagi. Sangat sedikit musuh. Beberapa sumber daya dapat dikumpulkan.\nKumpulkan timah dan tembaga sebanyak yang kamu bisa.\nMulai dari sini. sector.frozenForest.description = Disini, dekat dengan gunung, spora sudah menyebar. Suhu dingin tidak dapat menahannya.\n\nHasilkan listrik. Bangun generator pembakar. Pelajari cara menggunakan mender. @@ -928,7 +928,7 @@ rules.enemycorebuildradius = Dilarang Membangun Radius Inti Musuh :[lightgray] ( rules.wavespacing = Jarak Gelombang:[lightgray] (detik) rules.buildcostmultiplier = Multiplikasi Harga Bangunan rules.buildspeedmultiplier = Multiplikasi Waktu Pembuatan Bangunan -rules.deconstructrefundmultiplier = Penggembalian Dana Mendekonstruksi Blok +rules.deconstructrefundmultiplier = Penggembalian Bahan Mendekonstruksi Blok rules.waitForWaveToEnd = Gelombang menunggu musuh rules.dropzoneradius = Radius Titik Muncul:[lightgray] (Blok) rules.unitammo = Unit Membutuhkan Amunisi @@ -1215,7 +1215,7 @@ block.overdrive-dome.name = Kubah Proyeksi Percepat block.block-forge.name = Pemadu Blok block.block-loader.name = Pemuat Blok block.block-unloader.name = Pembongkar Blok -block.interplanetary-accelerator.name = Interplanetary Accelerator +block.interplanetary-accelerator.name = Akselerator Antarplanet block.switch.name = Saklar block.micro-processor.name = Prosesor Mikro @@ -1426,7 +1426,7 @@ block.memory-cell.description = Menyimpan informasi untuk prosesor. block.memory-bank.description = Menyimpan informasi untuk prosesor. Berkapasitas besar. block.logic-display.description = Menampilkan grafik sembarang dari prosesor. block.large-logic-display.description = Menampilkan grafik sembarang dari prosesor. Lebih besar. -block.interplanetary-accelerator.description = A massive electromagnetic railgun tower. Accelerates cores to escape velocity for interplanetary deployment. +block.interplanetary-accelerator.description = Sebuah menara railgun elektromagnetik. Mempercepat Inti dengan kecepatan tinggi untuk peluncuran antarplanet. unit.dagger.description = Menembak musuh terdekat dengan amunisi standar. unit.mace.description = Menyerang musuh terdekat dengan cara membakarnya. From c3df430a4e00d3667f7477a3c3697cf488d03ae4 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 19 Nov 2020 14:56:12 +0100 Subject: [PATCH 005/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 475 +++++++++++------------ 1 file changed, 237 insertions(+), 238 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index dd2e03f2cc..94702f042b 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -229,7 +229,7 @@ connecting = [accent]Conectando... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! -server.invalidport = ¡El número de puerto es invalido! +server.invalidport = ¡El número de puerto no es valido! server.error = [crimson]Error al crear el servidor: error [accent]{0} save.new = Nuevo Punto de Guardado save.overwrite = ¿Estás seguro de querer sobrescribir\neste punto de guardado? @@ -342,7 +342,7 @@ workshop = Steam Workshop waves.title = Oleadas waves.remove = Borrar waves.never = -waves.every = cada +waves.every = waves.waves = oleada(s) waves.perspawn = por lugar de aparición waves.shields = escudo/oleadas @@ -357,9 +357,9 @@ waves.copied = Oleadas copiadas. waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto. -wavemode.counts = Cuentas -wavemode.totals = Totales -wavemode.health = Salud +wavemode.counts = limitadas +wavemode.totals = totales +wavemode.health = por salud editor.default = [lightgray] @@ -413,41 +413,41 @@ toolmode.replace = Sustituir toolmode.replace.description = Solo dibuja en bloques sólidos. toolmode.replaceall = Sustituir Todo toolmode.replaceall.description = Sustituye todos los bloques del mapa. -toolmode.orthogonal = Ortogonal +toolmode.orthogonal = Perpendicular toolmode.orthogonal.description = Solo dibuja líneas ortogonales. toolmode.square = Cuadrado toolmode.square.description = Pincel cuadrado. toolmode.eraseores = Borrar Vetas toolmode.eraseores.description = Solo borra vetas. -toolmode.fillteams = Llenar Equipos -toolmode.fillteams.description = Llena equipos en vez de bloques. +toolmode.fillteams = Rellenar Equipos +toolmode.fillteams.description = Rellena equipos en lugar de bloques. toolmode.drawteams = Dibujar Equipos -toolmode.drawteams.description = Dibuja equipos en vez de bloques. +toolmode.drawteams.description = Dibuja equipos en lugar de bloques. filters.empty = [lightgray]¡No hay filtros! Añade uno con el botón de abajo. filter.distort = Distorsionar filter.noise = Ruido -filter.enemyspawn = Elegir punto de aparición enemigo -filter.spawnpath = Path To Spawn +filter.enemyspawn = Punto de aparición enemigo +filter.spawnpath = Ruta hasta el punto de aterrizaje filter.corespawn = Elegir Núcleo -filter.median = Median -filter.oremedian = Veta Median -filter.blend = Mezcla +filter.median = Calcular probabilidades de generación +filter.oremedian = Probabilidad de vetas +filter.blend = Mezclar filter.defaultores = Vetas por defecto -filter.ore = Vetas -filter.rivernoise = Ruido de rio +filter.ore = Vetas de Minerales +filter.rivernoise = Añadir Río filter.mirror = Espejo filter.clear = Despejar filter.option.ignore = Ignorar filter.scatter = Dispersar filter.terrain = Terreno filter.option.scale = Escala -filter.option.chance = Chance +filter.option.chance = Probabilidad filter.option.mag = Magnitud filter.option.threshold = Umbral filter.option.circle-scale = Escala del círculo -filter.option.octaves = Octaves -filter.option.falloff = Caída +filter.option.octaves = Continuidad +filter.option.falloff = Aterrizaje filter.option.angle = Ángulo filter.option.amount = Cantidad filter.option.block = Bloque @@ -456,7 +456,7 @@ filter.option.flooronto = Suelo objetivo filter.option.target = Target filter.option.wall = Muro filter.option.ore = Veta -filter.option.floor2 = Piso secundario +filter.option.floor2 = Terreno secundario filter.option.threshold2 = Umbral secundario filter.option.radius = Radio filter.option.percentile = Porcentaje @@ -470,12 +470,12 @@ load = Cargar save = Guardar fps = FPS: {0} ping = Ping: {0} ms -language.restart = Por favor reinicia el juego para que los cambios del idioma tengan efecto. +language.restart = Reinicia el juego para que los cambios en el idioma tengan efecto. settings = Ajustes tutorial = Tutorial -tutorial.retake = Volver a hacer tutorial +tutorial.retake = Volver a jugar el tutorial editor = Editor -mapeditor = Editor de Mapa +mapeditor = Editor de Mapas abandon = Abandonar abandon.text = Esta zona y sus recursos se perderán ante el enemigo. @@ -483,18 +483,18 @@ locked = Bloqueado complete = [lightgray]Completado: requirement.wave = Alcanzar la oleada {0} en {1} requirement.core = Destruir el núcleo enemigo en {0} -requirement.research = Research {0} -requirement.capture = Capture {0} +requirement.research = Investigar {0} +requirement.capture = Capturar {0} bestwave = [lightgray]Récord: {0} -launch.text = Launch -research.multiplayer = Only the host can research items. +launch.text = Lanzar +research.multiplayer = Solo el anfitrión de la partida puede \nrealizar investigaciones tecnologías. uncover = Descubrir configure = Configurar carga inicial -loadout = Loadout -resources = Resources +loadout = Carga Inicial +resources = Recursos bannedblocks = Bloques prohibidos addall = Añadir todo -launch.destination = Destination: {0} +launch.destination = Destino: {0} configure.invalid = La cantidad debe estar entre 0 y {0}. zone.unlocked = [lightgray]{0} desbloqueado. zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. @@ -503,7 +503,7 @@ zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobrevivir zone.objective.attack = Destruir Núcleo Enemigo add = Añadir... -boss.health = Salud del Jefe +boss.health = Jefe connectfail = [crimson]Ha fallado la conexión con el servidor: [accent]{0} error.unreachable = Servidor inaccesible. @@ -530,9 +530,9 @@ sectors.stored = Almacenado: sectors.resume = Reanudar sectors.launch = Lanzar sectors.select = Elegir -sectors.nonelaunch = [lightgray]ninguno (sun) -sectors.rename = Rename Sector -sector.missingresources = [scarlet]Insuficientes recursos +sectors.nonelaunch = [lightgray]Ninguno (Sol) +sectors.rename = Renombrar Sector +sector.missingresources = [scarlet]Recursos Insuficientes planet.serpulo.name = Serpulo planet.sun.name = Sol @@ -571,31 +571,30 @@ settings.controls = Controles settings.game = Juego settings.sound = Sonido settings.graphics = Gráficos -settings.cleardata = Limpiar Datos del Juego... -settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse! -settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente. +settings.cleardata = Eliminando Datos del Juego... +settings.clear.confirm = ¿Estas seguro de querer eliminar estos datos?\n¡Esta acción no se puede deshacer! +settings.clearall.confirm = [scarlet]¡ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego borrrará todos tus datos y se cerrará automáticamente. -settings.clearsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas? +settings.clearsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas? settings.clearsaves = Limpiar partidas guardadas -settings.clearresearch = Borrar descubrimientos -settings.clearresearch.confirm = Estas seguro? -settings.clearcampaignsaves = Borrar Guardados de campaña -settings.clearcampaignsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña? - +settings.clearresearch = Borrar Investigaciones Tecnológicas +settings.clearresearch.confirm = ¿Estas seguro? +settings.clearcampaignsaves = Borrar datos de campaña +settings.clearcampaignsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña? paused = [accent] < Pausado > clear = Limpiar banned = [scarlet]Baneado -unplaceable.sectorcaptured = [scarlet]Necesita que el sector esté capturado. +unplaceable.sectorcaptured = [scarlet]Necesitas que el sector esté capturado. yes = Sí no = No info.title = [accent]Información -error.title = [crimson]Un error ha ocurrido. -error.crashtitle = Un error ha ocurrido. - -unit.nobuild = [scarlet]La unidad no puede construir +error.title = [crimson]Ha ocurrido un error. +error.crashtitle = Ha ocurrido un error. +unit.nobuild = [scarlet]Esta unidad no puede construir lastaccessed = [lightgray]Anteriormente usado: {0} block.unknown = [lightgray]??? +stat.description = Descripción stat.input = Entrada stat.output = Salida stat.booster = Potenciador @@ -613,21 +612,21 @@ stat.size = Tamaño stat.displaysize = Tamaño mostrado stat.liquidcapacity = Capacidad de Líquidos stat.powerrange = Rango de Energía -stat.linkrange = Rango de conexión -stat.instructions = Instructions -stat.powerconnections = Conexiones maximas +stat.linkrange = Alcance de conexión +stat.instructions = Instrucciones +stat.powerconnections = Conexiones máximas stat.poweruse = Consumo de Energía stat.powerdamage = Energía/Daño stat.itemcapacity = Capacidad de Objetos -stat.memorycapacity = Memory Capacity +stat.memorycapacity = Capacidad de memoria stat.basepowergeneration = Generación de energía base stat.productiontime = Tiempo de producción stat.repairtime = Tiempo para Reparar Bloque Completamente stat.speedincrease = Aumento de Velocidad -stat.range = Rango +stat.range = Alcance stat.drilltier = Taladrables stat.drillspeed = Velocidad Base del Taladro -stat.boosteffect = Efecto del Potenciador +stat.boosteffect = Efecto de Potenciador stat.maxunits = Máximo de Unidades Activas stat.health = Vida stat.buildtime = Tiempo de construcción @@ -635,34 +634,34 @@ stat.maxconsecutive = Máximo consecutivo stat.buildcost = Coste de construcción stat.inaccuracy = Imprecisión stat.shots = Disparos -stat.reload = Recarga +stat.reload = Disparos/segundo stat.ammo = Munición -stat.shieldhealth = Salud del escudo -stat.cooldowntime = Tiempo de enfriamiento -stat.explosiveness = Explosiveness -stat.basedeflectchance = Probabilidad de desvío base -stat.lightningchance = Probabilidad de rayo +stat.shieldhealth = Escudo +stat.cooldowntime = Enfriamiento +stat.explosiveness = Explosividad +stat.basedeflectchance = Probabilidad de desvío +stat.lightningchance = Probabilidad de descarga stat.lightningdamage = Daño por rayo stat.flammability = Inflamabilidad -stat.radioactivity = Radiactividad -stat.heatcapacity = HeatCapacity +stat.radioactivity = Radioactividad +stat.heatcapacity = Resistencia temperatura stat.viscosity = Viscosidad stat.temperature = Temperatura stat.speed = Velocidad stat.buildspeed = Velocidad de construcción -stat.minespeed = Velocidad de la mina -stat.minetier = Nivel de mina -stat.payloadcapacity = Capacidad de carga útil +stat.minespeed = Velocidad de extracción +stat.minetier = Nivel de taladro +stat.payloadcapacity = Capacidad de carga stat.commandlimit = Límite de comando stat.abilities = Habilidades -skill.forcefield = Campo de fuerza -skill.repairfield = Campo de reparación -skill.statusfield = Campo de estado +skill.forcefield = Campo de Escudo +skill.repairfield = Campo de Reparación +skill.statusfield = Campo de Estado skill.unitspawn = {0} Fábrica -skill.shieldregenfield = Campo de regeneración del escudo +skill.shieldregenfield = Campo de Regeneración de Escudos -bar.drilltierreq = Se requiere un mejor taladro. +bar.drilltierreq = Se requiere un taladro mejor. bar.noresources = Recursos faltantes bar.corereq = Se requiere de un núcleo base @@ -673,7 +672,7 @@ bar.powerbalance = Energía: {0} bar.powerstored = Almacenados: {0}/{1} bar.poweramount = Energía: {0} bar.poweroutput = Salida de Energía: {0} -bar.powerlines = Connections: {0}/{1} +bar.powerlines = Conexiones: {0}/{1} bar.items = Objetos: {0} bar.capacity = Capacidad: {0} bar.unitcap = {0} {1}/{2} @@ -685,24 +684,24 @@ bar.progress = Progreso de construcción bar.input = Entrada bar.output = Salida -units.processorcontrol = [lightgray]Processor Controlled +units.processorcontrol = [lightgray]Procesador Controlado -bullet.damage = [stat]{0}[lightgray] daño +bullet.damage = [stat]{0}[lightgray] Daño bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas bullet.incendiary = [stat]Incendiaria bullet.homing = [stat]Rastreadora bullet.shock = [stat]Electrizante bullet.frag = [stat]Explosiva -bullet.knockback = [stat]{0}[lightgray]Retroceso -bullet.pierce = [stat]{0}[lightgray]x pierce -bullet.infinitepierce = [stat]pierce +bullet.knockback = [stat]{0}[lightgray]Empuje +bullet.pierce = [stat]{0}[lightgray]x Penetración +bullet.infinitepierce = [stat]Penetrante bullet.freezing = [stat]Congelación bullet.tarred = [stat]Relantizado bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munición bullet.reload = [stat]{0}[lightgray]x recarga unit.blocks = bloques -unit.blockssquared = blocks² +unit.blockssquared = bloques² unit.powersecond = unidades de energía/segundo unit.liquidsecond = unidades de líquido/segundo unit.itemssecond = objetos/segundo @@ -716,7 +715,7 @@ unit.perminute = /min unit.timesspeed = x velocidad unit.percent = % -unit.shieldhealth = Vida del escudo +unit.shieldhealth = Escudo unit.items = objetos unit.thousands = k @@ -727,57 +726,57 @@ category.power = Energía category.liquids = Líquidos category.items = Objetos category.crafting = Fabricación -category.function = Function +category.function = Función category.optional = Mejoras Opcionales -setting.landscape.name = Bloquear modo paisaje +setting.landscape.name = Bloquear modo horizontal setting.shadows.name = Sombras setting.blockreplace.name = Sugerir bloques al construir setting.linear.name = Filtrado Lineal -setting.hints.name = Pistas +setting.hints.name = Consejos -setting.flow.name = Mostrar tasa de flujo de recursos[scarlet] (experimental) +setting.flow.name = Mostrar tasa de flujo de recursos setting.buildautopause.name = Auto-pausar construcción -setting.animatedwater.name = Agua Animada -setting.animatedshields.name = Escudos Animados +setting.animatedwater.name = Animaciones de Terreno +setting.animatedshields.name = Animación de Escudos setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[] -setting.playerindicators.name = Indicadores de jugadores -setting.indicators.name = Indicadores de Aliados -setting.autotarget.name = Auto apuntado +setting.playerindicators.name = Indicadores de Jugadores +setting.indicators.name = Indicadores de Enemigos +setting.autotarget.name = Auto-Apuntado setting.keyboard.name = Controles de Ratón+Teclado -setting.touchscreen.name = Controles táctiles -setting.fpscap.name = Máx FPS +setting.touchscreen.name = Controles Táctiles +setting.fpscap.name = Máximos FPS setting.fpscap.none = Nada setting.fpscap.text = {0} FPS -setting.uiscale.name = Escala de UI[lightgray] (necesita reiniciar)[] -setting.swapdiagonal.name = Siempre Colocar Diagonalmente +setting.uiscale.name = Escala de Interfaz[lightgray] (necesita reiniciar)[] +setting.swapdiagonal.name = Siempre Construir Diagonalmente setting.difficulty.training = entrenamiento setting.difficulty.easy = fácil setting.difficulty.normal = normal setting.difficulty.hard = difícil setting.difficulty.insane = locura setting.difficulty.name = Dificultad: -setting.screenshake.name = Movimiento de la Pantalla -setting.effects.name = Mostrar Efectos +setting.screenshake.name = Movimiento de la pantalla +setting.effects.name = Mostrar efectos setting.destroyedblocks.name = Mostrar bloques destruidos setting.blockstatus.name = Mostrar estado de los bloques -setting.conveyorpathfinding.name = Colocación del transportador en búsqueda de caminos -setting.sensitivity.name = Sensibilidad del Control +setting.conveyorpathfinding.name = Construcción de transportadores Inteligente +setting.sensitivity.name = Sensibilidad del Mando setting.saveinterval.name = Intervalo del Autoguardado setting.seconds = {0} Segundos setting.blockselecttimeout.name = Tiempo de espera de selección de bloque setting.milliseconds = {0} milisegundos setting.fullscreen.name = Pantalla Completa setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio) -setting.fps.name = Mostrar FPS -setting.smoothcamera.name = Cámara suave +setting.fps.name = Mostrar FPS y Ping +setting.smoothcamera.name = Movimiento de cámara suave setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla) -setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento) +setting.pixelate.name = Pixelar setting.minimap.name = Mostrar Minimapa setting.coreitems.name = Mostrar elementos en el nucleo (WIP) -setting.position.name = Mostrar posición del jugador. +setting.position.name = Mostrar indicadores de posición de jugadores. setting.musicvol.name = Volumen de la Música setting.atmosphere.name = Mostrar atmosfera del planeta setting.ambientvol.name = Volumen del Ambiente @@ -785,18 +784,18 @@ setting.mutemusic.name = Silenciar Musica setting.sfxvol.name = Volumen de los efectos de sonido setting.mutesound.name = Silenciar Sonido setting.crashreport.name = Enviar informes de fallos anónimos -setting.savecreate.name = Crear puntos de guardado automáticamente -setting.publichost.name = Visibilidad del juego público +setting.savecreate.name = Autoguardar la Partida +setting.publichost.name = Visibilidad de la Partida setting.playerlimit.name = Limite de Jugadores setting.chatopacity.name = Opacidad del Chat -setting.lasersopacity.name = Opacidad de los rayos láser -setting.bridgeopacity.name = Opacidad de Puentes +setting.lasersopacity.name = Opacidad del Laser de Nodos de Energía +setting.bridgeopacity.name = Opacidad de Puentes Transportadores setting.playerchat.name = Mostrar el chat de burbuja -public.confirm = ¿Quieres hacer público tu juego?\n[lightgray]Esto se puede cambiar más tarde en Configuración->Juego->Visibilidad pública del juego. -public.beta = Recuerda que en las versiones beta del juego no puedes crear partidas públicas. -uiscale.reset = La escala de la interfaz ha sido modificada con éxito.\nPulsa "OK" para conservar esta escala.\n[scarlet]Deshaciendo los cambios y saliendo al menu en [accent] {0}[]segundos... -uiscale.cancel = Cancelar & Salir -setting.bloom.name = Brillo +public.confirm = ¿Quieres hacer pública tu partida?\n[lightgray]Esto se puede cambiar más tarde en "Configuración->Juego->Visibilidad pública de la partida". +public.beta = Recuerda que no puedes crear partidas públicas en las versiones beta del juego. +uiscale.reset = La escala de la interfaz ha sido modificada.\nPulsa "OK" para conservar esta escala.\n[scarlet]Se desharán los cambios automáticamente en [accent] {0}[] segundos... +uiscale.cancel = Cancelar y Salir +setting.bloom.name = Desenfoque de movimiento keybind.title = Cambiar accesos de teclado keybinds.mobile = [scarlet]Los accesos del teclado aquí mostrados no estan disponible en Móviles o Tablets. Solo aceptan movimiento básico. category.general.name = General @@ -807,72 +806,72 @@ command.attack = Atacar command.rally = Patrullar command.retreat = Retirarse command.idle = Esperar -placement.blockselectkeys = \n[lightgray]LLaves: [{0}, +placement.blockselectkeys = \n[lightgray]Claves: [{0}, keybind.respawn.name = Reaparecer keybind.control.name = Controlar unidad keybind.clear_building.name = Eliminar construcción -keybind.press = Presiona una tecla... +keybind.press = Pulsa una tecla... keybind.press.axis = Pulsa un eje o botón... keybind.screenshot.name = Captura de pantalla de Mapa -keybind.toggle_power_lines.name = Activar láser de potencia -keybind.toggle_block_status.name = Cambiar estado de los bloques +keybind.toggle_power_lines.name = Ocultar Láser de Red Eléctrica +keybind.toggle_block_status.name = Alternar estado de los bloques keybind.move_x.name = Mover x keybind.move_y.name = Mover y -keybind.mouse_move.name = Seguír al ratón +keybind.mouse_move.name = Seguír al Cursor del Ratón -keybind.pan.name = Vista panorámica -keybind.boost.name = Impulsar +keybind.pan.name = Desplazar la cámara +keybind.boost.name = Acelerar keybind.schematic_select.name = Seleccionar región -keybind.schematic_menu.name = Menu de esquemas -keybind.schematic_flip_x.name = Girar esquemático desde X -keybind.schematic_flip_y.name = Girar esquemático desde Y +keybind.schematic_menu.name = Menu de Plantillas +keybind.schematic_flip_x.name = Invertir Plantilla desde X +keybind.schematic_flip_y.name = Invertir Plantilla desde Y keybind.category_prev.name = Categoría anterior keybind.category_next.name = Siguiente categoría -keybind.block_select_left.name = Seleccionar bloque a la izquierda -keybind.block_select_right.name = Seleccionar bloque a la derecha -keybind.block_select_up.name = Seleccionar bloque hacia arriba -keybind.block_select_down.name = Seleccionar bloque hacia abajo -keybind.block_select_01.name = Seleccionar categoría / bloque 1 -keybind.block_select_02.name = Seleccionar categoría / bloque 2 -keybind.block_select_03.name = Seleccionar categoría / bloque 3 -keybind.block_select_04.name = Seleccionar categoría / bloque 4 -keybind.block_select_05.name = Seleccionar categoría / bloque 5 -keybind.block_select_06.name = Seleccionar categoría / bloque 6 -keybind.block_select_07.name = Seleccionar categoría / bloque 7 -keybind.block_select_08.name = Seleccionar categoría / bloque 8 -keybind.block_select_09.name = Seleccionar categoría / bloque 9 -keybind.block_select_10.name = Seleccionar categoría / bloque 10 -keybind.fullscreen.name = Intercambiar con Pantalla Completa +keybind.block_select_left.name = Seleccionar bloque - Izquierda +keybind.block_select_right.name = Seleccionar bloque - Derecha +keybind.block_select_up.name = Seleccionar bloque - Arriba +keybind.block_select_down.name = Seleccionar bloque - Abajo +keybind.block_select_01.name = Seleccionar Categoría/Bloque 1 +keybind.block_select_02.name = Seleccionar Categoría/Bloque 2 +keybind.block_select_03.name = Seleccionar Categoría/Bloque 3 +keybind.block_select_04.name = Seleccionar Categoría/Bloque 4 +keybind.block_select_05.name = Seleccionar Categoría/Bloque 5 +keybind.block_select_06.name = Seleccionar Categoría/Bloque 6 +keybind.block_select_07.name = Seleccionar Categoría/Bloque 7 +keybind.block_select_08.name = Seleccionar Categoría/Bloque 8 +keybind.block_select_09.name = Seleccionar Categoría/Bloque 9 +keybind.block_select_10.name = Seleccionar Categoría/Bloque 10 +keybind.fullscreen.name = Cambiar a Pantalla Completa keybind.select.name = Seleccionar keybind.diagonal_placement.name = Construcción Diagonal keybind.pick.name = Elegir bloque keybind.break_block.name = Destruir Bloque keybind.deselect.name = Deseleccionar -keybind.pickupCargo.name = Pickup Cargo -keybind.dropCargo.name = Drop Cargo -keybind.command.name = Command +keybind.pickupCargo.name = Recoger carga +keybind.dropCargo.name = Soltar carga +keybind.command.name = Ordenar keybind.shoot.name = Disparar keybind.zoom.name = Zoom keybind.menu.name = Menú keybind.pause.name = Pausa -keybind.pause_building.name = Pausar/Resumir construcción +keybind.pause_building.name = Pausar/Reanudar construcción keybind.minimap.name = Minimapa keybind.chat.name = Chat keybind.player_list.name = Lista de jugadores keybind.console.name = Consola keybind.rotate.name = Rotar keybind.rotateplaced.name = Rotar existente (mantener) -keybind.toggle_menus.name = Alternar menús -keybind.chat_history_prev.name = Historial de chat anterior -keybind.chat_history_next.name = Historial de chat siguiente -keybind.chat_scroll.name = Desplazamiento de chat -keybind.drop_unit.name = Caida de la unidad +keybind.toggle_menus.name = Ocultar menús +keybind.chat_history_prev.name = Historial de chat - Anterior +keybind.chat_history_next.name = Historial de chat - Siguiente +keybind.chat_scroll.name = Desplazar el chat +keybind.drop_unit.name = Soltar unidad keybind.zoom_minimap.name = Zoom del minimapa mode.help.title = Descripción de modos mode.survival.name = Supervivencia mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas. -mode.sandbox.name = Arenero +mode.sandbox.name = Modo Libre mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas. mode.editor.name = Editor mode.pvp.name = JcJ @@ -881,14 +880,14 @@ mode.attack.name = Ataque mode.attack.description = No hay oleadas, el objetivo es destruir la base enemiga. mode.custom = Normas personalizadas -rules.infiniteresources = Recursos Infinitos -rules.reactorexplosions = Reactor Explosions -rules.schematic = Schematics Allowed -rules.wavetimer = Temportzador de Oleadas +rules.infiniteresources = Recursos infinitos +rules.reactorexplosions = Los reactores pueden explotar +rules.schematic = Permitir Plantillas +rules.wavetimer = Temporizador de Oleadas rules.waves = Oleadas -rules.attack = Modo de Ataque -rules.buildai = Construccion de la IA -rules.enemyCheat = Recursos infinitos de la IA +rules.attack = Ataque +rules.buildai = La IA enemiga puede construir +rules.enemyCheat = La IA enemiga tiene recursos infinitos rules.blockhealthmultiplier = Multiplicador de salud de bloque rules.blockdamagemultiplier = Multiplicador de daño de bloque rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades @@ -898,7 +897,7 @@ rules.enemycorebuildradius = Radio de No-Construcción del Núcleo Enemigo:[ligh rules.wavespacing = Tiempo entre oleadas:[lightgray] (seg) rules.buildcostmultiplier = Multiplicador de coste de construcción rules.buildspeedmultiplier = Multiplicador de velocidad de construcción -rules.deconstructrefundmultiplier = Multiplicador de Devolución de Desconstrucción +rules.deconstructrefundmultiplier = Multiplicador de devolución de desconstrucción rules.waitForWaveToEnd = Las oleadas esperan a los enemigos rules.dropzoneradius = Radio de zona de caída:[lightgray] (casillas) rules.unitammo = Las unidades necesitan munición @@ -943,7 +942,7 @@ item.scrap.name = Chatarra liquid.water.name = Agua liquid.slag.name = Fundido liquid.oil.name = Petróleo -liquid.cryofluid.name = Criogénico +liquid.cryofluid.name = Líquido criogénico unit.dagger.name = Daga @@ -985,10 +984,10 @@ block.resupply-point.name = Punto de reabastecimiento block.parallax.name = Paralaje block.cliff.name = Acantilado -block.sand-boulder.name = Piedra de Arena +block.sand-boulder.name = Piedra de arena block.grass.name = Hierba block.slag.name = Escoria -block.space.name = Space +block.space.name = Espacio block.salt.name = Sal block.salt-wall.name = Muro de sal @@ -1002,17 +1001,17 @@ block.snow-boulder.name = Roca de nieve block.snow-pine.name = Pino de nieve block.shale.name = Pizarra -block.shale-boulder.name = Piedra de Pizarra +block.shale-boulder.name = Piedra de pizarra block.moss.name = Musgo block.shrubs.name = Arbustos block.spore-moss.name = Musgo de esporas block.shale-wall.name = Muro de pizarra -block.scrap-wall.name = Muro de Chatarra -block.scrap-wall-large.name = Muro de Chatarra grande -block.scrap-wall-huge.name = Muro de Chatarra muy grande -block.scrap-wall-gigantic.name = Muro de Chatarra gigante +block.scrap-wall.name = Muro de chatarra +block.scrap-wall-large.name = Muro de chatarra grande +block.scrap-wall-huge.name = Muro de chatarra muy grande +block.scrap-wall-gigantic.name = Muro de chatarra gigante block.thruster.name = Propulsor block.kiln.name = Horno block.graphite-press.name = Prensa de grafito @@ -1024,26 +1023,26 @@ block.core-foundation.name = Núcleo: Fundación block.core-nucleus.name = Núcleo: Núcleo block.deepwater.name = Aguas profundas block.water.name = Agua -block.tainted-water.name = Agua Contaminada -block.darksand-tainted-water.name = Agua Contaminada con Arena Oscura +block.tainted-water.name = Agua contaminada +block.darksand-tainted-water.name = Agua contaminada con arena oscura block.tar.name = Alquitrán block.stone.name = Piedra block.sand.name = Arena -block.darksand.name = Arena Oscura +block.darksand.name = Arena oscura block.ice.name = Hielo block.snow.name = Nieve block.craters.name = Cráteres -block.sand-water.name = Agua con Arena -block.darksand-water.name = Agua con Arena Oscura +block.sand-water.name = Agua con arena +block.darksand-water.name = Agua con arena oscura block.char.name = Carbonizado block.dacite.name = Dacita -block.dacite-wall.name = Pared de Dacita -block.dacite-boulder.name = Dacite Boulder -block.ice-snow.name = Hielo Nieve +block.dacite-wall.name = Pared de dacita +block.dacite-boulder.name = Roca de dacita +block.ice-snow.name = Hielo-Nieve block.stone-wall.name = Pared de piedra block.ice-wall.name = Pared de hielo block.snow-wall.name = Pared de nieve -block.dune-wall.name = Pared de duna +block.dune-wall.name = Pared de arena block.pine.name = Pino block.dirt.name = Tierra block.dirt-wall.name = Pared de tierra @@ -1095,7 +1094,7 @@ block.sorter.name = Clasificador block.inverted-sorter.name = Clasificador Invertido block.message.name = Mensaje block.illuminator.name = Iluminador -block.illuminator.description = Una fuente de luz pequeña, compacta y configurable. Requiere poder para funcionar. +block.illuminator.description = Una fuente de luz compacta y configurable. Requiere poder para funcionar. block.overflow-gate.name = Compuerta de Desborde block.underflow-gate.name = Compuerta de Subdesbordamiento block.silicon-smelter.name = Horno para Silicio @@ -1145,7 +1144,7 @@ block.blast-mixer.name = Mezclador de Explosivos block.solar-panel.name = Panel Solar block.solar-panel-large.name = Panel Solar Grande block.oil-extractor.name = Extractor de Petróleo -block.repair-point.name = Punto de Reparación +block.repair-point.name = Punto de Reparación de Unidades block.pulse-conduit.name = Conducto de Pulso block.plated-conduit.name = Conducto Chapado block.phase-conduit.name = Conducto de Fase @@ -1167,12 +1166,12 @@ block.surge-wall-large.name = Muro de Sobretensión grande block.cyclone.name = Ciclón block.fuse.name = Fusible block.shock-mine.name = Mina electrizante -block.overdrive-projector.name = Proyector de sobremarcha -block.force-projector.name = Proyector de fuerza +block.overdrive-projector.name = Proyector de Aceleración +block.force-projector.name = Proyector de Escudo block.arc.name = Arco block.rtg-generator.name = Generador RTG block.spectre.name = Espectro -block.meltdown.name = Fusión de Reactor +block.meltdown.name = Fusión block.foreshadow.name = Foreshadow block.container.name = Contenedor block.launch-pad.name = Pad de Lanzamiento @@ -1189,74 +1188,74 @@ block.multiplicative-reconstructor.name = Reconstructor multiplicativo block.exponential-reconstructor.name = Reconstructor exponencial block.tetrative-reconstructor.name = Reconstructor tetrativo -block.payload-conveyor.name = Transportador masivo -block.payload-router.name = Enrutador de carga útil +block.payload-conveyor.name = Transportador de carga +block.payload-router.name = Enrutador de carga block.disassembler.name = Desensamblador block.silicon-crucible.name = Crisol de silicio -block.overdrive-dome.name = Cupula de sobremarcha +block.overdrive-dome.name = Campo de Aceleración block.switch.name = Interruptor block.micro-processor.name = Micro Processador block.logic-processor.name = Procesador lógico block.hyper-processor.name = Hiperprocesador block.logic-display.name = Pantalla lógica -block.large-logic-display.name = Gran pantalla lógica -block.memory-cell.name = Celda de memoria -block.memory-bank.name = Banco de memoria +block.large-logic-display.name = Pantalla lógica grande +block.memory-cell.name = Unidad de memoria +block.memory-bank.name = Disco de memoria team.blue.name = Azul -team.crux.name = rojo -team.sharded.name = naranja +team.crux.name = Rojo +team.sharded.name = Naranja team.orange.name = Naranja -team.derelict.name = derelicto +team.derelict.name = Abandonado team.green.name = Verde -team.purple.name = Púrpura +team.purple.name = Morado tutorial.next = [lightgray] -tutorial.intro = Has entrado en el[scarlet]Tutorial de Mindustry.[]\nComienza[accent]minando cobre[]. Toca en una veta de cobre cercana al núcleo para hacer esto.\n\n[accent]{0}/{1} cobre -tutorial.intro.mobile = Has entrado en el[scarlet] Tutorial de Mindustry.[]\nArrastra la pantalla para moverte.\n[accent]Pellizca con 2 dedos [] para alejar y acercar la vista.\nComienza por[accent] minar cobre[]. Muevete cerca de el, luego toca una veta de mineral de cobre cerca de su núcleo para hacer esto.\n\n[accent]{0}/{1} cobre -tutorial.drill = Minar manualmente es ineficiente.\nLos [accent]taladros pueden minar automáticamente.\nColoca uno en una veta de cobre. -tutorial.drill.mobile = Minar manualmente no es muy eficiente.\nLos [accent]Taladros[] pueden minar automáticamente.\nToca la sección de taladros el la esquina de abajo a la derecha.\nSelecciona el[accent]taladro mecánico[].\nColócalo en una veta de cobre tocándola, después pulsa el [accent]botón de confirmación de debajo para confirmar tu selección.\nPulsa el[accent]botón "X" para cancelar la construcción. -tutorial.blockinfo = Cada bloque tiene diferentes estadísticas. Cada taladro solo puede minar ciertos minerales.\nPara comprobar la información y estadísticas de un bloque,[accent] toca el botón "?" mientras lo tienes seleccionado en el menú de construcción.[]\n\n[accent]Accede a las estadísticas del Taladro Mecánico ahora.[] -tutorial.conveyor = Las [accent]Cintas Transportadoras[] se usan para transportar recursos al núcleo.\nConstruye una línea de transportadores del taladro al núcleo. -tutorial.conveyor.mobile = Las [accent]Cintas Transportadoras[] se usan para transportar recursos al núcleo.\nConstruye una línea de transportadores del taladro al núcleo.\n[accent] Construye una línea manteniendo el dedo unos segundos[] y arrastrando hacia una dirección.\n\n[accet]{0}/{1} cintas colocadas en línea\n[ccent]]0/1 recursos transportados. -tutorial.turret = Debes construir estructuras defensivas para repeler al [lightgray]enemigo[].\nConstruye una torreta dúo cerca de tu base. -tutorial.drillturret = Los dúos requieren[accent] munición de cobre[]para disparar.\nColoca un taladro junto a la torre para darle cobre. \nTambien puedes hacer una línea de transportadores desde el taladro hasta el dúo. -tutorial.pause = Durante la batalla, puedes[accent]pausar el juego.[]\nPuedes dejar estructuras en cola mientras pausas.\n\n[accent]Pulsa Espacio para pausar. -tutorial.pause.mobile = Durante la batalla, puedes[accent] pausar el juego.[]\nPuedes dejar estructuras en cola mientras pausas.\n\n[accent]Pulsa este boton de arriba a la izquierda para pausar. -tutorial.unpause = Ahora toca Espacio otra vez para dejar de pausar. -tutorial.unpause.mobile = Ahora tócalo otra vez para dejar de pausar. -tutorial.breaking = Muchas veces hace falta destruir bloques.\n[accent]Mantén el botón derecho[] para destruir todos los bloques en una selección.[]\n\n[accent]Destruye todos los bloques de chatarra de la izquierda de tu núcleo usando selección de área. -tutorial.breaking.mobile = Muchas veces hace falta destruir bloques.\n[accent]Selecciona el modo de desonstrucción[], después toca un bloque para comenzar a romperlo.\nDestruye un área manteniendo tu dedo algunos segundos[] y arrastrando hacia una dirección.\nUsa el botón de confirmación para confirmar la destrucción.\n\n[accent]Destruye todos los bloques de chatarra de la izquierda de tu núcleo usando la selección de área.[] -tutorial.withdraw = En algunas situaciones, es necesario coger recursos directamente de bloques.\nPara hacer esto, [accent]toca un bloque[] con recursos en él, después [accent]toca el recurso[] en el inventario.\nSe pueden sacar múltiples recursos [accent]tocando y manteniendo[].\n\n[accent]Saca algo de cobre del núcleo.[] -tutorial.deposit = Deposita recursos en bloques arrastrándolos de tu nave al bloque de destino.\n\n[accent]Deposita tu cobre otra vez al núcleo.[] +tutorial.intro = Has entrado en el[scarlet]Tutorial de Mindustry.[]\nComienza[accent]minando cobre[]. Para ello, toca en una veta de cobre cercana al núcleo.\n\n[accent]{0}/{1} cobre +tutorial.intro.mobile = Has entrado en el[scarlet] Tutorial []de Mindustry.\nArrastra la pantalla para moverte.\n[accent]Pellizca con 2 dedos [] para alejar y acercar la vista.\nComienza por[accent] minar cobre[]. Para ello, aproxímate a una veta de mineral de cobre cercana al núcleo y tócala.\n\n[accent]{0}/{1} cobre +tutorial.drill = Minar manualmente es ineficiente.\nLos [accent]taladros []pueden minar automáticamente.\nColoca uno sobre una veta de cobre. +tutorial.drill.mobile = Minar manualmente no es muy eficiente.\nLos [accent]taladros []pueden minar automáticamente.\nToca la sección de taladros en la esquina inferior derecha.\nSelecciona el [accent]taladro mecánico[].\nColócalo en una veta de cobre tocándola, después pulsa el [accent]botón de confirmación[] de debajo para confirmar tu selección.\nTambién puedes pulsar el [accent]botón "X" []para cancelar la construcción. +tutorial.blockinfo = Cada bloque tiene diferentes estadísticas. Cada taladro solo puede minar ciertos minerales.\nPara comprobar la información y estadísticas de un bloque, toca el botón [accent]"?"[] mientras lo tienes seleccionado en el menú de construcción.\n\nPrueba a acceder a las [accent]estadísticas[] del Taladro Mecánico. +tutorial.conveyor = Las [accent]Cintas Transportadoras[] se usan para transportar recursos.\nConstruye una línea de transportadores del taladro al núcleo. +tutorial.conveyor.mobile = Las [accent]Cintas Transportadoras[] se usan para transportar recursos.\nConstruye una línea de transportadores del taladro al núcleo.\n[accent] Puedes construir una línea manteniendo el dedo unos segundos y arrastrando hacia una dirección.[]\n\n[accet]{0}/{1} cintas colocadas en línea\n[ccent]]0/1 recursos transportados. +tutorial.turret = Debes construir estructuras defensivas para repeler al [lightgray]enemigo[].\nConstruye una torreta "dúo" cerca de tu base. +tutorial.drillturret = Los dúos requieren[accent] munición de cobre[] para disparar.\nColoca un taladro junto a la torre para suministrarle cobre. \nTambien puedes hacer una línea de transportadores desde el taladro hasta el dúo. +tutorial.pause = Durante la batalla, puedes [accent]pausar el juego.[]\nPuedes dejar estructuras en cola mientras está pausado.\n\n[accent]Pulsa Espacio para pausar. +tutorial.pause.mobile = Durante la batalla, puedes[accent] pausar el juego.[]\nPuedes dejar estructuras en cola mientras está pausado.\n\n[accent]Pulsa este boton de arriba a la izquierda para pausar.[] +tutorial.unpause = Ahora pulsa Espacio otra vez para reanudar. +tutorial.unpause.mobile = Ahora púlsalo otra vez para reanudar. +tutorial.breaking = En muchas ocasiones, será necesario destruir bloques.\n[accent]Mantén el botón derecho[] para deconstruir todos los bloques en una selección.[]\n\n[accent]Deconstruye todos los bloques de chatarra de la izquierda de tu núcleo usando selección de área. +tutorial.breaking.mobile = En muchas ocasiones, será necesario destruir bloques.\n[accent]Selecciona el modo de desonstrucción[], después toca un bloque para comenzar a deconstruirlo.\nDestruye un área manteniendo tu dedo algunos segundos[] y arrastrando hacia una dirección.\nUsa el botón de confirmación para confirmar la destrucción.\n\n[accent]Destruye todos los bloques de chatarra de la izquierda de tu núcleo usando la selección de área.[] +tutorial.withdraw =A veces, es necesario coger recursos directamente de bloques.\nPara hacer esto, [accent]toca un bloque[] con recursos en él, después [accent]toca el recurso[] en el inventario.\nSe pueden sacar múltiples recursos [accent]tocando y manteniendo[].\n\n[accent]Saca algo de cobre del núcleo.[] +tutorial.deposit = Deposita recursos en bloques arrastrándolos de tu nave al bloque de destino.\n\n[accent]Deposita tu cobre otra vez en el núcleo.[] tutorial.waves = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Construye más torretas y taladros. Mina más cobre. -tutorial.waves.mobile = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Tu nave disparará automáticamente a los enemigos.\nConstruye más torretas y taladros. Mina más cobre. +tutorial.waves.mobile = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Tu nave puede disparar automáticamente a los enemigos.\nConstruye más torretas y taladros. Mina más cobre. tutorial.launch = Una vez llegues a cierta oleada, podrás[accent]lanzar el núcleo[], dejando atrás tus defensas y los recursos en tu núcleo.[]\nEstos recursos pueden ser usados para investigar nueva tecnología.\n\n[accent]Pulsa el botón de lanzamiento. item.copper.description = Un útil material de estructura. Usado extensivamente en todo tipo de bloques. -item.lead.description = Un material básico. Usado extensivamente en electrónicos y bloques de transferencia de líquidos. +item.lead.description = Un material básico. Usado en electrónicos y bloques de transferencia de líquidos. item.metaglass.description = Un compuesto muy duro de cristal. Usado extensivamente para almacenamiento y distribución de líquidos. -item.graphite.description = Carbón mineralizado, usasdo para munición y aislamiento eléctrico. -item.sand.description = Un material común que es usado extensivamente en la fundición, para aleaciones y como fundente. +item.graphite.description = Carbón mineralizado, usado para munición y aislamiento eléctrico. +item.sand.description = Un material común que es usado sobre todo en la fundición, o para aleaciones. item.coal.description = Un combustible común y preparado para ser quemado. -item.titanium.description = Un metal raro muy ligero usado extensivamente en transportación de liquidos, taladros y aeronaves. -item.thorium.description = Un metal radiactivo, muy denso y usado en soporte de estructuras y combustible nuclear. +item.titanium.description = Un metal raro usado extensivamente en transporte de liquidos, taladros y aeronaves. +item.thorium.description = Un metal radioactivo, muy denso y usado en soporte de estructuras y combustible nuclear. item.scrap.description = Restos de estructuras y unidades antiguas. Contiene pequeñas cantidades de muchos metales diferentes. item.silicon.description = Un semiconductor muy útil, se usa para paneles solares y muchos electrónicos complejos. item.plastanium.description = Un material dúctil y ligero usado en aeronaves y proyectiles de fragmentación. -item.phase-fabric.description = Una sustancia casi sin peso usada en electrónica avanzada y en tecnología autoreparadora. +item.phase-fabric.description = Una sustancia muy ligera usada en electrónica avanzada y en tecnología autoreparadora. item.surge-alloy.description = Una aleación avanzada con propiedades eléctricas únicas. item.spore-pod.description = Utilizado para ser convertido en petróleo, explosivos y combustible. -item.blast-compound.description = Un compuesto volátil usado en bombas y explosivos. Aunque se puede quemar como combustible, esto no es recomendable. -item.pyratite.description = Una sustancia extremadamente inflamable usada en armas incendiarias. +item.blast-compound.description = Un compuesto volátil usado en bombas y explosivos. Se puede quemar como combustible, pero no es recomendable. +item.pyratite.description = Un compuesto extremadamente inflamable usada en armas incendiarias. liquid.water.description = Usada comúnmente para enfriar máquinas y para procesar residuos. liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o expulsado a unidades enemigas como arma. -liquid.oil.description = Puede ser quemado, explotado o como un enfriador. -liquid.cryofluid.description = El líquido más eficiente pra enfriar las cosas. +liquid.oil.description = Puede ser quemado, explotado o usado como un enfriador. +liquid.cryofluid.description = El líquido más eficiente para enfriar cosas. block.message.description = Almacena un mensaje. Puedes usarlo para comunicarte con aliados o dejar recordatorios. block.graphite-press.description = Comprime carbón en piezas de grafito puro. @@ -1275,12 +1274,12 @@ block.spore-press.description = Comprime esporas en petróleo. block.pulverizer.description = Despedaza la piedra en arena. Útil cuando no hay arena natural. block.coal-centrifuge.description = Solidifica petróleo en piezas de carbón. block.incinerator.description = Se deshace de cualquier líquido o material producido en exceso. -block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Sandbox. -block.power-source.description = Da energía infinita. Solo disponible en el modo Sandbox. -block.item-source.description = Hace aparecer minerales de forma infinita. Solo disponible en el modo Sandbox. -block.item-void.description = Destruye cuanquier objeto que entra en él. Solo disponible en el modo Sandbox. -block.liquid-source.description = Da líquido infinito. Solo disponible en el modo Sandbox. -block.liquid-void.description = Elimina cualquier liquido que entra en él. Solo disponible en el modo Sandbox. +block.power-void.description = Elimina toda la energía que se le da. Solo en disponible en el modo Libre. +block.power-source.description = Da energía infinita. Solo disponible en el modo Libre. +block.item-source.description = Hace aparecer minerales de forma infinita. Solo disponible en el modo Libre. +block.item-void.description = Destruye cuanquier objeto que entra en él. Solo disponible en el modo Libre. +block.liquid-source.description = Da líquido infinito. Solo disponible en el modo Libre. +block.liquid-void.description = Elimina cualquier liquido que entra en él. Solo disponible en el modo Libre. block.copper-wall.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas. block.copper-wall-large.description = Un bloque defensivo barato.\nÚtil para defender el núcleo y las torres en las primeras oleadas.\nOcupa múltiples casillas. block.titanium-wall.description = Un bloque defensivo moderadamente fuerte.\nProporciona protección moderada contra los enemigos. @@ -1302,7 +1301,7 @@ block.force-projector.description = Crea un área de fuerza hexagonal alrededor block.shock-mine.description = Daña enemigos que pisan a mina. Casi invisible al enemigo. block.conveyor.description = Bloque de transporte básico. Mueve objetos hacia adelante y los deposita automáticamente en torres o fábricas. Rotable. block.titanium-conveyor.description = Bloque de transporte avanzado. Mueve objetos más rápido que los transportadores estándar. -block.plastanium-conveyor.description = Mueve ítems por lotes.\nAcepta ítems por detrás, y los descarga en tres direcciones hacia el frente, como un enrutador. +block.plastanium-conveyor.description = Mueve objetos por lotes.\nAcepta objetos por detrás, y los descarga en tres direcciones hacia el frente, como un enrutador. block.junction.description = Actúa como puente para dos transportadores que se cruzan. Útil en situaciones con dos diferentes transportadores transportando diferentes materiales a diferentes lugares. block.bridge-conveyor.description = Bloque avanzado de transporte. Puede transportar objetos por encima hasta 3 casillas de cualquier terreno o construcción. block.phase-conveyor.description = Bloque de transporte avanzado. Usa energía para transportar objetos a otro transportador de fase conectado a través de varias casillas. @@ -1314,58 +1313,58 @@ block.overflow-gate.description = Un enrutador que solo saca por la izquierda y block.underflow-gate.description = El opuesto de la compuerda de desborde. Solo dispensa hacia el frente si los lados están bloqueados. block.mass-driver.description = El mejor bloque de transorte. Recoge varios objetos y los dispara a otro conductor de masa en un largo rango. Requiere energía para operar. block.mechanical-pump.description = Una bomba de agua barata algo lenta, pero funciona sin energía. -block.rotary-pump.description = Una bomba de agua algo mas avanzada. Bombea más líquido, pero requiere energía. -block.thermal-pump.description = La mejor bomba. Utiliza energía. +block.rotary-pump.description = Una bomba algo mas avanzada. Bombea más líquido, pero requiere energía. +block.thermal-pump.description = La mejor bomba de líquidos. Utiliza energía. block.conduit.description = Bloque de transporte de líquidos básico. Funciona como un transportador, pero con líquidos. Usado con bombas, extractores u otros conductos. block.pulse-conduit.description = Bloque de transporte de líquidos avanzado. Transporta líquidos más rápidamente y almacena más que los conductos estándar. block.plated-conduit.description = Mueve líquidos a la misma velocidad que los conductos de pulso, pero posee más armadura. No acepta líquidos de los lados por otra cosa que no sean conductos.\nGotea menos. block.liquid-router.description = Acepta líquidos de una dirección y los deja en hasta 3 direcciones equitativamente. También puede almacenar cierta capacidad de líquido. Útil para dividir los líquidos de una fuente a varios objetivos. block.liquid-tank.description = Almacena una gran cantidad de líquidos. Úsalo para crear almacenes cuando no hay una demanda constante de materiales o para asegurarse de enfriar bloques vitales. block.liquid-junction.description = Actúa como un puente para dos condusctos que se cruzan. Útil en situaciones en las que hay dos conductos con líquidos diferentes a diferentes lugares. -block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima hasta 3 casillas de cualquier terreno o construcción. -block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado por varias casillas. -block.power-node.description = Transmite energía a nodos conectados, conecta hasta cuatro fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente. -block.power-node-large.description = Tiene un radio más amplio que el nodo de energía y conecta hasta seis fuentes de energía, edificios que usan energía o nodos. -block.surge-tower.description = Un nodo con un gran alcance con menos conexiones disponibles. +block.bridge-conduit.description = Bloque avanzado de transporte de líquidos. Permite transportar líquidos por encima de hasta 3 casillas de cualquier terreno o construcción. +block.phase-conduit.description = Bloque de transporte de líquidos avanzado. Usa energía para transportar líquidos a otro conducto de fase conectado a través de varias casillas. +block.power-node.description = Transmite energía a nodos conectados, conecta hasta diez fuentes de energía, edificios que usan energía o nodos. El nodo obtendrá o transmitirá energía de cualquier bloque adyacente. +block.power-node-large.description = Tiene un radio más amplio que el nodo de energía y conecta hasta diez fuentes de energía, edificios que usan energía o nodos. +block.surge-tower.description = Un nodo con un gran alcance, pero sólo dos conexiones disponibles. block.diode.description = La energía de la batería puede fluir a través de este bloque en una sola dirección, pero solo si el otro lado tiene menos energía almacenada. block.battery.description = Guarda energía cuando hay abundancia y proporciona energía cuando hay escasez de energía mientras la batería tenga energía. block.battery-large.description = Almacena mucha más energía que una batería normal. -block.combustion-generator.description = Genera energía quemando aceite o materiales inflamables. +block.combustion-generator.description = Genera energía quemando materiales inflamables o petróleo. block.thermal-generator.description = Genera una gran cantidad de energía con la lava. block.steam-generator.description = Más eficiente que un generador de combustión, pero requiere agua adicional. -block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de piratita. +block.differential-generator.description = Genera grandes cantidades de energía. Utiliza la diferencia de temperatura entre el fluído criogenico y la quema de pirotita. block.rtg-generator.description = Un generador radioisótropo termoeléctrico que no necesita enfriamiento, pero proporciona menos energía que un reactor de torio. -block.solar-panel.description = Proporciona una pequeña cantidad de energía procedente del sol. -block.solar-panel-large.description = Genera un mucho mejor suministro de energía que un panel solar estándar, pero también es mucho más caro de construir. +block.solar-panel.description = Proporciona una pequeña cantidad de energía. +block.solar-panel-large.description = Genera un mayor suministro de energía que un panel solar estándar, pero también es mucho más caro de construir. block.thorium-reactor.description = Genera grandes cantidades de energía del torio altamente radioactivo. Necesita enfriamiento constante. Explotará violentamente si no se le aporta suficiente enfriamiento. block.impact-reactor.description = Un generador avanzado, capaz de crear cantidades masivas de energía a máxima eficiencia. Requiere una cantidad significante de energía para impulsar el comienzo del proceso. block.mechanical-drill.description = Un taladro barato. Cuando es colocado en casillas apropiadas, extrae objetos lentamente de forma indefinida. Solo es capaz de minar recursos básicos. block.pneumatic-drill.description = Un taladro mejorado, es capaz de minar titanio. Más rápido que un taladro mécanico. -block.laser-drill.description = Permite obtener minerales incluso más rápido con la tecnología láser, pero requiere energía. Además, se puede obtener torio radioactivo con este taladro. +block.laser-drill.description = Su tecnología láser le permite obtener minerales incluso más rápido, pero requiere energía. Además, se puede obtener torio radioactivo con este taladro. block.blast-drill.description = El mejor taladro. Requiere grandes cantidades de energía y refrigeración. block.water-extractor.description = Extrae agua de la tierra. Úsalo cuando no haya lagos cercanos. block.cultivator.description = Cultiva concentraciones de esporas en la atmosfera a vainas. block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca. block.core-shard.description = La primera iteración de la cápsula del núcleo. Una vez destruido, todo el contacto con la región es perdido. No permitas que esto ocurra. block.core-foundation.description = La segunda versión del núcleo. Mejor blindado. Almacena más recursos. -block.core-nucleus.description = La tercera y última iteración de la cápsula del núcleo. Muy bien blindado. Almacena cantidades masivas dde recursos. -block.vault.description = Almacena una gran cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] unloader[] puede usarse para obtener objetos del almacén. -block.container.description = Almacena una pequeña cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] unloader[] puede usarse para obtener objetos del contenedor. +block.core-nucleus.description = La tercera y última iteración de la cápsula del núcleo. Muy bien blindado. Almacena cantidades masivas de recursos. +block.vault.description = Almacena una gran cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] descargador[] puede usarse para obtener los objetos almacenados. +block.container.description = Almacena una pequeña cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] descargador[] puede usarse para obtener objetos del contenedor. block.unloader.description = Descarga objetos de un contenedor, almacén o el núcleo a un transportador o directamente a un bloque adyacente. El tipo de objeto descargado puede ser cambiado tocando el descagador. block.launch-pad.description = Lanza paquetes de recursos sin necesitar lanzar con el núcleo. -block.launch-pad-large.description = Una versión mejorada del pad de lanzamiento. Almacena más recursos y los lanza más frecuentemente. +block.launch-pad-large.description = Una versión mejorada del pad de lanzamiento. Almacena más recursos y los lanza con mayor frecuencia. block.duo.description = Una torre pequeña y barata. Útil contra enemigos terrestres no demasiado fuertes. -block.scatter.description = Una torreta antiaérea de tamaño medio. Dispara fuego anti-aéreo de plomo o chatarra a las unidades enemigas. +block.scatter.description = Una torreta antiaérea de tamaño medio. Dispara proyectiles de plomo o chatarra a las unidades enemigas. block.scorch.description = Quema a cualquier enemigo terrestre cercano a él. Altamente efectivo a corto alcance. block.hail.description = Una torre de artillería pequeña de largo alcance. block.wave.description = Una torre de tamaño mediano. Dispara chorros de líquido a enemigos. Apaga el fuego en su rango de acción si recibe agua. block.lancer.description = Una torre láser anti-terrestre de tamaño mediano. Dispara y carga poderosos rayos de energía. block.arc.description = Una pequeña torre eléctrica de rango corto. Dispara arcos de electricidad a los enemigos. block.swarmer.description = Una torre de tamaño mediano que dispara misiles. Ataca a aire y tierra. Dispara misiles teledirigidos. -block.salvo.description = Una versión más grande y avanzada dela torre dúo. Dispara salvas rápidas al enemigo +block.salvo.description = Una versión más grande y avanzada de la torre dúo. Dispara ráfagas a enemigos terrestres y aéreos. block.fuse.description = Una torre grande de energía de corto alcance. Dispara tres rayos perforantes a enemigos cercanos. -block.ripple.description = Una extramadamente poderosa torre. Dispara conjuntos de balas a los enemigos en grandes distancias. -block.cyclone.description = Una torre grande anti-aérea y anti-terrestre. Dispara conjuntos explosivos de Flak a enemigos cercanos. +block.ripple.description = Una torre extramadamente poderosa. Dispara conjuntos de balas a los enemigos desde grandes distancias. +block.cyclone.description = Una torre grande anti-aérea y anti-terrestre. Dispara conjuntos fragmentados explosivos a enemigos cercanos. block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perforantes a objetivos de aire y tierra. block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. From 31d401340ce219857aa846d4f24a561ede0b1adc Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 19 Nov 2020 14:57:16 +0100 Subject: [PATCH 006/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 94702f042b..6ca86cda4c 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -386,7 +386,7 @@ editor.savemap = Guardar Mapa editor.saved = ¡Guardado! editor.save.noname = ¡Tu mapa no tiene un nombre! Pon uno en el menú 'Info del Mapa'. editor.save.overwrite = ¡Tu mapa sobrescribe uno ya incorporado! Elige un nombre diferente en el menú 'Info del Mapa'. -editor.import.exists = [scarlet]¡No se ha podido importar:[] ya existe un mapa incorporado con el nombre '{0}'. +editor.import.exists = [scarlet]¡No se ha podido importar:[] ya existe un mapa incorporado con el nombre '{0}'! editor.import = Importar... editor.importmap = Importar Mapa editor.importmap.description = Importar un mapa ya existente From ef2ff385b866846e24cf01b373dd3c83f122fe6a Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 19 Nov 2020 19:21:40 +0100 Subject: [PATCH 007/162] =?UTF-8?q?A=C3=B1adido=20el=20"cada"=20de=20nuevo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sabía que se me olvidaba algo, pero no tuve tiempo de revisarlo. --- core/assets/bundles/bundle_es.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6ca86cda4c..9523f30677 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -342,7 +342,7 @@ workshop = Steam Workshop waves.title = Oleadas waves.remove = Borrar waves.never = -waves.every = +waves.every = cada waves.waves = oleada(s) waves.perspawn = por lugar de aparición waves.shields = escudo/oleadas From c014f86f2baec9f3e2a65d044d9a8a1bcab4597a Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Fri, 20 Nov 2020 17:39:52 +0100 Subject: [PATCH 008/162] Update bundle_es.properties "Titanium" conveyor duplicated on "Plastanium" --- core/assets/bundles/bundle_es.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 9523f30677..62a4c35662 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1084,7 +1084,7 @@ block.hail.name = Granizo block.lancer.name = Lancero block.conveyor.name = Cinta Transportadora block.titanium-conveyor.name = Cinta Transportadora de Titanio -block.plastanium-conveyor.name = Cinta Transportadora de Titanio +block.plastanium-conveyor.name = Cinta Transportadora de Plastanio block.armored-conveyor.name = Cinta Transportadora Acorazada block.armored-conveyor.description = Mueve items a la misma veolcidad que una cinta de titanio, pero tiene mas defensa. No acepta entradas por los lados a menos que sean lineas transportadoras. block.junction.name = Cruce From 07b12890e8d6be298659a9344bf8559ae5be7638 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Fri, 20 Nov 2020 18:14:55 +0100 Subject: [PATCH 009/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index dad6c44fa3..9a0255191b 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -7,8 +7,8 @@ link.reddit.description = El subreddit de Mindustry link.github.description = Código fuente del juego link.changelog.description = Lista de actualizaciones link.dev-builds.description = Versiones en desarrollo inestables -link.trello.description = Tablero de Trello oficial para las características planificadas -link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y Servidor +link.trello.description = Tablón de Trello oficial para las características planificadas +link.itch.io.description = Página de itch.io, donde puedes descargar las versiones para PC link.google-play.description = Ficha en la Google Play Store link.f-droid.description = Página de F-Droid del juego link.wiki.description = Wiki oficial de Mindustry @@ -17,12 +17,13 @@ linkfail = ¡Error al abrir el enlace!\nLa URL ha sido copiada a su portapapeles screenshot = Captura de pantalla guardada en {0} screenshot.invalid = Mapa demasiado grande, no hay suficiente memoria para la captura de pantalla. gameover = Tu núcleo ha sido destruido. +gameover.disconnect = Desconectado gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! +gameover.waiting = [accent]Esperando al próximo mapa... highscore = [accent]¡Nuevo récord de puntuación! copied = Copiado. - -indev.popup = [accent]v6[] esta actualmente en [accent]alpha[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no esta totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves es probable que sea cambiado o removido.\n\nReporta bugs o crasheos en [accent]Github[]. -indev.notready = Esta parte del juego no esta lista todavia. +indev.popup = [accent]v6[] esta actualmente en [accent]alpha[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no esta totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves podría ser cambiado o eliminado.\n\nReporta bugs o crasheos en [accent]Github[]. +indev.notready = Esta parte del juego no esta lista todavía. load.sound = Sonidos From 410c609785fa17b0cefaf05c95c611132a95febc Mon Sep 17 00:00:00 2001 From: Quick-Korc <68910156+Quick-korkc@users.noreply.github.com> Date: Sat, 21 Nov 2020 13:23:07 +0700 Subject: [PATCH 010/162] Better turret desc --- core/assets/bundles/bundle_in_ID.properties | 32 ++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 097bde8d99..f83c46446e 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -1386,21 +1386,21 @@ block.container.description = Menyimpan semua tipe item. [lightgray] pembongkar block.unloader.description = Mengeluarkan item dari kontainer, gudang atau inti kedalam pengantar atau langsung ke blok yang dituju. Tipe item yang dimuat bisa diganti dengan mengetuk pembongkar muatan. block.launch-pad.description = Meluncurkan beberapa item tanpa meninggalkan tempat. block.launch-pad-large.description = Sebuah alas luncur yang ditingkatkan. Menyimpan lebih banyak item dan lebih sering meluncur. -block.duo.description = menara yang murah nan kecil. Berguna melawan unit darat. -block.scatter.description = Menara Anti-Udara berukuran sedang. Melempar gumpalan timah atau kepingan ke unit musuh. -block.scorch.description = Membakar musuh yang dekat. Sangat efektif di jarak dekat. -block.hail.description = Menara meriam kecil. -block.wave.description = Menara penembak beruntun ukuran sedang yang menembak gelembung air. -block.lancer.description = Menara ukuran sedang yang menembak sinar listrik. -block.arc.description = Menara kecil jarak dekat ini menembak listrik secara acak ke arah musuh. -block.swarmer.description = Menara ukuran sedang yang menembak misil bertubi-tubi. -block.salvo.description = Menara ukuran sedang yang menembak pelurunya secara serentak. -block.fuse.description = Menara besar ini menembak sinar pendek yang kuat. -block.ripple.description = Menara meriam besar yang menembak beberapa peluru sekaligus. -block.cyclone.description = Menara penembak beruntun besar. -block.spectre.description = Menara besar yang menembak dua peluru kuat sekaligus. -block.meltdown.description = Menara besar ini menembak sinar panjang yang kuat. -block.foreshadow.description = Menembak laser besar dalam jarak yang jauh ke satu target. +block.duo.description = Menembakkan peluru bergantian ke musuh. +block.scatter.description = Menembakkan gumpalan timah, rongsokan atau metaglass ke musuh udara. +block.scorch.description = Membakar musuh darat yang dekat dengannya. Sangat efektif dalam jarak dekat. +block.hail.description = Menembakkan peluru kecil ke musuh darat dari jarak jauh. +block.wave.description = Menembakkan aliran cairan ke musuh. Secara otomatis memadamkan api saat disuplai dengan air. +block.lancer.description = Mengisi dan menembakkan sinar energi yang kuat ke target darat. +block.arc.description = Menembak petir ke musuh darat. +block.swarmer.description = Menembakkan misil yang mengejar ke arah musuh. +block.salvo.description = Menembakkan peluru cepat ke arah musuh. +block.fuse.description = Menembakkan tiga penusuk tajam jarak dekat ke musuh terdekat. +block.ripple.description = Menembak cangkang berkelompok ke musuh darat dari jarak jauh. +block.cyclone.description = Menembakkan gumpalan peledak ke musuh terdekat. +block.spectre.description = Menembakkan peluru besar yang menembus lapis baja ke target udara dan darat. +block.meltdown.description = Mengisi dan menembakkan sinar laser yang terus-menerus ke musuh di sekitar. Membutuhkan pendingin untuk beroperasi. +block.foreshadow.description = Menembak baut besar jarak jauh yang hanya menembak satu target. block.repair-point.description = Terus menerus memulihkan unit terluka disekitar. block.segment.description = Merusakkan dan menghancurkan proyektil yang datang. Proyektil laser tidak akan ditargetkan. block.parallax.description = Menembak laser yang menarik target udara, juga merusaknya selama dalam proses. @@ -1417,7 +1417,7 @@ block.naval-factory.description = Memproduksi unit laut. Hasil unit dapat diguna block.additive-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat dua block.multiplicative-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat tiga. block.exponential-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat empat. -block.tetrative-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat lima. +block.tetrative-reconstructor.description = Meningkatkan unit didalamnya menjadi tingkat lima dan terakhir. block.switch.description = Sakelar yang dapat dialihkan. Status dapat dibaca dan dikontrol dengan prosesor logika. block.micro-processor.description = Menjalankan urutan instruksi logika dalam satu lingkaran. Dapat digunakan untuk mengontrol unit dan bangunan. block.logic-processor.description = Menjalankan urutan instruksi logika dalam satu lingkaran. Dapat digunakan untuk mengontrol unit dan bangunan. Lebih cepat dibandingkan prosesor mikro. From dc00870c2a007e78e74658eb40ade0e0f22c1357 Mon Sep 17 00:00:00 2001 From: Nikolass1000 <68129216+Nikolass1000@users.noreply.github.com> Date: Mon, 23 Nov 2020 01:30:57 +0100 Subject: [PATCH 011/162] Update bundle_pl.properties --- core/assets/bundles/bundle_pl.properties | 55 +++++++++++++++--------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 922c854e69..dc606bc2fb 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -899,6 +899,7 @@ content.item.name = Przedmioty content.liquid.name = Płyny content.unit.name = Jednostki content.block.name = Klocki +content.sector.name = Sektory item.copper.name = Miedź item.lead.name = Ołów @@ -1178,27 +1179,39 @@ team.derelict.name = szary team.green.name = zielony team.purple.name = fioletowy -tutorial.next = [lightgray] -tutorial.intro = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nUżyj [accent][[WASD][], aby poruszyć się.\n[accent]Przytrzymaj [[Ctrl] podczas przewijania[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź -tutorial.intro.mobile = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nPrzesuń palcem po ekranie, aby poruszyć się.\n[accent]Użyj dwóch palcy[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź -tutorial.drill = Wydobywanie ręczne nie jest efektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nKliknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[]. Umieść go na złożu miedzi, klikając.\n[accent]Kliknij prawym przyciskiem myszy[], aby przestać budować. -tutorial.drill.mobile = Wydobywanie ręczne jest nieefektywne.\n[accent]Wiertła []mogą kopać automatycznie.\nDotknij zakładkę wiertła w prawym dolnym rogu.\nWybierz[accent] wiertło mechaniczne[].\nUmieść go na złożu miedzi poprzez Stuknięcie, potem wciśnij[accent] ptaszek[] na dole by potwierdzić wybór.\nNaciśnij przycisk[accent] X[] by anulować budowe. -tutorial.blockinfo = Każdy blok ma inne statystyki. Każde wiertło może kopać tylko wybrane rudy.\nBy sprawdzić informacje i statystyki bloku,[accent] kliknij przycisk "?" podczas jego wyboru w menu budowy.[]\n\n[accent]Sprawdź teraz statystyki mechanicznego wiertła.[] -tutorial.conveyor = [accent]Przenośnik[] jest używany do transportowania przedmiotów do rdzenia.\nStwórz linie przenośników z wierteł do rdzenia.\n[accent]Przytrzymaj przycisk myszy by położyć w linii.[]\nPrzytrzymaj[accent] CTRL[] podczas wybierania linii, by budować po skosie.\n\n[accent]{0}/{1} Przenośniki położone w linii\n[accent]0/1 Przedmioty dostarczone -tutorial.conveyor.mobile = [accent]Przenośnik[] jest używany do transportowania przedmiotów do rdzenia.\nStwórz linie przenośników z wierteł do rdzenia.\n[accent] Zbuduj w linii poprzez przytrzymanie palcem przez moment[] i przesunięcie w którymś kierunku.\n\n[accent]{0}/{1} Przenośniki położone w linii\n[accent]0/1 Przedmioty dostarczone -tutorial.turret = Kiedy przedmiot dociera do rdzenia, może zostać użyty do budowy.\nPamiętaj że nie każdy przedmiot może zostać użyty do budowy.\nprzedmioty które nie są używane do budowy, takie jak[accent] Węgiel[] lub[accent] złom[], nie moga zostać wprowadzone do rdzenia.\nStruktury obronne muszą zostać zbudowane by odeprzeć[lightgray] wroga[].\nZbuduj[accent] podwójne działko[] niedaleko swojej bazy. -tutorial.drillturret = Podwójne działka wymagają[accent] miedzianej amunicji []do strzelania.\nPołóż wiertło obok działka.\nPoprowadź przenośniki do działek by zaopatrzyć je w miedź.\n\n[accent]Amunicja dostarczona: 0/1 -tutorial.pause = Podczas gry, możesz[accent] zatrzymać grę.[]\nMożesz ustalić kolejkę budowy podczas pauzy.\n\n[accent]Naciśnij spacje by zapauzować. -tutorial.pause.mobile = Podczas gry, możesz[accent] zatrzymać grę.[]\nMożesz ustalić kolejkę budowy podczas pauzy.\n\n[accent]Nacniśnij przycisk w lewym górnym rogu by zapauzować. -tutorial.unpause = Teraz znowu naciśnij spacje by odpauzować. -tutorial.unpause.mobile = Naciśnij go znowu by odpauzować. -tutorial.breaking = Bloki często wymagają rozbiórki.\n[accent]Przytrzymaj prawy przcisk myszy[] by niszczyć wszystkie wybrane bloki.[]\n\n[accent]Zniszcz wszystkie bloki złomu na lewo od twojego rdzenia używając selekcji obszarowej. -tutorial.breaking.mobile = Bloki często wymagają rozbiórki.\n[accent]Wybierz tryb dekonstrukcji[], a następnie dotknij blok by zacząć go niszczyć.\nZdekonstruuj obszarowo poprzez przytrzymanie palcem przez moment[] i przesunięcie go w jakimś kierunku.\nNaciśnij przycisk ptaszka by potwierdzić rozbiórkę.\n\n[accent]Zniszcz wszystkie bloki złomu na lewo od twojego rdzenia używając selekcji obszarowej. -tutorial.withdraw = Czasami, konieczne jest wyjmowanie przedmiotów prosto z bloków.\nBy tego dokonać, [accent]kliknij blok[] z przedmiotami w nim, potem [accent]kliknij przedmiot[] w inwentarzu.\nMożesz zebrać wiele przedmiotów naraz poprzez [accent]kliknięcie i przytrzymanie[].\n\n[accent]Zabierz trochę miedzi z rdzenia.[] -tutorial.deposit = Włóż przedmioty do bloków poprzez przeciągnięcie z twojego statku do danego bloku.\n\n[accent]Włóż miedź z powrotem do rdzenia .[] -tutorial.waves = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdzeń przez 2 fale.[accent] Kliknij[] by strzelać.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi. -tutorial.waves.mobile = [lightgray] Wrogowie[] nadchodzą.\n\nBroń swój rdzeń przez 2 fale. Twój statek będzie automatycznie atakował wrogów.\nZbuduj wiecej działek i wierteł. Wydobądź więcej miedzi. -tutorial.launch = Kiedy dotrzesz do określonej fali, masz możliwość[accent] wystrzelenia rdzenia[], pozostawiając struktury obronne za sobą i[accent] otrzymując wszystkie surowce znajdujące się w rdzeniu.[]\nSurowce te mogą potem zostać użyte do odkrywania nowych technologii.\n\n[accent]Naciśnij przycisk Wystrzału. +hint.skip = Pomiń +hint.desktopMove = Użyj [accent][[WASD][] by się poruszać. +hint.zoom = [accent]Przewiń[] by przybliżać lub oddlać obraz. +hint.mine = Zbliż się do \uf8c4 rudy miedzi i [accent]kliknij[] by kopać manualnie. +hint.desktopShoot = Kliknij [accent][[Lewy przycisk myszy][] by strzelać. +hint.depositItems = By przenosić przedmoty, przeciągij je ze swojego statku do rdzenia. +hint.respawn = By się odrodzić jako statek, kliknij [accent][[V][]. +hint.respawn.mobile = Przełączyłeś się na inną jednoskę/strukturę. By odrodzić się jako statek, [accent]kliknij w awatar w górnym lewym rogu.[] +hint.desktopPause = Naciśnij [accent][[Spację][] by zatrzymać lub wznowić grę. +hint.placeDrill = Wybierz \ue85e [accent]Wiertło[] w menu w prawym dolnym rogu, i wybierz wtedy \uf870 [accent]Wiertło[] i kliknij na miedzi by je postawić. +hint.placeDrill.mobile = Wybierz zakładkę z \ue85e[accent]Wiertłem[] w menu w prawym dolnym rogu, i wtedy wybierz \uf870 [accent]Wietło[] i kliknij na miedzi by je postawić.\n\nNaciśnij \ue800 [accent]znak potwierdzenia[] w dolnym prawym rogu by potwierdzić. +hint.placeConveyor = Przenośniki mogą przenosić przedmioty z wierteł. Wybierz \uf896 [accent]Przenośnik[] z zakładki \ue814 [accent]Dystrybucja[].\n\nKliknij i przeciągnij by położyć wiele przeciągników.\n[accent]Przewiń[] by obrócić. +hint.placeConveyor.mobile = Przenośniki mogą przenosić przedmioty z wierteł. Wybierz \uf896 [accent]Przenośnik[] z zakładki \ue814 [accent]Dystrybucja[].\n\nPrzytrzymaj palcem i przeciągij by położyć wiele przeciągników. +hint.placeTurret = Postaw \uf861 [accent]Działka[] by bronić się przed wrogami.\n\nDziałka potzebują amunicji - w tym wypadku, \uf838copper.\nUżyj przenośników i wierteł by je naładować. +hint.breaking = Użyj [accent]Prawego przycisku myszy[] i przeciągnij by zniszczyć bloki. +hint.breaking.mobile = Aktywuj \ue817 [accent]ikonę młota[] w dolnym prawym rogu by zniszczyć bloki.\n\nPrzytrymaj swój palec i przeciągij by wybrać wiele bloków do zniszczenia. +hint.research = Klikij przycisk \ue875 [accent]Badań[] by odkrwyać nowe technologie. +hint.research.mobile = Użyj przycisku \ue875 [accent]Badań[] w \ue88c [accent]Menu[] by odkrwyać nowe technologie. +hint.unitControl = Przytrzymaj [accent][[Lewy CTRL][] i [accent]kliknij[] to control by kontrolować sojusznicze jednostki i działka. +hint.unitControl.mobile = [accent][Kliknij dwukrotnie[] by kontrolować sojusznicze jednostki i działka. +hint.launch = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] wybierając \ue827 [accent]Mape[] w dolnym prawym rogu. +hint.launch.mobile = Gdy zebrałeś wystarczająco materiałów możesz [accent]Wystrzelić[] do pobliskich sektorów klikając w \ue827 [accent]Mape[] w \ue88c [accent]Menu[]. +hint.schematicSelect = Przytrzymaj [accent][[F][] by kopiować i wkleić bloki.\n\n[accent][[Środkowy przycisk myszy][] kopiuje pojedyńczy blok. +hint.conveyorPathfind = Przeciągij i przytrzymaj [accent][[Lewy CTRL][] w trakcie budowania przenośników by wygenerować ścieżkę. +hint.conveyorPathfind.mobile = Włącz \ue844 [accent]tryb ukośny[] i przeciągnij w trakcie budowania przenośników by wygenerować ścieżkę. +hint.boost = Przytrzymaj [accent][[Lewy Shift][] by przelecieć ponad przeszkody.\n\nNie wszystkie jednostki tak mogą. +hint.command = Kliknij [accent][[G][] by ukształtować formacje z pobliskich jednostek. +hint.command.mobile = [accent][[Podwójne kliknięcie][] kształtuje formacje z pobliskich jednostek. +hint.payloadPickup = Kliknij [accent][[[] by podnieść małe bloki lub jednostki. +hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go podnieść. +hint.payloadDrop = Kliknij [accent]][] by opuścić podniesoiny towar. +hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesoiny towar. +hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary. item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji. item.lead.description = Podstawowy materiał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy? From bf60505584b97fddec41501fdd4a33b5f1e9da0e Mon Sep 17 00:00:00 2001 From: Nikolass1000 <68129216+Nikolass1000@users.noreply.github.com> Date: Mon, 23 Nov 2020 10:22:45 +0100 Subject: [PATCH 012/162] Update bundle_pl.properties --- core/assets/bundles/bundle_pl.properties | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index dc606bc2fb..fb874f5e08 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -600,7 +600,7 @@ stat.size = Rozmiar stat.displaysize = Wielkość Wyświetlania stat.liquidcapacity = Pojemność cieczy stat.powerrange = Zakres mocy -stat.linkrange = Link Range +stat.linkrange = Odległość połączeń stat.instructions = Instrukcje stat.powerconnections = Maksymalna ilość połączeń stat.poweruse = Zużycie prądu @@ -642,16 +642,18 @@ stat.minetier = Stopień Wydobycia stat.payloadcapacity = Ładowność stat.commandlimit = Limit Jednostek Zarządanych stat.abilities = Umiejętności +stat.canboost = Może przyspieszyć +stat.flying = Latanie ability.forcefield = Pole Mocy ability.repairfield = Pole Naprawy ability.statusfield = Pole Statusu -ability.unitspawn = {0} Fabryka +ability.unitspawn = Fabryka jednostek {0} ability.shieldregenfield = Strefa Tarczy Regenerującej bar.drilltierreq = Wymagane Lepsze Wiertło -bar.noresources = Missing Resources -bar.corereq = Core Base Required +bar.noresources = Brak Zasobów +bar.corereq = Wymagany Rdzeń bar.drillspeed = Prędkość wiertła: {0}/s bar.pumpspeed = Prędkość pompy: {0}/s bar.efficiency = Efektywność: {0}% @@ -659,7 +661,7 @@ bar.powerbalance = Moc: {0} bar.powerstored = Zmagazynowano: {0}/{1} bar.poweramount = Moc: {0} bar.poweroutput = Wyjście mocy: {0} -bar.powerlines = Connections: {0}/{1} +bar.powerlines = Połączenia: {0}/{1} bar.items = Przedmiotów: {0} bar.capacity = Pojemność: {0} bar.unitcap = {0} {1}/{2} @@ -671,8 +673,7 @@ bar.progress = Postęp Budowy bar.input = Wejście bar.output = Wyjście -units.processorcontrol = [lightgray]Procesor Kontrolowany - +units.processorcontrol = [lightgray]Kontrolowany Procesorem bullet.damage = [stat]{0}[lightgray] Obrażenia bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki bullet.incendiary = [stat]zapalający @@ -1400,8 +1401,8 @@ unit.oct.description = Broni wszystkie jednostki tarczą regeneracyjną. Może p unit.risso.description = Strzela sporą ilością pocisków i rakiet w najbliższych przeciwników. unit.minke.description = Strzela granatami i standardowymi pociskami w najbliższych przeciwników. unit.bryde.description = Strzela granatami i rakietami na dużą odległość we wrogów. -unit.sei.description = Strzela dużą ilością rakiet oraz przebijających zbroje pocisków we wrogów -unit.omura.description = Strzela przebijającym superszybkim pociskiem we wrogów ze sporej odległości. Produkuje Błyski (jednostki) +unit.sei.description = Strzela dużą ilością rakiet oraz przebijających zbroje pocisków we wrogów. +unit.omura.description = Strzela przebijającym superszybkim pociskiem we wrogów ze sporej odległości. Produkuje Błyski (jednostki). unit.alpha.description = Chroni Rdzeń: Odłamek przed wrogami. Buduje struktury. unit.beta.description = Chroni Rdzeń: Podstawa przed wrogami. Buduje struktury. unit.gamma.description = Chroni Rdzeń: Jądro przed wrogami. Buduje struktury. From ad6a3bf1504917c07f129e9bdba7533fb64e6ce8 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Mon, 23 Nov 2020 11:29:07 +0100 Subject: [PATCH 013/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 66 ++++++++++++++---------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 62a4c35662..0cccefc6ab 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -8,7 +8,7 @@ link.github.description = Código fuente del juego link.changelog.description = Lista de actualizaciones link.dev-builds.description = Versiones en desarrollo inestables link.trello.description = Tablero de Trello oficial para las características planificadas -link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y Servidor +link.itch.io.description = itch.io es la página donde puedes descargar las versiones para PC y Servidor link.google-play.description = Ficha en la Google Play Store link.f-droid.description = Página de F-Droid del juego link.wiki.description = Wiki oficial de Mindustry @@ -17,13 +17,14 @@ linkfail = ¡Error al abrir el enlace!\nLa URL ha sido copiada a su portapapeles screenshot = Captura de pantalla guardada en {0} screenshot.invalid = Mapa demasiado grande, no hay suficiente memoria para la captura de pantalla. gameover = Tu núcleo ha sido destruido. +gameover.disconnect = Desconectado gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! +gameover.waiting = [accent]Esperando el próximo mapa... highscore = [accent]¡Nuevo récord de puntuación! -copied = Copiado. - -indev.popup = [accent]v6[] esta actualmente en [accent]alpha[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no esta totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves es probable que sea cambiado o removido.\n\nReporta bugs o crasheos en [accent]Github[]. -indev.notready = Esta parte del juego no esta lista todavia. - +copied = Copiado +indev.popup = [accent]v6[] está actualmente en [accent]desarrollo[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no está totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves podría ser cambiado o eliminado.\n\nReporta bugs o cierres inesperados en [accent]Github[]. +indev.notready = Esta parte del juego no esta lista aún. +indev.campaign = [accent]Has llegado al final de la campaña![]\n\nEsto es todo lo lejos que puedes llegar por ahora.\nLos viajes interplanetarios se añadirán en futuras actualizaciones. load.sound = Sonidos load.map = Mapas @@ -59,6 +60,7 @@ schematic.rename = Renombrar plantilla schematic.info = {0}x{1}, {2} bloques schematic.disabled = [scarlet]Plantillas desactivadas.[]\nNo puedes usar plantillas en este [accent]mapa[] o [accent]servidor. +stats = Estadísticas stat.wave = Oleadas Derrotadas:[accent] {0} stat.enemiesDestroyed = Enemigos Destruidos:[accent] {0} stat.built = Estructuras Construidas:[accent] {0} @@ -68,7 +70,7 @@ stat.delivered = Recursos Lanzados: stat.playtime = Tiempo jugado:[accent] {0} stat.rank = Rango final: [accent]{0} -globalitems = [accent]Global Items +globalitems = [accent]Recursos Totales map.delete = ¿Estás seguro de que quieres borrar el mapa "[accent]{0}[]"? level.highscore = Puntuación más alta: [accent]{0} level.select = Selección de nivel @@ -87,7 +89,7 @@ position = Posición close = Cerrar website = Sitio web quit = Salir -save.quit = Guardar & Salir +save.quit = Guardar y Salir maps = Mapas maps.browse = Navegar por los Mapas continue = Continuar @@ -100,7 +102,7 @@ uploadingcontent = Subiendo Contenido uploadingpreviewfile = Subiendo Archivo de Vista Previa committingchanges = Confirmando Cambios done = Hecho -feature.unsupported = Tu dispositivo no soporta esta función. +feature.unsupported = Tu dispositivo no es compatible con esta función. mods.alphainfo = Ten en cuenta que los mods estan en versión Alpha, y[scarlet] pueden tener varios problemas[].\nReporta cualquier error que encuentres en la página de GitHub de Mindustry o Discord. mods = Mods @@ -127,18 +129,16 @@ mod.enable = Activar mod.requiresrestart = El juego se cerrará para aplicar los mods. mod.reloadrequired = [scarlet]Se requiere volver a cargar mod.import = Importar mod - mod.import.file = Importar archivo mod.import.github = Importar Mod de Github mod.jarwarn = [scarlet]Los mods JAR pueden no ser seguros.[]\n¡Asegúrate de haberlos descargado de una fuente en la que confíes! - mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod. mod.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar? mod.author = [lightgray]Autor:[] {0} mod.missing = Esta partida guardada usa mods que has actualizado recientemente o que no tienes instalados. Se puede corromper la partida guardada. ¿Quieres cargarla a pesar de ello?\n[lightgray]Mods:\n{0} mod.preview.missing = Antes de publicar este mod en el Steam Workshop, debe añadir una imagen de vista previa.\nAñada una imagen con nombre[accent] preview.png[] en la carpeta del mod e intente nuevamente. mod.folder.missing = Solo los mods en forma de carpeta se pueden publicar en el Steam Workshop.\nPara convertir cualquier mod en una carpeta, simplemente descomprima su archivo a una carpeta y elimine el zip anterior, luego reinicie su juego o vuelva a cargar sus mods. -mod.scripts.disable = Tu dispositivo no soporta los mods con scripts. Debes deshabilitar esos mods para jugar. +mod.scripts.disable = Tu dispositivo no es compatible con mods con scripts. Debes deshabilitar esos mods para jugar. about.button = Acerca del juego name = Nombre: @@ -193,6 +193,10 @@ servers.local = Servidores Locales servers.remote = Servidores Remotos servers.global = Servidores Globales +ervers.showhidden = Mostrar servidores ocultos +server.shown = Visibles +server.hidden = Ocultos + trace = Rastrear Jugador trace.playername = Nombre de jugador: [accent]{0} trace.ip = IP: [accent]{0} @@ -271,6 +275,9 @@ cancel = Cancelar openlink = Abrir Enlace copylink = Copiar Enlace back = Atrás +crash.export = Exportar Registros de errores +crash.none = No se encontraron Registros de errores. +crash.exported = Registros de errores exportados. data.export = Exportar Datos data.import = Importar Datos data.openfolder = Abrir Carpeta de Datos @@ -282,13 +289,12 @@ quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe pu loading = [accent]Cargando... reloading = [accent]Recargando mods... saving = [accent]Guardando... - respawn = [accent][[{0}][] para reaparecer en el núcleo - cancelbuilding = [accent][[{0}][] para limpiar el plan selectschematic = [accent][[{0}][] para seleccionar+copiar pausebuilding = [accent][[{0}][] para pausar la construcción resumebuilding = [scarlet][[{0}][] para reanudar la construcción +showui = Interfaz oculta.\nPulsa [accent][[{0}][] para volver a mostrar la Interfaz. wave = [accent]Oleada {0} wave.cap = [accent]Oleada {0}/{1} wave.waiting = Oleada en {0} @@ -296,9 +302,11 @@ wave.waveInProgress = [lightgray]Oleada en progreso waiting = Esperando... waiting.players = Esperando jugadores... wave.enemies = [lightgray]{0} Enemigos Restantes +wave.enemycores = [accent]{0}[lightgray] Núcleos enemigos +wave.enemycore = [accent]{0}[lightgray] Núcleo enemigo wave.enemy = [lightgray]{0} Enemigo Restante -wave.guardianwarn = Se aproxima un Guardián en [accent]{0}[] oleadas. -wave.guardianwarn.one = Se aproxima un Guardián en [accent]{0}[] oleada. +wave.guardianwarn = El Guardián llegará en [accent]{0}[] oleadas. +wave.guardianwarn.one = El Guardián se aproxima... [accent]{0}[] oleada restante. loadimage = Cargar Imagen saveimage = Guardar Imagen unknown = Desconocido @@ -356,12 +364,11 @@ waves.invalid = Oleadas inválidaas en el portapapeles. waves.copied = Oleadas copiadas. waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto. - +#Estos están en minúscula intencionadamente. wavemode.counts = limitadas wavemode.totals = totales wavemode.health = por salud - editor.default = [lightgray] details = Detalles... edit = Editar... @@ -470,6 +477,8 @@ load = Cargar save = Guardar fps = FPS: {0} ping = Ping: {0} ms +memory = Mem: {0}mb +memory2 = Mem:\n {0}mb +\n {1}mb language.restart = Reinicia el juego para que los cambios en el idioma tengan efecto. settings = Ajustes tutorial = Tutorial @@ -488,22 +497,19 @@ requirement.capture = Capturar {0} bestwave = [lightgray]Récord: {0} launch.text = Lanzar research.multiplayer = Solo el anfitrión de la partida puede \nrealizar investigaciones tecnologías. +map.multiplayer = Solo el anfitrión de la partida puede ver los sectores del mapa. uncover = Descubrir configure = Configurar carga inicial + loadout = Carga Inicial resources = Recursos bannedblocks = Bloques prohibidos addall = Añadir todo +launch.from = Lanzando desde: [accent]{0} launch.destination = Destino: {0} configure.invalid = La cantidad debe estar entre 0 y {0}. -zone.unlocked = [lightgray]{0} desbloqueado. -zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. -zone.resources = Recursos Detectados: -zone.objective = [lightgray]Objetivo: [accent]{0} -zone.objective.survival = Sobrevivir -zone.objective.attack = Destruir Núcleo Enemigo add = Añadir... -boss.health = Jefe +boss.health = Guardián connectfail = [crimson]Ha fallado la conexión con el servidor: [accent]{0} error.unreachable = Servidor inaccesible. @@ -514,13 +520,12 @@ error.alreadyconnected = Ya estás conectado. error.mapnotfound = ¡Archivo de mapa no encontrado! error.io = Error I/O de conexión. error.any = Error de red desconocido. -error.bloom = Error al cargar el bloom.\nPuede que tu dispositivo no soporte esta característica. +error.bloom = Error al cargar el efecto de bloom.\nPuede que tu dispositivo no sea compatible con esta característica. weather.rain.name = Lluvia weather.snow.name = Nieve weather.sandstorm.name = Tormenta de arena weather.sporestorm.name = Tormenta de esporas - weather.fog.name = Niebla sectors.unexplored = [lightgray]No explorado @@ -1369,3 +1374,10 @@ block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perf block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. block.segment.description = Daña y destruye proyectiles enemigos. No apunta a láseres. +# +#511//zone.unlocked = [lightgray]{0} desbloqueado. +#zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. +#zone.resources = Recursos Detectados: +#zone.objective = [lightgray]Objetivo: [accent]{0} +#zone.objective.survival = Sobrevivir +#zone.objective.attack = Destruir Núcleo Enemigo From 01a68c210c436e491ea67e3f0410e9f469c83ed9 Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Mon, 23 Nov 2020 19:31:01 +0700 Subject: [PATCH 014/162] rearranging --- core/assets/bundles/bundle_in_ID.properties | 78 ++++++++++++--------- 1 file changed, 46 insertions(+), 32 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index f83c46446e..78b380f91d 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -493,14 +493,14 @@ complete = [lightgray]Mencapai: requirement.wave = Capai gelombang {0} dalam {1} requirement.core = Hancurkan inti musuh dalam {0} requirement.research = Kembangkan {0} +requirement.produce = Produksi {0} requirement.capture = Kuasai {0} -bestwave = [lightgray]Gelombang Terbaik: {0} launch.text = Luncurkan research.multiplayer = Hanya host yang dapat meneliti item. +map.multiplayer = Hanya host yang dapat melihat sektor. uncover = Buka configure = Konfigurasi Muatan -#TODO loadout = Muatan resources = Sumber Daya bannedblocks = Balok yang dilarang @@ -508,12 +508,6 @@ addall = Tambah Semua launch.from = Meluncurkan Dari: [accent]{0} launch.destination = Destinasi: {0} configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}. -zone.unlocked = [lightgray]{0} terbuka. -zone.requirement.complete = Gelombang {0} terselesaikan:\nPersyaratan zona {1} tercapai. -zone.resources = [lightgray]Sumber Daya Terdeteksi: -zone.objective = [lightgray]Objektif: [accent]{0} -zone.objective.survival = Bertahan -zone.objective.attack = Hancurkan Inti Musuh add = Menambahkan... boss.health = Darah Guardian @@ -547,8 +541,13 @@ sectors.launch = Luncurkan sectors.select = Pilih sectors.nonelaunch = [lightgray]tidak ada sectors.rename = Ganti Nama Sektor - +sectors.enemybase = [scarlet]Markas Musuh +sectors.vulnerable = [scarlet]Vulnerable +sectors.underattack = [scarlet]Under attack! [accent]{0}% damaged +sectors.survives = [accent]Survives {0} waves +sectors.go = Mulai sector.curcapture = Sektor Ditaklukkan +sector.curlost = Sector Lost sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup sector.attacked = Sektor [accent]{0}[white] sedang diserang! sector.lost = Sektor [accent]{0}[white] telah dihancurkan! @@ -799,7 +798,6 @@ setting.conveyorpathfinding.name = Navigasi Pengantar Otomatis setting.sensitivity.name = Sensitivitas Kontroler setting.saveinterval.name = Jarak Menyimpan setting.seconds = {0} detik -setting.blockselecttimeout.name = Waktu Habis Pemilihan Blok setting.milliseconds = {0} milidetik setting.fullscreen.name = Layar Penuh setting.borderlesswindow.name = Jendela tak Berbatas[lightgray] (mungkin memerlukan mengulang kembali) @@ -888,6 +886,8 @@ keybind.menu.name = Menu keybind.pause.name = Jeda keybind.pause_building.name = Jeda/Lanjut Membangun keybind.minimap.name = Peta Kecil +keybind.planet_map.name = Peta Planet +keybind.research.name = Penelitian keybind.chat.name = Pesan keybind.player_list.name = Daftar pemain keybind.console.name = Papan Konsol @@ -908,7 +908,7 @@ mode.editor.name = Sunting mode.pvp.name = PvP mode.pvp.description = Melawan pemain lain. Membutuhkan setidaknya 2 inti berbeda warna didalam peta untuk main. mode.attack.name = Penyerangan -mode.attack.description = Menghancurkan tempat musuh. Tidak ada gelombang. Membutuhkan inti merah di dalam peta untuk main. +mode.attack.description = Hancurkan markas musuh. Membutuhkan inti merah di dalam peta untuk main. mode.custom = Pengaturan Modifikasi rules.infiniteresources = Sumber Daya Tak Terbatas @@ -1012,6 +1012,7 @@ block.resupply-point.name = Titik Pemasok Ulang block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Batu Pasir Besar +block.basalt-boulder.name = Batu Basal Besar block.grass.name = Rumput block.slag.name = Lahar block.space.name = Luar Angkasa @@ -1234,27 +1235,40 @@ team.derelict.name = abu-abu team.green.name = hijau team.purple.name = ungu -tutorial.next = [lightgray] -tutorial.intro = Kamu telah memasuki[scarlet] Tutorial Mindustry.[]\nMulai dengan[accent] menambang tembaga[]. Tekan bijih tembaga dekat intimu.\n\n[accent]{0}/{1} tembaga -tutorial.intro.mobile = Kamu telah memasuki[scarlet] Tutorial Mindustry.[]\nGesek layar untuk bergerak.\n[accent]Gunakan 2 jari [] untuk mengecilkan dan membesarkan gambar.\nMulai dengan[accent] menambang tembaga[]. Dekati tembaganya, kemudian tekan bijih tembaga untuk mulai menambang.\n\n[accent]{0}/{1} tembaga -tutorial.drill = Menambang manual tidak efisien.\n[accent]Bor []bisa menambang otomatis.\nTaruh satu di sekumpulan tembaga. -tutorial.drill.mobile = Menambang manual tidak efisien.\n[accent]Bor []dapat menambang otomatis.\nTekan kategori bor di bawah-kanan.\nPilih[accent] Bor Mekanik[].\nLetakkan di bijih tembaga, kemudian tekan tombol[accent] centang[] dibawah untuk mengonfirmasi pilihanmu.\nTekan[accent] tombol X[] untuk membatalkan rencana. -tutorial.blockinfo = Setiap blok memiliki status berbeda. Setiap bor hanya dapat menambang bijih tertentu.\nUntuk mencari info sebuah blok,[accent] Tekan tombol "?" saat memilih blok dari menu bangunan.[]\n\n[accent]Akses status Bor Mekanik sekarang.[] -tutorial.conveyor = [accent]Pengantar[] digunakan untuk transportasi item ke inti.\nJejerlah pengantar dari bor ke inti. -tutorial.conveyor.mobile = [accent]Pengantar[] digunakan untuk transportasi item ke inti.\nJejerlah pengantar dari bor ke inti.\n[accent] Buat sebuah garis dengan menekan jarimu selama beberapa detik[] dan tarik dengan suatu arah.\n\n[accent]{0}/{1} item dari garis pengantar\n[accent]0/1 terkirim -tutorial.turret = Struktur pertahanan harus dibuat untuk menangkal [lightgray] musuh[].\nBangun menara "duo" dekat intimu. -tutorial.drillturret = Menara "duo" membutuhkan[accent] amunisi tembaga []untuk menembak.\nTaruh bor didekat menara untuk mengisinya dengan tembaga. -tutorial.pause = Disaat bermain, kamu dapat[accent] menjeda game.[]\nKamu berhenti membangun selama jeda.\n\n[accent]Tekan spasi untuk jeda. -tutorial.pause.mobile = Disaat bermain, kamu dapat[accent] menjeda game.[]\nKamu berhenti membangun selama jeda.\n\n[accent]Tekan tombol ini di atas-kiri untuk jeda. -tutorial.unpause = Tekan spasi lagi untuk menghentikan jeda. -tutorial.unpause.mobile = Tekan tombol tersebut lagi untuk berhenti jeda. -tutorial.breaking = Blok biasanya butuh untuk dihapus.\n[accent]Tekan mouse-kanan[] untuk menghapus semua blok yang diseleksi.[]\n\n[accent]Hapus semua blok kepingan di sebelah intimu. -tutorial.breaking.mobile = Blok biasanya butuh untuk dihapus.\n[accent]Tekan mode dekonstraksi[], kemudian tekan blok untuk mulai menghapus.\nHapus sebuah area dengan menahan jari beberapa detik[] dan tarik ke suatu arah .\nTekan tombol centang untuk mengonfirmasi.\n\n[accent]Hapus semua blok kepingan di sebelah intimu. -tutorial.withdraw = Di beberapa situasi, mengambil item dari blok diperlukan.\nUntuk melakukan ini, [accent]tekan sebuah blok[] berisi sebuah item, kemudian [accent]tekan item itu[] dalam inventaris.\nItem dengan jumlah banyak dapat diambil[accent]dengan cara menahan[].\n\n[accent]Ambil beberapa tembaga dari inti.[] -tutorial.deposit = Setor item dari pesawatmu ke suatu blok dengan cara menarik itemnya.\n\n[accent]Setor kembali tembagamu ke inti.[] -tutorial.waves = [lightgray] Musuh[] mendatang.\n\nLindungi intimu selama 2 gelombang. Bangun lebih banyak kubah dan bor. -tutorial.waves.mobile = Para[lightgray] Musuh[] telah muncul.\n\nLindungi intimu selama 2 gelombang. Pesawatmu akan menembak musuh secara otomatis.\nBuat lebih banyak kubah dan bor. Tambang tembaga lebih banyak. -tutorial.launch = Saat kamu mencapai gelombang tertentu, kamu dapat[accent] meluncurkan intimu[], meninggalkan pertahananmu[accent] mendapatkan semua sumber daya di intimu.[]\nSumber daya ini digunakan sebagai riset teknologi.\n\n[accent]Tekan tombol meluncur. +hint.skip = Skip +hint.desktopMove = Use [accent][[WASD][] to move. +hint.zoom = [accent]Scroll[] to zoom in or out. +hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually. +hint.desktopShoot = [accent][[Left-click][] to shoot. +hint.depositItems = To transfer items, drag from your ship to the core. +hint.respawn = To respawn as a ship, press [accent][[V][]. +hint.respawn.mobile = You have switched control a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] +hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. +hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. +hint.placeDrill.mobile = Select the \ue85e[accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. +hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. +hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. +hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. +hint.breaking = [accent]Right-click[] and drag to break blocks. +hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. +hint.research = Use the \ue875 [accent]Research[] button to research new technology. +hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. +hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. +hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. +hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. +hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. +hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. +hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. +hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. +hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. +hint.command = Press [accent][[G][] to command nearby units into formation. +hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. +hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. +hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. +hint.payloadDrop = Press [accent]][] to drop a payload. +hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. +hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. +hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok. item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat. From 23c33d87c16371adb8a2db234052d367eb7519dd Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Mon, 23 Nov 2020 14:56:18 +0200 Subject: [PATCH 015/162] Update bundle_ro.properties This is not ready, hence will be a draft. ea377c6f1608aa17b1167b949aec7a44088d5333 still unfinished. Do not merge as-is. It is unfinished and untested. This is a rushed submission. I did not want to lose my progress; don't have time to finish it right now. --- core/assets/bundles/bundle_ro.properties | 27 ++++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index a88caa9aa8..a7bbe0b61c 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -552,7 +552,7 @@ sectors.enemybase = [scarlet]Bază Inamică sectors.vulnerable = [scarlet]Vulnerabil sectors.underattack = [scarlet]Sectorul e atacat! [accent]{0}% deteriorat sectors.survives = [accent]Supraviețuiește {0} valuri - +sectors.go = Start sector.curcapture = Sector Capturat sector.curlost = Sector Pierdut sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente @@ -1240,19 +1240,18 @@ team.derelict.name = abandonată team.green.name = verde team.purple.name = mov -# A NU SE TRADUCE! NU SUNT GATA! -hint.skip = Skip -hint.desktopMove = Use [accent][[WASD][] to move. -hint.zoom = [accent]Scroll[] to zoom in or out. -hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually. -hint.desktopShoot = [accent][[Left-click][] to shoot. -hint.depositItems = To transfer items, drag from your ship to the core. -hint.respawn = To respawn as a ship, press [accent][[V][]. -hint.respawn.mobile = You have switched control a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] -hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. -hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. -hint.placeDrill.mobile = Select the \ue85e[accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. +hint.skip = Treci peste +hint.desktopMove = Folosește [accent][[WASD][] ca să te miști. +hint.zoom = [accent]Cu rotița de la mouse[] poți ajusta zoomul. +hint.mine = Du-te lângă \uf8c4 minereul de cupru și [accent]fă click[] pe el pt a mina manual. +hint.desktopShoot = [accent][[Click-stânga][] pt a trage cu armele navei. +hint.depositItems = Pt a transfera materiale, trage-le din nava ta către nucleu. +hint.respawn = Pt a te regenera ca navă în nucleu, apasă [accent][[V][]. +hint.respawn.mobile = Acum controlezi o unitate/structură. Pt a te regenera ca navă în nucleu, [accent]dă click pe avatarul din colțul din stânga-sus.[] +hint.desktopPause = Apasă [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză. +hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina. +hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt a confirma. +hint.placeConveyor = Benzile mută materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\n Ține click apăsat și trage pe ecran pt a desena o linie de bandă.\n[accent]Folosește rotița mouseului[] pt a roti. hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. hint.breaking = [accent]Right-click[] and drag to break blocks. From 143be734c5a8e47641978af65d8d226579dac3e6 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Mon, 23 Nov 2020 14:13:23 +0100 Subject: [PATCH 016/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 33 +++++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 0cccefc6ab..909659417e 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -531,17 +531,41 @@ weather.fog.name = Niebla sectors.unexplored = [lightgray]No explorado sectors.resources = Recursos: sectors.production = Producción: +sectors.export = Exportado: +sectors.time = Tiempo: +sectors.threat = Amenaza: +sectors.wave = Oleada: sectors.stored = Almacenado: sectors.resume = Reanudar sectors.launch = Lanzar sectors.select = Elegir sectors.nonelaunch = [lightgray]Ninguno (Sol) sectors.rename = Renombrar Sector +sectors.enemybase = [scarlet]Base enemiga +sectors.vulnerable = [scarlet]Vulnerable +sectors.underattack = [scarlet]¡Bajo ataque! [accent]{0}% Dañado +sectors.survives = [accent]Sobrevive {0} oleadas +sectors.go = Ir +sector.curcapture = Sector Capturado +sector.curlost = Sector Perdido sector.missingresources = [scarlet]Recursos Insuficientes +sector.attacked = Sector [accent]{0}[white] bajo ataque[]! +sector.lost = ¡Sector [accent]{0}[white] perdido[]! +#nota: el espacio en blanco en la línea siguiente es intencionado +sector.captured = Sector [accent]{0}[white]capturado[]! + +threat.low = Baja +threat.medium = Media +threat.high = Alta +threat.extreme = Extrema +threat.eradication = Exterminio + +planets = Planetas planet.serpulo.name = Serpulo planet.sun.name = Sol +sector.impact0078.name = Impacto 0078 sector.groundZero.name = Zona de impacto sector.craters.name = Los Cráteres sector.frozenForest.name = Bosque Congelado @@ -553,7 +577,10 @@ sector.overgrowth.name = Crecimiento excesivo sector.tarFields.name = Campos de alquitrán sector.saltFlats.name = Llanuras de sal sector.fungalPass.name = Paso de hongos - +sector.biomassFacility.name = Centro de Sintetización de Biomasa +sector.windsweptIslands.name = Islas Windswept +sector.extractionOutpost.name = Puesto de avanzada de Extracción +sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario sector.groundZero.description = La ubicación óptima para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible.\nSiga adelante. sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no pueden contenerlos para siempre.\n\nComienza la aventura hacia el poder. Construye generadores de combustión. Aprenda a usar reparadores. @@ -579,7 +606,6 @@ settings.graphics = Gráficos settings.cleardata = Eliminando Datos del Juego... settings.clear.confirm = ¿Estas seguro de querer eliminar estos datos?\n¡Esta acción no se puede deshacer! settings.clearall.confirm = [scarlet]¡ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego borrrará todos tus datos y se cerrará automáticamente. - settings.clearsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas? settings.clearsaves = Limpiar partidas guardadas settings.clearresearch = Borrar Investigaciones Tecnológicas @@ -587,9 +613,8 @@ settings.clearresearch.confirm = ¿Estas seguro? settings.clearcampaignsaves = Borrar datos de campaña settings.clearcampaignsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña? paused = [accent] < Pausado > -clear = Limpiar +clear = Vaciar banned = [scarlet]Baneado -unplaceable.sectorcaptured = [scarlet]Necesitas que el sector esté capturado. yes = Sí no = No info.title = [accent]Información From 849dd7e2eb0410b1a900ccdf791d5ea23bac047b Mon Sep 17 00:00:00 2001 From: Quick-Korc <68910156+Quick-korkc@users.noreply.github.com> Date: Mon, 23 Nov 2020 20:32:22 +0700 Subject: [PATCH 017/162] Hint translate --- core/assets/bundles/bundle_in_ID.properties | 66 ++++++++++----------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 78b380f91d..e83f85d4f3 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -1236,39 +1236,39 @@ team.green.name = hijau team.purple.name = ungu hint.skip = Skip -hint.desktopMove = Use [accent][[WASD][] to move. -hint.zoom = [accent]Scroll[] to zoom in or out. -hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually. -hint.desktopShoot = [accent][[Left-click][] to shoot. -hint.depositItems = To transfer items, drag from your ship to the core. -hint.respawn = To respawn as a ship, press [accent][[V][]. -hint.respawn.mobile = You have switched control a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] -hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. -hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. -hint.placeDrill.mobile = Select the \ue85e[accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. -hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. -hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. -hint.breaking = [accent]Right-click[] and drag to break blocks. -hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. -hint.research = Use the \ue875 [accent]Research[] button to research new technology. -hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. -hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. -hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. -hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. -hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. -hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. -hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. -hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. -hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. -hint.command = Press [accent][[G][] to command nearby units into formation. -hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. -hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. -hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. -hint.payloadDrop = Press [accent]][] to drop a payload. -hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. -hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. -hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. +hint.desktopMove = Tekan [accent][[WASD][] untuk bergerak. +hint.zoom = [accent]Skrol[] untuk membesarkan atau mengecilkan layar. +hint.mine = Dekati \uf8c4 bijih tembaga dan [accent]tekan[] untuk menambangnya secara manual. +hint.desktopShoot = [accent][[Klik kanan][] untuk menembak. +hint.depositItems = Untuk mentransfer item, tekan item dari inti. +hint.respawn = untuk muncul kembali seperti awal, tekan [accent][[V][]. +hint.respawn.mobile = Kamu telah mengambil alih kontrol dari sebuah unit/struktur. Untuk muncul kembali, [accent]tekan avatar di kiri atas.[] +hint.desktopPause = Tekan [accent][[Spasi][] untuk menjeda dan menghentikan jeda. +hint.placeDrill = Pilih \ue85e [accent]Bor[] menu di kanan bawah, lalu pilih \uf870 [accent]Bor[] dan klik diatas bijih tembaga untuk menaruhnya. +hint.placeDrill.mobile = Pilih \ue85e[accent]Bor[] tab di menu di kanan bawah, lalu pilih \uf870 [accent]Bor[] dan klik diatas bijih tembaga untuk menaruhnya.\n\nTekan \ue800 [accent]checkmark[] di bawah kanan untuk menkonfirmasi pembangunan. +hint.placeConveyor = Pengantar dapat memindahkan item dari bor ke blok yang lain. Pilih \uf896 [accent]Pengantar[] dari menu \ue814 [accent]Distribusi[].\n\nKlik dan tarik untuk menaruh beberapa pengantar.\n[accent]Skrol[] untuk memutarnya. +hint.placeConveyor.mobile = Pengantar dapat memindahkan item dari bor ke blok yang lain. Pilih \uf896 [accent]Pengantar[] dari menu \ue814 [accent]Distribusi[].\n\nTahan jari kamu sebentar dan seret untuk menaruh beberapa pengantar. +hint.placeTurret = Taruh \uf861 [accent]Turret[] untuk mempertahankan basismu daru musuh.\n\nTurret membutuhkan amunisi - yang satu ini, \uf838copper.\nGunakan pengantar dan bor untuk mengisinya. +hint.breaking = [accent]Klik kanan[] dan tarik untuk menghancurkan blok. +hint.breaking.mobile = Aktifkan \ue817 [accent]palu[] di kanan bawah dan tekan untuk menghancurkan blok.\n\nTahan jari kamu sebentar dan seret untuk menghancurkannya. +hint.research = Gunakan tombol \ue875 [accent]Riset[] untuk mempelajari teknologi baru. +hint.research.mobile = Gunakan tombol \ue875 [accent]Riset[] di \ue88c [accent]Menu[] untuk mempelajari teknologi baru. +hint.unitControl = Tahan [accent][[L-ctrl][] dan [accent]klik[] untuk mengendalikan unit atau turret teman. +hint.unitControl.mobile = [accent][Klik dua kali[] untuk mengendalikan unit atau turret teman. +hint.launch = Ketika sumber daya sudah mencukupi, kamu bisa [accent]Meluncurkan[] dengan memilih sektor terdekat dari \ue827 [accent]Map[] di kanan bawah. +hint.launch.mobile = Ketika sumber daya sudah mencukupi, kamu bisa [accent]Meluncurkan[] dengan memilih sektor terdekat dari \ue827 [accent]Map[] di \ue88c [accent]Menu[]. +hint.schematicSelect = Tahan [accent][[F][] dan tarik ke bangunan untuk menyalin bangunan.\n\n[accent][[Klik tengah][] untuk menyalin blok setipe. +hint.conveyorPathfind = Tahan [accent][[L-Ctrl][] ketika menarik pengantar untuk membuat jalur secara otomatis. +hint.conveyorPathfind.mobile = Aktifkan \ue844 [accent]diagonal mode[] dan tarik pengantar untuk membuat jalur secara otomatis. +hint.boost = Tahan [accent][[L-Shift][] untuk terbang dengan unit sekarang.\n\nHanya beberapa unit darat yang memiliki pendorong. +hint.command = Tekan [accent][[G][] untuk memperintah unit sekitarmu kedalam formasi. +hint.command.mobile = [accent][[Klik dua kali][] unitmu untuk memperintah unit sekitarmu kedalam formasi. +hint.payloadPickup = Tekan [accent][[[] untuk membawa blok kecil atau unit. +hint.payloadPickup.mobile = [accent]Tekan dan tahan[] untuk membawa blok kecil atau unit. +hint.payloadDrop = Tekan [accent]][] untuk menurunkan muatan. +hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan. +hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya. +hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[]. item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok. item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat. From 370fd149cd0b974f343f25a8683274fd24f71f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ga=C5=A1par=C3=ADk?= Date: Mon, 23 Nov 2020 14:47:08 +0100 Subject: [PATCH 018/162] Czech translation for future v117 --- core/assets/bundles/bundle_cs.properties | 106 ++++++++++++----------- 1 file changed, 57 insertions(+), 49 deletions(-) diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index bf15164929..c3ff3a3946 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -17,15 +17,12 @@ linkfail = Nepodařilo se otevřít odkaz!\nAdresa URL byla zkopírována do sch screenshot = Snímek obrazovky uložen {0} screenshot.invalid = Mapa je moc velká, nemusí být dost paměti pro získání snímku obrazovky. gameover = Konec hry -gameover.disconnect = Odpojit se gameover.pvp = Vyhrál tým [accent]{0}[]! -gameover.waiting = [accent]Hra čeká na další mapu... highscore = [accent]Nový rekord! copied = Zkopírováno. indev.popup = Mindustry [accent]v6[] je aktuálně ve verzi [accent]beta[].\n[lightgray]To znamená:[]\n[scarlet]- Kampaň je nedokončená[]\n- Cokoli, co vidíte, se může změnit nebo být odstraněno.\n\nHlaste prosím chyby na [accent]Github[]. indev.notready = Tato část hry ještě není připravena -indev.campaign = [accent]Dovršil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích. - +indev.campaign = [accent]Završil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích. load.sound = Zvuky load.map = Mapy @@ -498,10 +495,10 @@ requirement.produce = Vyrob {0} requirement.capture = Polap {0} launch.text = Vyslat research.multiplayer = Jen hostitel hry může vynalézat nové technologie. +map.multiplayer = Jen hostitel může prohlížet sektory. uncover = Odkrýt mapu configure = Přizpůsobit vybavení -#TODO loadout = Načtení resources = Zdroje bannedblocks = Zakázané bloky @@ -509,12 +506,6 @@ addall = Přidat vše launch.from = Vysláno z: [accent]{0} launch.destination = Cíl: {0} configure.invalid = Hodnota musí být číslo mezi 0 a {0}. -zone.unlocked = [lightgray]Mapa {0} byla odemknuta.[] -zone.requirement.complete = Bylo dosaženo vlny {0},\nčímž byla splněna podmínka pro mapu {1}. -zone.resources = [lightgray]Byly detekovány tyto suroviny:[] -zone.objective = [lightgray]Úkol: [][accent]{0}[] -zone.objective.survival = Přežij -zone.objective.attack = Znič nepřátelské jádro add = Přidat... boss.health = Životy Strážce @@ -548,12 +539,17 @@ sectors.launch = Vyslat sectors.select = Vybrat sectors.nonelaunch = [lightgray]bez (slunce)[] sectors.rename = Přejmenovat sektor - +sectors.enemybase = [scarlet]Nepřátelská základna +sectors.vulnerable = [scarlet]Zranitelný +sectors.underattack = [scarlet]Pod palbou! [accent]{0}% poškozeno +sectors.survives = [accent]Přežívá již {0} vln +sectors.go = Jdi sector.curcapture = Sektor polapen +sector.curlost = Sektor ztracen sector.missingresources = [scarlet]Nedostatečné zdroje v jádře sector.attacked = Sektor [accent]{0}[white] pod útokem! sector.lost = Sektor [accent]{0}[white] ztracen! :( -#note: the missing space in the line below is intentional +#note: chybějící mezera v řádce níže je záměrná :) sector.captured = Sektor [accent]{0}[white]polapen! :) threat.low = Nízké @@ -584,16 +580,13 @@ sector.windsweptIslands.name = Větrné ostrovy sector.extractionOutpost.name = Extrakční základna sector.planetaryTerminal.name = Planetární odpalovací terminál -#unused -#sector.crags.name = Crags - sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. sector.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni. sector.craters.description = V těchto relikviích starých válek se nahromadilo velké množství vody. Znovu získej tuto oblast. Sbírej písek. Vyrob z něj metasklo. Použij vodu k chlazení svých vrtů a střílen. sector.ruinousShores.description = Za pustinou se nachází pobřeží. Kdysi zde stál obranný pobřežní systém. Moc z něj už dneska nezbylo. Jen základní konstrukce zůstaly ušetřeny, zbytek se rozpadl na šrot.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii. sector.stainedMountains.description = Dále ve vnitrozemí leží hory, dosud neposkvrněny spórami.\nVytěž titan, kterým tato oblast oplývá. Nauč se jej používat.\n\nPřítomnost nepřátelských jednotek je zde větší. Radši jim nedej moc času na vyslání jejich nejsilnějších jednotech. -sector.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval předsunutou hlídku. Stav jednotky Dýka a znič s jejich pomocí jádro základny. Získej znovu to, co bylo již dávno ztraceno. +sector.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval předsunutou hlídku. Stav jednotky Palcát a znič s jejich pomocí jádro základny. sector.tarFields.description = Rozhraní produkční naftové oblasti mezi horami a pouští. Jedna z mála oblastí, kde se stále nachází dehet.\nAčkoliv je oblast opuštěná, stále se v jejím okolí nachází nebezpečné nepřátelské síly. Není radno je podcenit.\n\n[lightgray]Vyzkoumej technologii na zpracování nafty.[] sector.desolateRift.description = Extrémně nebezpečná mapa. Na úkor prostoru se zde nachází přehršel surovin. Vysoká pravděpodobnost zničení. Opusť tuto oblast co nejdříve to půjde. Nenech se zmást dlouhými prodlevami mezi vlnami nepřátel. sector.nuclearComplex.description = Bývalá továrna na zpracování thoria, dnes v troskách.\n[lightgray]Objev thorium a jeho široké využití.[]\n\nNepřátelské jednotky se zde nacházejí v hojném počtu, a neustále prohledávají oblast. @@ -803,16 +796,15 @@ setting.conveyorpathfinding.name = Hledat cestu při umisťování pásu setting.sensitivity.name = Citlivost ovladače setting.saveinterval.name = Interval automatického ukládání setting.seconds = {0} sekund -setting.blockselecttimeout.name = Časový limit pro výběr bloku setting.milliseconds = {0} milisekund setting.fullscreen.name = Celá obrazovka -setting.borderlesswindow.name = Bezokrajové okno[lightgray] (může výt vyžadován restart)[] +setting.borderlesswindow.name = Bezokrajové okno [lightgray](může výt vyžadován restart) setting.fps.name = Ukázat FPS a ping setting.smoothcamera.name = Plynulá kamera setting.vsync.name = Vertikální synchronizace setting.pixelate.name = Rozpixlovat setting.minimap.name = Ukázat mapičku -setting.coreitems.name = Ukázat položky jádra (WIP) +setting.coreitems.name = Ukázat položky jádra setting.position.name = Ukázat pozici hráče setting.musicvol.name = Hlasitost hudby setting.atmosphere.name = Ukázat atmosféru planety @@ -892,6 +884,8 @@ keybind.menu.name = Hlavní nabídka keybind.pause.name = Pozastavení hry keybind.pause_building.name = Pozastavit nebo spustit stavění keybind.minimap.name = Mapička +keybind.planet_map.name = Planetární mapa +keybind.research.name = Výzkum keybind.chat.name = Kanál zpráv keybind.player_list.name = Seznam hráčů keybind.console.name = Terminál @@ -1016,6 +1010,7 @@ block.resupply-point.name = Zásobovací místo block.parallax.name = Paralaxa block.cliff.name = Útes block.sand-boulder.name = Pískovec +block.basalt-boulder.name = Čedičový balvan block.grass.name = Tráva block.slag.name = Struska block.space.name = Vesmír @@ -1239,34 +1234,47 @@ team.derelict.name = opuštěný team.green.name = zelený team.purple.name = fialový -tutorial.next = [lightgray] -tutorial.intro = Vítej ve [scarlet]výuce Mindustry[]. Zde se dozvíš základy hraní.\nPoznámka: výuka předpokládá [accent]výchozí klávesy[] v nastavení, pokud jsi je změnil, bude třeba to vzít v potaz.\nPoužij [accent][[WASD][] pro pohyb a [accent]kolečko myši[] pro přibližování a oddalování.\nZačni [accent]těžením mědi[]. Přibliž se k měděné žíle u Tvého jádra a klikni na ni pro zahájení těžby.\n\n[accent]{0}/{1} mědi[] -tutorial.intro.mobile = Vítej ve [scarlet]výuce Mindustry[].\nPohybuj se táhnutím prstem do strany.\nPřibližuj a oddaluj mapu [accent]2 prsty[].\nZačni [accent] těžením mědi[]. Přibliž se k měděné žíle u Tvého jádra a ťupni na ni pro zahájení těžby.\n\n[accent]{0}/{1} mědi[] -tutorial.drill = Sám vidíš, že ruční těžba není moc efektivní.\n[accent]Vrty[] umožňují těžit automaticky.\nKlikni na vrt v nabídce v pravém dolním rohu.\nVyber [accent]mechanický vrt[]. Umisti jej kliknutím na měděnou žílu.\nTaké můžeš vybrat mechanický vrt stiskem kláves [accent][[2][] a následně [accent][[1][] rychle po sobě, nezávisle na tom, jaká záložka je v nabídce zrovna otevřena.\n[accent]Pravým klikem[] přerušíš stavění. -tutorial.drill.mobile = Sám vidíš, že ruční těžba není moc efektivní.\n[accent]Vrty[] umožňují těžit automaticky.\nŤupni na vrt v nabídce v pravém dolním rohu.\nVyber [accent]mechanický vrt[]. Umisti jej klikutím na měděnou žílu ťupnutím a následně zaškrtni [accent]fajfku[] na spodku nabídky pro potvrzení volby.\nŤupnutím na [accent]X[] přerušíš stavění. -tutorial.blockinfo = Každý blok má jiné vlastnosti. Každý vrt může těžit pouze některé suroviny.\nPro zobrazení informací a statistik o bloku [accent]zvol "?" při vybraném bloku ve stavební nabídce[].\n\nNyní se podívej na [accent]vlastnosti mechanického vrtu[]. -tutorial.conveyor = Pro dopravu materiálu k jádru jsou zapotřebí [accent]dopravníky[].\nVytvoř řadu dopravníků od vrtu až k jádru.\nDrž zmáčknuté [accent]levé tlačítko myši[], abys umístil dopravníky v jedné řadě.\nKdyž zmáčkneš [accent]Ctrl[], řada dopravníků se bude umisťovat navíc úhlopříčně.\nPoužij [accent]kolečko myši[] pro otáčení bloku před umístěním.\n[accent]Umísti dopravníky tak, abys dopravil měď do jádra[]. -tutorial.conveyor.mobile = Pro dopravu materiálu k jádru jsou zapotřebí [accent]dopravníky[].\nVytvoř řadu dopravníků od vrtu až k jádru.\n[accent]Pokládej dopravníky v řadě ťupnutím a delším prstu[] a táhnutím v požadovaném směru.\n[accent]Umísti dopravníky tak, abys dopravil měď do jádra[]. -tutorial.turret = Jakmile se materiál dostane do jádra, může být použit pro konstrukci.\nPamatuj si, že ne všechno lze použít pro konstrukci.\nVěci, které melze použít jako stavební materiál, jako například [accent]uhlí[] nebo [accent]šrot[], nelze do jádra uložit, a zasekne tak celý dopravník na vstupu.\nPro odehnání útočných jednotek [lightgray]nepřítele[] od jádra je třeba postavit obranné konstrukce.\nPostav [accent]střílnu Duo[] poblíž svého jádra. -tutorial.drillturret = Střílny Duo potřebují jako střelivo [accent]měď[].\nPolož mechanický vrt blízko střílny.\nPro zásobování mědí veď dopravníky od vrtu ke střílně.\n\n[accent]Doručeno střeliva: {0}/{1}[] -tutorial.pause = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat konstrukci do fronty.\n\n[accent]Pozastav hru mezerníkem[]. -tutorial.pause.mobile = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat konstrukci do fronty.\n\n[accent]Pozastavení hry probedeš ťupnutím na dvě čárky vlevo nahoře. -tutorial.unpause = Teď zmáčkni mezerník znova a pokračuj ve hře. -tutorial.unpause.mobile = Teď ťupni na ikonu na stejném místě a pokračuj ve hře. -tutorial.breaking = Bloky je třeba nejen stavět, ale Často rozbít.\n[accent]Drž pravé tlačítko myšu[] a táhni s ní pro výběr bloků, které potřebuješ rozbít.\n\n[accent]Znič všechen šrot vlevo od Tvého jádra použitím blokového výběru[]. -tutorial.breaking.mobile = Bloky je třeba nejen stavět, ale Často rozbít.\n[accent]Ťupnu na ikonku kladiva dole[] a pak ťupni na blok, který chceš rozbít.\nRozbití více bloků se provádí delším podržením prstu a táhnutím.\nRozbití dokončíš ťupnutím na fajfku.\n\n[accent]Znič všechen šrot vlevo od Tvého jádra použitím blokového výběru[]. -tutorial.withdraw = Někdy je třeba odebírat předměty přímo z bloků.\n[accent]Klikni na blok[], ve kterém jsou předměty a pak [accent]klikni na předmět[] z inventáře bloku.\nVícero předmětů může být odebráno [accent]ťupnutím a držením[].\n\n[accent]Odeber trochu mědi z jádra[]. -tutorial.deposit = Vložit předměty do bloku můžeš přetažením z Tvé lodi na cílový blok.\n\n[accent]Vlož odebranou měď zprátky do Tvého jádra[]. -tutorial.waves = [lightgray]Nepřítel[] se přibližuje.\n\nUbraň své jádro po dobu 2 vln. [accent]Klikni levým tlačítkem[] pro střílení.\nPostav více střílen a vrtů. Natěž více mědi. -tutorial.waves.mobile = [lightgray]Nepřítel[] se přibližuje.\n\nUbraň své jádro po dobu 2 vln. Tvá loď bude automaticky střílet po nepřátelských jednotkách.\nPostav více střílen a vrtů. Natěž více mědi. -tutorial.launch = Jakmile dosáhneš určité vlny, budeš moci [accent]vyslat své jádro zpět[]. Opustíš tím svou základnu a [accent]získáš suroviny uložené v jádře[].\nZískané suroviny mohou být použity pro výzkum nových technologií.\n\n[accent]Stiskni tlačítko pro vyslání jádra zpět[]. +hint.skip = Přeskočit +hint.desktopMove = Použij [accent][[WASD][] k pohybu. +hint.zoom = [accent]Roluj[] prp přiblížení a oddalování obrazvky. +hint.mine = Přesuň se poblíž \uf8c4 měděné rudy a [accent]ťupni[] na ni pro zahájení těžby. +hint.desktopShoot = Klikni na [accent][[levé tlačítko][] myši pro střelbu. +hint.depositItems = Pro přesun položek je přetáhni ze své lodi do jádra. +hint.respawn = Aby ses znovu přepnul na loď, zmáčkni [accent][[V][]. +hint.respawn.mobile = Přepnul ses na ovládání jednotky nebo konstrukce. Aby ses přepnul zpět na loď, klikni na avatara vlevo nahoře. +hint.desktopPause = Zmáčkni [accent][[mezerník][] k pozastavení a zase spuštění hry. +hint.placeDrill = Vyber si záložku \ue85e [accent]Vrtů[] v nabídce vpravo dole, potom vyber \uf870 [accent]Vrt[] a klikni na oblast s mědí k umístění. +hint.placeDrill.mobile = Vyber si záložku \ue85e[accent]Vrtů[] v nabídce vpravo dole, potom vyber \uf870 [accent]Vrt[] a ťupni na oblast s mědí k umístění.\n\Ťupni na \ue800 [accent]zaškrtnutí[] vpravo dole pro potvrzení. +hint.placeConveyor = Dopravníky přesouvají materiál z vrtu do dalších bloků. Vyber \uf896 [accent]Dopravník[] ze záložky \ue814 [accent]Distribuce[].\n\nKlikni a táhni pro umístění vícero dopravníků.\n[accent]Roluj[] pro otočení. +hint.placeConveyor.mobile = Dopravníky přesouvají materiál z vrtu do dalších bloků. Vyber \uf896 [accent]Dopravník[] ze záložky \ue814 [accent]Distribuce[].\n\nPodrž chvíli prst a táhni pro umístění vícero dopravníků. +hint.placeTurret = Umisti \uf861 [accent]Věž[], abys ubránil Tvoji základnu před nepřáteli.\n\nVěže vyžaduj munici - v tomto případě je jí \uf838měď.\nPoužij vrty a dopravníky, abys nějakou získal. +hint.breaking = Klikni [accent]pravým tlačítkem[] a potáhni pro rozbití bloků. +hint.breaking.mobile = Použij \ue817 [accent]kladivo[] v pravém spodním rohu a pak ťupni pro rozbití bloků.\n\nPodrž chvíli prst a táhni pro rozbití bloků ve výběru. +hint.research = Použij tlačítko \ue875 [accent]Výzkum[] pro vyzkoumání nové technologie. +hint.research.mobile = Použij tlačítko \ue875 [accent]Výzkum[] v \ue88c [accent]nabídce[] pro vyzkoumání nové technologie. +hint.unitControl = Podrž [accent][[Levý Ctrl][] a [accent]klikni[] pro ovládání spřátelených jednotek nebo věží. +hint.unitControl.mobile = [accent][Dvojťupni[] pro ovládání spřátelených jednotek nebo věží. +hint.launch = Jakmile je nasbíráno dostatek zdrojových materiálů, můžeš se [accent]vyslat[] do přilehlých sektorů z \ue827 [accent]mapy[] v pravém dolním rohu. +hint.launch.mobile = Jakmile je nasbíráno dostatek zdrojových materiálů, můžeš se [accent]vyslat[] do přilehlých sektorů z \ue827 [accent]mapy[] v the \ue88c [accent]nabídce[]. +hint.schematicSelect = Podrž [accent][[F][] a potáhni pro výběr bloků, které chceš zkopírovat.\n\nKlikni na [accent][[prostřední tlačítko][] myši pro zkopírování jednoho typu bloku. +hint.conveyorPathfind = Podrž [accent][[levý Ctrl][], když táhneš dopravníky, pro automatické vygenerování cesty. +hint.conveyorPathfind.mobile = Povol \ue844 [accent]úhlopříčný režim[] a potáhni dopravníky pro automatické generování cesty. +hint.boost = Podrž [accent][[levý Shift][], abys přeletěl přes překážky se svou současnou jednotkou.\n\nPouze některé jednotky však mají takový posilovač. +hint.command = Zmáčkni [accent][[G][] pro vytvoření formace z blízkých jednotek. +hint.command.mobile = [accent][[Dvojťupni][] na Tvoji jednotku pro vytvoření formace z blízkých jednotek. +hint.payloadPickup = Zmáčkni [accent][[[] pro sebrání malých bloků nebo jednotek. +hint.payloadPickup.mobile = [accent]Ťupni a podrž[] na malém bloku nebo jednotce pro sebrání. +hint.payloadDrop = Zmáčkni [accent]][] pro položení nákladu. +hint.payloadDrop.mobile = [accent]Ťupni a drž[] na prázdném místě pro položení nákladu. +hint.waveFire = [accent]Naplň[] věže vodou místo munice pro automatické hašení okolních požárů. +hint.generator = \uf879 [accent]Spalovací generátory[] pálí uhlí a přenášení energii do sousedících bloků.\n\nPřenos energie na delší vzdálenost se provádí pomocí \uf87f [accent]Energetických uzlů[]. item.copper.description = Používá se ve všech typech bloků a munice. item.copper.details = Měď. Nezvykle nadpočetný kov na Serpulu. Konstrukčně slabý, pokud není rafinovaná. -item.lead.description = Používá se v přepravě kapalin a elektrických konstrukcích. +item.lead.description = Používá se v přepravě kapalin a energetických konstrukcích. item.lead.details = Hutný, netečný materiál. Hojně používán v bateriích.\nPoznámka: Pravděpodobně toxický pro biologické formy života. Ne že by jich tady moc zbývalo. item.metaglass.description = Používá se v přepravě kapalin a úložných konstrukcích. -item.graphite.description = Používá se v elektrických komponentách a nábojích do věží. +item.graphite.description = Používá se v energerických komponentách a nábojích do věží. item.sand.description = Používá se ve výrobě ostatních rafinovaných materiálů. item.coal.description = Používá se na palivo a výrobu rafinovaný materiálů. item.coal.details = Jeví se být zkamenělou rostlinou hmotou, zformovaou dávno před událostí vytvoření tohoto světa náhodným číslem. @@ -1318,21 +1326,21 @@ block.copper-wall.description = Chrání konstrukce před nepřátelskými stře block.copper-wall-large.description = Chrání konstrukce před nepřátelskými střelami. block.titanium-wall.description = Chrání konstrukce před nepřátelskými střelami. block.titanium-wall-large.description = Chrání konstrukce před nepřátelskými střelami. -block.plastanium-wall.description = Chrání konstrukce před nepřátelskými střelami. Pohlcuje laserové a elektrické výboje. Automaticky blokuje energetické spoje. +block.plastanium-wall.description = Chrání konstrukce před nepřátelskými střelami. Pohlcuje laserové a energetické výboje. Automaticky blokuje energetické spoje. block.plastanium-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Absorbs lasers and electric arcs. Automaticky blokuje energetické spoje. block.thorium-wall.description = Chrání konstrukce před nepřátelskými střelami. block.thorium-wall-large.description = Chrání konstrukce před nepřátelskými střelami. block.phase-wall.description = Chrání konstrukce před nepřátelskými střelami, reflecting most bullets upon impact. block.phase-wall-large.description = Chrání konstrukce před nepřátelskými střelami, reflecting most bullets upon impact. -block.surge-wall.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává elektrické výboje. -block.surge-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává elektrické výboje. +block.surge-wall.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává energetické výboje. +block.surge-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává energetické výboje. block.door.description = Zeď, která může být otevřena a zavřena. block.door-large.description = Zeď, která může být otevřena a zavřena. block.mender.description = Opakovaně opravuje bloky ve svém dosahu.\nVolitelně umí použít křemík pro posílení dosahu a efektivity. block.mend-projector.description = Opakovaně opravuje bloky ve svém dosahu.\nVolitelně umí použít fázovou tkaninu pro posílení dosahu a efektivity. block.overdrive-projector.description = Zrychluje funkce budov v okolí.\nVolitelně umí využít fázovou tkaninu pro posílení dosahu a efektivity. block.force-projector.description = Vytváří okolo sebe šestiúhelníkové silové pole. Chrání konstrukce a jednotky uvnitř pole před poškozením.\nPřehřívá se, pokud obdrží moc poškození. Přehřátí lze eliminovat použitím chlazení. Fázová tkanina zvyšje velikost pole. -block.shock-mine.description = Vydává elektrické výboje při dotyku nepřátelskou jednotkou. +block.shock-mine.description = Vydává energetické výboje při dotyku nepřátelskou jednotkou. block.conveyor.description = Přepravuje předměty vpřed. block.titanium-conveyor.description = Přepravuje předměty vpřed. Rychlejší, než standardní dopravník. block.plastanium-conveyor.description = Přepravuje předměty vpřed in batches. Přijímá předměty zezadu, a vykládá je do tří směrů vpředu. Vyžaduje více nakládacích a vykládacích bodů pro špičkový průtok. @@ -1438,7 +1446,7 @@ unit.fortress.description = Střílí dělostřelecké salvy na pozemní cíle. unit.scepter.description = Střílí palbu nabitých střel na všechny okolní nepřátele. unit.reign.description = Střílí palbu masivních střel pronikajících brněním na všechny okolní nepřátele. unit.nova.description = Střílí laserové výboje, které poškozují nepřátele a opravují spojenecké konstrukce. Je schopný letu. -unit.pulsar.description = Střílí oblouky elektřiny, které poškozují nepřátele a opravují spojenecké struktury. Schopný letu. +unit.pulsar.description = Střílí energetické oblouky, které poškozují nepřátele a opravují spojenecké struktury. Schopný letu. unit.quasar.description = Střílí pronikavé laserové paprsky, které poškozují nepřátele a opravují spojenecké struktury. Schopný letu. Oštítovaný. unit.vela.description = Střílí masivní nepřetržitý laserový paprsek, který poškozuje nepřátele, způsobuje požáry a opravuje spojenecké struktury. Schopný letu. unit.corvus.description = Střílí masivní laserový paprsek, který poškozuje nepřátele a opravuje spojenecké struktury. Může překonat většinu z terénů. @@ -1446,7 +1454,7 @@ unit.crawler.description = Běží směrem k nepřátelům, vybuchne a způsobí unit.atrax.description = Střílí oslabující koule strusky na pozemní cíle. Může překonat většinu z terénů. unit.spiroct.description = Střílí mířené laserové paprsky na nepřátele, a zároveň se tím opravuje. Může překročit většinu terénu. unit.arkyid.description = Střílí velké mířené laserové paprsky na nepřátele, a zároveň se tím opravuje. Může překročit většinu terénu. -unit.toxopid.description = Střílí na nepřátele velké elektrické kazetové střely a lasery pronikající brněním. Může překročit většinu z terénů. +unit.toxopid.description = Střílí na nepřátele velké energetické kazetové střely a lasery pronikající brněním. Může překročit většinu z terénů. unit.flare.description = Střílí základní střely na okolní nepřátele. unit.horizon.description = Pouští shluky bomb na pozemní cíle. unit.zenith.description = Střílí salvy raket na všechny blízké nepřátele. From 1cfa5db611305fcf7315d080b0fb9c77235733bb Mon Sep 17 00:00:00 2001 From: simba-fs Date: Mon, 23 Nov 2020 23:48:37 +0800 Subject: [PATCH 019/162] modify zh-TW translation --- core/assets/bundles/bundle_zh_TW.properties | 94 ++++++++++----------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 591ef50191..a6b9f10cf7 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -55,7 +55,7 @@ schematic.saved = 藍圖已儲存。 schematic.delete.confirm = 該藍圖將被完全清除。 schematic.rename = 重新命名藍圖 schematic.info = {0}x{1}, {2}方塊 -schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. +schematic.disabled = [scarlet]藍圖被進用[]\n你不能在這個[accent]地圖[] 或 [accent]伺服器中使用藍圖. stat.wave = 打敗的波次:[accent]{0} stat.enemiesDestroyed = 摧毀的敵人:[accent]{0} @@ -115,7 +115,7 @@ mod.disable = 禁用 mod.content = 內容: mod.delete.error = 無法刪除模組,檔案可能在使用中。 mod.requiresversion = [scarlet]最低遊戲版本要求:[accent]{0} -mod.outdated = [scarlet]與 V6 不相容(無 minGameVersion: 105) +mod.outdated = [scarlet]與 V6 不相容(無 最低遊戲版本: 105) mod.missingdependencies = [scarlet]缺少依賴關係:{0} mod.erroredcontent = [scarlet]內容錯誤 mod.errors = 載入內容時發生錯誤 @@ -331,7 +331,7 @@ editor.generation = 篩選器: editor.ingame = 在遊戲中編輯 editor.publish.workshop = 在工作坊上發佈 editor.newmap = 新地圖 -editor.center = Center +editor.center = 中心 workshop = 工作坊 waves.title = 波次 waves.remove = 移除 @@ -420,7 +420,7 @@ filters.empty = [lightgray]沒有過濾器!使用下面的按鈕新增一個 filter.distort = 扭曲 filter.noise = 雜訊 filter.enemyspawn = 敵人重生選擇 -filter.spawnpath = Path To Spawn +filter.spawnpath = 生成路徑 filter.corespawn = 核心選擇 filter.median = 平均數 filter.oremedian = 礦石平均數 @@ -445,7 +445,7 @@ filter.option.amount = 數量 filter.option.block = 方塊 filter.option.floor = 地板 filter.option.flooronto = 目標地板 -filter.option.target = Target +filter.option.target = 目標 filter.option.wall = 牆 filter.option.ore = 礦石 filter.option.floor2 = 次要地板 @@ -479,7 +479,7 @@ requirement.research = 研究 {0} requirement.capture = 捕獲 {0} bestwave = [lightgray]最高波次:{0} launch.text = 發射 -research.multiplayer = Only the host can research items. +research.multiplayer = 只有管理者可以使用這個物品 uncover = 探索 configure = 設定 loadout = 裝載 @@ -512,7 +512,7 @@ weather.rain.name = 雨 weather.snow.name = 雪 weather.sandstorm.name = 沙塵暴 weather.sporestorm.name = 孢子風暴 -weather.fog.name = Fog +weather.fog.name = 霧 sectors.unexplored = [lightgray]未探索 sectors.resources = 資源: @@ -522,11 +522,11 @@ sectors.resume = 繼續 sectors.launch = 發射 sectors.select = 選取 sectors.nonelaunch = [lightgray]無(太陽) -sectors.rename = Rename Sector -sector.missingresources = [scarlet]Insufficient Core Resources +sectors.rename = 重新命名區域 +sector.missingresources = [scarlet]核心資源不足 planet.serpulo.name = Serpulo -planet.sun.name = Sun +planet.sun.name = 太陽 sector.groundZero.name = 原點 sector.craters.name = 火山島 @@ -566,10 +566,10 @@ settings.clear.confirm = 您確定要清除資料嗎?\n此動作無法復原 settings.clearall.confirm = [scarlet]警告![]\n這會清除所有資料,包括存檔、地圖、解鎖項目和快捷鍵綁定。\n按「是」後,遊戲將刪除所有資料並自動結束。 settings.clearsaves.confirm = 您確定您想要清除所有存檔嗎? settings.clearsaves = 清除存檔 -settings.clearresearch = Clear Research -settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? -settings.clearcampaignsaves = Clear Campaign Saves -settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? +settings.clearresearch = 清除研究 +settings.clearresearch.confirm = 你確定要清除所有研究? +settings.clearcampaignsaves = 清除戰役紀錄 +settings.clearcampaignsaves.confirm = 你確定要清除所有戰役紀錄? paused = [accent](已暫停) clear = 清除 banned = [scarlet]已被封鎖 @@ -606,7 +606,7 @@ stat.powerconnections = 最大連結數 stat.poweruse = 能量使用 stat.powerdamage = 能量/傷害 stat.itemcapacity = 物品容量 -stat.memorycapacity = Memory Capacity +stat.memorycapacity = 記憶體容量 stat.basepowergeneration = 基礎能量生產 stat.productiontime = 生產時間 stat.repairtime = 方塊完全修復時間 @@ -626,22 +626,22 @@ stat.reload = 射擊次數/秒 stat.ammo = 彈藥 stat.shieldhealth = 護盾生命值 stat.cooldowntime = 冷確時間 -stat.explosiveness = Explosiveness -stat.basedeflectchance = Base Deflect Chance -stat.lightningchance = Lightning Chance -stat.lightningdamage = Lightning Damage -stat.flammability = Flammability -stat.radioactivity = Radioactivity -stat.heatcapacity = HeatCapacity -stat.viscosity = Viscosity -stat.temperature = Temperature -stat.speed = Speed -stat.buildspeed = Build Speed -stat.minespeed = Mine Speed -stat.minetier = Mine Tier -stat.payloadcapacity = Payload Capacity -stat.commandlimit = Command Limit -stat.abilities = Abilities +stat.explosiveness = 爆炸性 +stat.basedeflectchance = 基礎偏移量 +stat.lightningchance = 燃燒機率 +stat.lightningdamage = 燃燒傷害 +stat.flammability = 易燃性 +stat.radioactivity = 輻射性 +stat.heatcapacity = 熱容量 +stat.viscosity = 黏度 +stat.temperature = 溫度 +stat.speed = 速度 +stat.buildspeed = 建築速度 +stat.minespeed = 挖掘速度 +stat.minetier = 挖掘等級 +stat.payloadcapacity = 負荷量 +stat.commandlimit = 指令限制 +stat.abilities = 能力 ability.forcefield = Force Field ability.repairfield = Repair Field @@ -659,7 +659,7 @@ bar.powerbalance = 能量變化:{0} bar.powerstored = 能量存量: {0}/{1} bar.poweramount = 能量:{0} bar.poweroutput = 能量輸出:{0} -bar.powerlines = Connections: {0}/{1} +bar.powerlines = 連線: {0}/{1} bar.items = 物品:{0} bar.capacity = 容量: {0} bar.unitcap = {0} {1}/{2} @@ -671,7 +671,7 @@ bar.progress = 建造進度 bar.input = 輸入 bar.output = 輸出 -units.processorcontrol = [lightgray]Processor Controlled +units.processorcontrol = [lightgray]由微處理器控制 bullet.damage = [stat]{0}[lightgray]傷害 bullet.splashdamage = [stat]{0}[lightgray]範圍傷害 ~[stat] {1}[lightgray]格 @@ -680,15 +680,15 @@ bullet.homing = [stat]追蹤 bullet.shock = [stat]電擊 bullet.frag = [stat]破片彈 bullet.knockback = [stat]{0}[lightgray]擊退 -bullet.pierce = [stat]{0}[lightgray]x pierce -bullet.infinitepierce = [stat]pierce +bullet.pierce = [stat]{0}[lightgray]×穿刺 +bullet.infinitepierce = [stat]穿刺 bullet.freezing = [stat]冷凍 bullet.tarred = [stat]焦油 bullet.multiplier = [stat]{0}[lightgray]×彈藥倍數 bullet.reload = [stat]{0}[lightgray]×射擊速率 unit.blocks = 方塊 -unit.blockssquared = blocks² +unit.blockssquared = 方塊² unit.powersecond = 能量單位/秒 unit.liquidsecond = 液體單位/秒 unit.itemssecond = 物品/秒 @@ -711,7 +711,7 @@ category.power = 能量 category.liquids = 液體 category.items = 物品 category.crafting = 需求 -category.function = Function +category.function = 方法 category.optional = 可選的強化 setting.landscape.name = 鎖定水平畫面 setting.shadows.name = 陰影 @@ -861,7 +861,7 @@ mode.custom = 自訂規則 rules.infiniteresources = 無限資源 rules.reactorexplosions = 反應爐爆炸 -rules.schematic = Schematics Allowed +rules.schematic = 允許使用藍圖 rules.wavetimer = 波次時間 rules.waves = 波次 rules.attack = 攻擊模式 @@ -1007,7 +1007,7 @@ block.darksand-water.name = 黑沙水 block.char.name = 燒焦 block.dacite.name = 英安岩 block.dacite-wall.name = 英安岩牆 -block.dacite-boulder.name = Dacite Boulder +block.dacite-boulder.name = 英安岩石塊 block.ice-snow.name = 冰雪 block.stone-wall.name = 石牆 block.ice-wall.name = 冰牆 @@ -1151,24 +1151,24 @@ block.command-center.name = 指揮中心 block.ground-factory.name = 地面工廠 block.air-factory.name = 航空工廠 block.naval-factory.name = 海軍工廠 -block.additive-reconstructor.name = 加法重建者 -block.multiplicative-reconstructor.name = 乘法重建者 -block.exponential-reconstructor.name = 指數重建者 -block.tetrative-reconstructor.name = 特殊重建者 +block.additive-reconstructor.name = 一級升級者 +block.multiplicative-reconstructor.name = 二級升級者 +block.exponential-reconstructor.name = 三級升級者 +block.tetrative-reconstructor.name = 四級升級者 block.payload-conveyor.name = 原料輸送帶 block.payload-router.name = 原料分配器 block.disassembler.name = 拆裝機 block.silicon-crucible.name = 矽爐 block.overdrive-dome.name = 高速拱頂 -block.switch.name = 交換器 +block.switch.name = 按鈕 block.micro-processor.name = 微處理器 block.logic-processor.name = 邏輯處理器 block.hyper-processor.name = 超級處理器 -block.logic-display.name = 邏輯顯示 -block.large-logic-display.name = 大型邏輯顯示 +block.logic-display.name = 顯示器 +block.large-logic-display.name = 大型顯示器 block.memory-cell.name = 記憶單元 -block.memory-bank.name = Memory Bank +block.memory-bank.name = 記憶體 team.blue.name = 藍 team.crux.name = 紅 From 4a52392ce9eeb9575a4739afe2f86082da5acec4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 13:09:42 -0500 Subject: [PATCH 020/162] Added hint about guards & armor --- core/assets/bundles/bundle.properties | 2 +- core/assets/maps/ruinousShores.msav | Bin 18170 -> 18259 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/TechTree.java | 6 +++--- core/src/mindustry/core/GameState.java | 3 +-- core/src/mindustry/game/Teams.java | 6 ++++++ core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/game/Waves.java | 2 +- .../mindustry/ui/fragments/HintsFragment.java | 3 ++- 9 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 72f241b9b4..33ab9b2778 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -22,7 +22,6 @@ gameover.pvp = The[accent] {0}[] team is victorious! gameover.waiting = [accent]Waiting for next map... highscore = [accent]New highscore! copied = Copied. -indev.popup = [accent]v6[] is currently in [accent]beta[].\n[lightgray]This means:[]\n[scarlet]- The campaign is unfinished[]\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[]. indev.notready = This part of the game isn't ready yet indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates. @@ -1270,6 +1269,7 @@ hint.payloadDrop = Press [accent]][] to drop a payload. hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. item.copper.description = Used in all types of construction and ammunition. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. diff --git a/core/assets/maps/ruinousShores.msav b/core/assets/maps/ruinousShores.msav index 41e957c0ff971cf11abb1aa10a4daa920edde6cf..48727feae4abb2077b544c010429afe70082b79a 100644 GIT binary patch delta 18187 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 delta 18053 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 { - + node(illuminator, () -> { + + }); }); }); diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 3eed5e0164..de7cf6f60c 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -33,9 +33,8 @@ public class GameState{ /** Current game state. */ private State state = State.menu; - //TODO optimize public Unit boss(){ - return Groups.unit.find(u -> u.isBoss() && u.team == rules.waveTeam); + return teams.boss; } public void set(State astate){ diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index da5edfd0db..1c06372731 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -26,6 +26,8 @@ public class Teams{ public Seq active = new Seq<>(); /** Teams with block or unit presence. */ public Seq present = new Seq<>(TeamData.class); + /** Current boss unit. */ + public @Nullable Unit boss; public Teams(){ active.add(get(Team.crux)); @@ -178,6 +180,10 @@ public class Teams{ data.units.add(unit); data.presentFlag = true; + if(unit.team == state.rules.waveTeam && unit.isBoss()){ + boss = unit; + } + if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){ data.unitsByType = new Seq[content.units().size]; } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 1b0b1fc10b..b8f27b5f73 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -216,7 +216,7 @@ public class Universe{ if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){ //invasion chance depends on # of nearby bases if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){ - int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 5) * 5; + int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 4) * 5; //assign invasion-related things if(sector.isBeingPlayed()){ diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 8e65a0b1b9..21adaac37c 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -298,7 +298,7 @@ public class Waves{ begin = f; end = f + next >= cap ? never : f + next; max = 13; - unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier]; + unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier]; shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; diff --git a/core/src/mindustry/ui/fragments/HintsFragment.java b/core/src/mindustry/ui/fragments/HintsFragment.java index eb029789fe..f967518cb4 100644 --- a/core/src/mindustry/ui/fragments/HintsFragment.java +++ b/core/src/mindustry/ui/fragments/HintsFragment.java @@ -150,7 +150,7 @@ public class HintsFragment extends Fragment{ depositItems(() -> player.unit().hasItem(), () -> !player.unit().hasItem()), desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active(), () -> Core.input.keyTap(Binding.pause)), research(isTutorial, () -> ui.research.isShown()), - unitControl(() -> state.rules.defaultTeam.data().units.size > 1 && !net.active(), () -> !player.dead() && !player.unit().spawnedByCore), + unitControl(() -> state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore), respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore), launch(() -> isTutorial.get() && state.rules.sector.isCaptured(), () -> ui.planet.isShown()), schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router), () -> Core.input.keyRelease(Binding.schematic_select) || Core.input.keyTap(Binding.pick)), @@ -161,6 +161,7 @@ public class HintsFragment extends Fragment{ payloadDrop(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().any(), () -> player.unit() instanceof Payloadc p && p.payloads().isEmpty()), waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0), generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)), + guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null), ; @Nullable From 6f751161973c4efd13cc7c00dd349aeb01a79273 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Mon, 23 Nov 2020 20:06:37 +0100 Subject: [PATCH 021/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 218 ++++++++++++----------- 1 file changed, 110 insertions(+), 108 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 909659417e..1c4d7a716d 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -146,9 +146,10 @@ noname = Elige un[accent] nombre de jugador[] primero. planetmap = Mapa del planeta launchcore = Lanzar núcleo filename = Nombre del archivo: -unlocked = ¡Nuevo Bloque Desbloqueado! +unlocked = ¡Nuevo contenido en la Base de Datos! +available = ¡Nueva investigación disponible! completed = [accent]Completado -techtree = Árbol de Tecnologías +techtree = Tecnologías research.list = [lightgray]Investigación: research = Investigación researched = [lightgray]{0} investigado. @@ -187,7 +188,7 @@ hosts.discovering = Buscando partidas en LAN... hosts.discovering.any = Buscando partidas server.refreshing = Actualizando servidor... hosts.none = [lightgray]No se han encontrado partidas en LAN -host.invalid = [scarlet]No se ha podido conectar al anfitrión +host.invalid = [scarlet]No se pudo conectar con el anfitrión servers.local = Servidores Locales servers.remote = Servidores Remotos @@ -540,10 +541,10 @@ sectors.resume = Reanudar sectors.launch = Lanzar sectors.select = Elegir sectors.nonelaunch = [lightgray]Ninguno (Sol) -sectors.rename = Renombrar Sector +sectors.rename = Renombrar sector sectors.enemybase = [scarlet]Base enemiga sectors.vulnerable = [scarlet]Vulnerable -sectors.underattack = [scarlet]¡Bajo ataque! [accent]{0}% Dañado +sectors.underattack = [scarlet]¡Bajo ataque! [accent]{0}% dañado sectors.survives = [accent]Sobrevive {0} oleadas sectors.go = Ir sector.curcapture = Sector Capturado @@ -552,7 +553,7 @@ sector.missingresources = [scarlet]Recursos Insuficientes sector.attacked = Sector [accent]{0}[white] bajo ataque[]! sector.lost = ¡Sector [accent]{0}[white] perdido[]! #nota: el espacio en blanco en la línea siguiente es intencionado -sector.captured = Sector [accent]{0}[white]capturado[]! +sector.captured = ¡Sector [accent]{0}[white] capturado[]! threat.low = Baja threat.medium = Media @@ -604,31 +605,31 @@ settings.game = Juego settings.sound = Sonido settings.graphics = Gráficos settings.cleardata = Eliminando Datos del Juego... -settings.clear.confirm = ¿Estas seguro de querer eliminar estos datos?\n¡Esta acción no se puede deshacer! +settings.clear.confirm = ¿Quieres eliminar estos datos?\n¡Esta acción no se puede deshacer! settings.clearall.confirm = [scarlet]¡ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego borrrará todos tus datos y se cerrará automáticamente. -settings.clearsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas? +settings.clearsaves.confirm = ¿Quieres borrar tus partidas guardadas? settings.clearsaves = Limpiar partidas guardadas settings.clearresearch = Borrar Investigaciones Tecnológicas -settings.clearresearch.confirm = ¿Estas seguro? +settings.clearresearch.confirm = ¿Quieres eliminar todo el progreso de las Investigaciones Tecnológicas del modo Campaña? settings.clearcampaignsaves = Borrar datos de campaña -settings.clearcampaignsaves.confirm = ¿Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña? +settings.clearcampaignsaves.confirm = ¿Quieres borrar tus partidas guardadas en el modo campaña? paused = [accent] < Pausado > clear = Vaciar banned = [scarlet]Baneado yes = Sí no = No -info.title = [accent]Información +info.title = Información error.title = [crimson]Ha ocurrido un error. error.crashtitle = Ha ocurrido un error. unit.nobuild = [scarlet]Esta unidad no puede construir -lastaccessed = [lightgray]Anteriormente usado: {0} +lastaccessed = [lightgray]Último usado: {0} block.unknown = [lightgray]??? -stat.description = Descripción +stat.description = Objetivo stat.input = Entrada stat.output = Salida stat.booster = Potenciador -stat.tiles = Tiles requeridos +stat.tiles = Terreno requerido stat.affinities = Afinidades stat.powercapacity = Capacidad de Energía stat.powershot = Energía/Disparo @@ -637,9 +638,9 @@ stat.targetsair = Apunta al Aire stat.targetsground = Apunta a Tierra stat.itemsmoved = Velocidad de movimiento stat.launchtime = Tiempo entre lanzamientos -stat.shootrange = Rango de Disparo +stat.shootrange = Alcance stat.size = Tamaño -stat.displaysize = Tamaño mostrado +stat.displaysize = Tamaño de Pantalla stat.liquidcapacity = Capacidad de Líquidos stat.powerrange = Rango de Energía stat.linkrange = Alcance de conexión @@ -649,13 +650,15 @@ stat.poweruse = Consumo de Energía stat.powerdamage = Energía/Daño stat.itemcapacity = Capacidad de Objetos stat.memorycapacity = Capacidad de memoria -stat.basepowergeneration = Generación de energía base +stat.basepowergeneration = Generación de energía stat.productiontime = Tiempo de producción stat.repairtime = Tiempo para Reparar Bloque Completamente +stat.weapons = Armas +stat.bullet = Proyectil stat.speedincrease = Aumento de Velocidad stat.range = Alcance stat.drilltier = Taladrables -stat.drillspeed = Velocidad Base del Taladro +stat.drillspeed = Velocidad del Taladro stat.boosteffect = Efecto de Potenciador stat.maxunits = Máximo de Unidades Activas stat.health = Vida @@ -684,17 +687,19 @@ stat.minetier = Nivel de taladro stat.payloadcapacity = Capacidad de carga stat.commandlimit = Límite de comando stat.abilities = Habilidades +stat.canboost = Puede Acelerar +stat.flying = Aéreo -skill.forcefield = Campo de Escudo -skill.repairfield = Campo de Reparación -skill.statusfield = Campo de Estado -skill.unitspawn = {0} Fábrica -skill.shieldregenfield = Campo de Regeneración de Escudos +skill.forcefield = Zona de Escudo +skill.repairfield = Zona de Reparación +skill.statusfield = Zona de Estado +skill.unitspawn = {0} Fábrica de Drones +skill.shieldregenfield = Zona de Regeneración de Escudos +ability.movelightning = Movimiento Relámpago bar.drilltierreq = Se requiere un taladro mejor. bar.noresources = Recursos faltantes -bar.corereq = Se requiere de un núcleo base - +bar.corereq = Necesitas un núcleo base bar.drillspeed = Velocidad del Taladro: {0}/s bar.pumpspeed = Velocidad de bombeado: {0}/s bar.efficiency = Eficiencia: {0}% @@ -719,16 +724,18 @@ units.processorcontrol = [lightgray]Procesador Controlado bullet.damage = [stat]{0}[lightgray] Daño bullet.splashdamage = [stat]{0}[lightgray] daño de área ~[stat] {1}[lightgray] casillas bullet.incendiary = [stat]Incendiaria +bullet.sapping = [stat]Oxidante bullet.homing = [stat]Rastreadora bullet.shock = [stat]Electrizante -bullet.frag = [stat]Explosiva -bullet.knockback = [stat]{0}[lightgray]Empuje -bullet.pierce = [stat]{0}[lightgray]x Penetración +bullet.frag = [stat]De fragmentación +bullet.knockback = [stat]{0}[lightgray] Empuje +bullet.pierce = [stat]{0}[lightgray]x penetración bullet.infinitepierce = [stat]Penetrante +bullet.healpercent = [stat]{0}[lightgray]% reparación bullet.freezing = [stat]Congelación -bullet.tarred = [stat]Relantizado +bullet.tarred = [stat]Ralentizado bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munición -bullet.reload = [stat]{0}[lightgray]x recarga +bullet.reload = [stat]{0}[lightgray]x cadencia de fuego unit.blocks = bloques unit.blockssquared = bloques² @@ -744,13 +751,12 @@ unit.persecond = /seg unit.perminute = /min unit.timesspeed = x velocidad unit.percent = % - unit.shieldhealth = Escudo - unit.items = objetos unit.thousands = k unit.millions = M unit.billions = b +category.purpose = Objetivo category.general = General category.power = Energía category.liquids = Líquidos @@ -763,10 +769,9 @@ setting.shadows.name = Sombras setting.blockreplace.name = Sugerir bloques al construir setting.linear.name = Filtrado Lineal setting.hints.name = Consejos - setting.flow.name = Mostrar tasa de flujo de recursos +setting.backgroundpause.name = Pausar en segundo plano setting.buildautopause.name = Auto-pausar construcción - setting.animatedwater.name = Animaciones de Terreno setting.animatedshields.name = Animación de Escudos setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[] @@ -780,35 +785,32 @@ setting.fpscap.none = Nada setting.fpscap.text = {0} FPS setting.uiscale.name = Escala de Interfaz[lightgray] (necesita reiniciar)[] setting.swapdiagonal.name = Siempre Construir Diagonalmente -setting.difficulty.training = entrenamiento -setting.difficulty.easy = fácil -setting.difficulty.normal = normal -setting.difficulty.hard = difícil -setting.difficulty.insane = locura +setting.difficulty.training = Entrenamiento +setting.difficulty.easy = Fácil +setting.difficulty.normal = Normal +setting.difficulty.hard = Difícil +setting.difficulty.insane = Demencial setting.difficulty.name = Dificultad: -setting.screenshake.name = Movimiento de la pantalla +setting.screenshake.name = Vibración de pantalla setting.effects.name = Mostrar efectos setting.destroyedblocks.name = Mostrar bloques destruidos setting.blockstatus.name = Mostrar estado de los bloques setting.conveyorpathfinding.name = Construcción de transportadores Inteligente setting.sensitivity.name = Sensibilidad del Mando setting.saveinterval.name = Intervalo del Autoguardado -setting.seconds = {0} Segundos -setting.blockselecttimeout.name = Tiempo de espera de selección de bloque +setting.seconds = {0} segundos setting.milliseconds = {0} milisegundos setting.fullscreen.name = Pantalla Completa setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio) setting.fps.name = Mostrar FPS y Ping setting.smoothcamera.name = Movimiento de cámara suave - - -setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla) +setting.vsync.name = VSync (Limita los fps a los Hz de tu pantalla) setting.pixelate.name = Pixelar setting.minimap.name = Mostrar Minimapa setting.coreitems.name = Mostrar elementos en el nucleo (WIP) setting.position.name = Mostrar indicadores de posición de jugadores. setting.musicvol.name = Volumen de la Música -setting.atmosphere.name = Mostrar atmosfera del planeta +setting.atmosphere.name = Mostrar Atmósfera del planeta setting.ambientvol.name = Volumen del Ambiente setting.mutemusic.name = Silenciar Musica setting.sfxvol.name = Volumen de los efectos de sonido @@ -847,11 +849,9 @@ keybind.toggle_power_lines.name = Ocultar Láser de Red Eléctrica keybind.toggle_block_status.name = Alternar estado de los bloques keybind.move_x.name = Mover x keybind.move_y.name = Mover y -keybind.mouse_move.name = Seguír al Cursor del Ratón - +keybind.mouse_move.name = Seguir al Cursor del Ratón keybind.pan.name = Desplazar la cámara keybind.boost.name = Acelerar - keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menu de Plantillas keybind.schematic_flip_x.name = Invertir Plantilla desde X @@ -887,6 +887,8 @@ keybind.menu.name = Menú keybind.pause.name = Pausa keybind.pause_building.name = Pausar/Reanudar construcción keybind.minimap.name = Minimapa +keybind.planet_map.name = Mapa del Planeta +keybind.research.name = Investigaciones keybind.chat.name = Chat keybind.player_list.name = Lista de jugadores keybind.console.name = Consola @@ -936,7 +938,6 @@ rules.title.resourcesbuilding = Recursos y Construcción rules.title.enemy = Enemigos rules.title.unit = Unidades rules.title.experimental = Experimental - rules.title.environment = Entorno rules.lighting = Iluminación rules.enemyLights = Luces enemigas @@ -947,11 +948,11 @@ rules.weather = Clima rules.weather.frequency = Frequencia: rules.weather.duration = Duracion: - content.item.name = Objetos content.liquid.name = Líquidos content.unit.name = Unidades content.block.name = Bloques +content.sector.name = Sectores item.copper.name = Cobre item.lead.name = Plomo @@ -974,7 +975,6 @@ liquid.slag.name = Fundido liquid.oil.name = Petróleo liquid.cryofluid.name = Líquido criogénico - unit.dagger.name = Daga unit.mace.name = Mazo unit.fortress.name = Fortaleza @@ -1010,16 +1010,14 @@ unit.vela.name = Vela unit.corvus.name = Corvo block.resupply-point.name = Punto de reabastecimiento - -block.parallax.name = Paralaje +block.parallax.name = Parallax block.cliff.name = Acantilado - -block.sand-boulder.name = Piedra de arena +block.sand-boulder.name = Roca de arena +block.basalt-boulder.name = Roca de basalto block.grass.name = Hierba -block.slag.name = Escoria +block.slag.name = Magma block.space.name = Espacio block.salt.name = Sal - block.salt-wall.name = Muro de sal block.pebbles.name = Guijarros block.tendrils.name = Zarcillos @@ -1028,16 +1026,13 @@ block.spore-pine.name = Pino de esporas block.spore-wall.name = Muro de esporas block.boulder.name = Roca block.snow-boulder.name = Roca de nieve - block.snow-pine.name = Pino de nieve block.shale.name = Pizarra block.shale-boulder.name = Piedra de pizarra block.moss.name = Musgo block.shrubs.name = Arbustos block.spore-moss.name = Musgo de esporas - block.shale-wall.name = Muro de pizarra - block.scrap-wall.name = Muro de chatarra block.scrap-wall-large.name = Muro de chatarra grande block.scrap-wall-huge.name = Muro de chatarra muy grande @@ -1107,7 +1102,7 @@ block.thorium-wall.name = Pared de Torio block.thorium-wall-large.name = Muro de Torio grande block.door.name = Puerta block.door-large.name = Puerta Grande -block.duo.name = Dúo +block.duo.name = Duo block.scorch.name = Quemador block.scatter.name = Dispersor block.hail.name = Granizo @@ -1116,7 +1111,6 @@ block.conveyor.name = Cinta Transportadora block.titanium-conveyor.name = Cinta Transportadora de Titanio block.plastanium-conveyor.name = Cinta Transportadora de Plastanio block.armored-conveyor.name = Cinta Transportadora Acorazada -block.armored-conveyor.description = Mueve items a la misma veolcidad que una cinta de titanio, pero tiene mas defensa. No acepta entradas por los lados a menos que sean lineas transportadoras. block.junction.name = Cruce block.router.name = Enrutador block.distributor.name = Distribuidor @@ -1124,7 +1118,6 @@ block.sorter.name = Clasificador block.inverted-sorter.name = Clasificador Invertido block.message.name = Mensaje block.illuminator.name = Iluminador -block.illuminator.description = Una fuente de luz compacta y configurable. Requiere poder para funcionar. block.overflow-gate.name = Compuerta de Desborde block.underflow-gate.name = Compuerta de Subdesbordamiento block.silicon-smelter.name = Horno para Silicio @@ -1160,8 +1153,8 @@ block.liquid-void.name = Vacío de líquidos block.power-void.name = Vacío de energía block.power-source.name = Energía Infinita block.unloader.name = Descargador -block.vault.name = Bóveda -block.wave.name = Ola +block.vault.name = Almacén +block.wave.name = Wave block.tsunami.name = Tsunami block.swarmer.name = Enjambre block.salvo.name = Salva @@ -1190,7 +1183,7 @@ block.thermal-pump.name = Bomba Térmica block.thermal-generator.name = Generador Térmico block.alloy-smelter.name = Fundidor de Materia block.mender.name = Reparador -block.mend-projector.name = Proyector de reparación +block.mend-projector.name = Proyector de Reparación block.surge-wall.name = Muro de Sobretensión block.surge-wall-large.name = Muro de Sobretensión grande block.cyclone.name = Ciclón @@ -1208,21 +1201,23 @@ block.launch-pad.name = Pad de Lanzamiento block.launch-pad-large.name = Pad de Lanzamiento Grande block.segment.name = Segmento block.command-center.name = Centro de comando - block.ground-factory.name = Fábrica terrestre block.air-factory.name = Fábrica aérea - block.naval-factory.name = Fábrica naval block.additive-reconstructor.name = Reconstructor aditivo block.multiplicative-reconstructor.name = Reconstructor multiplicativo block.exponential-reconstructor.name = Reconstructor exponencial block.tetrative-reconstructor.name = Reconstructor tetrativo - block.payload-conveyor.name = Transportador de carga block.payload-router.name = Enrutador de carga block.disassembler.name = Desensamblador block.silicon-crucible.name = Crisol de silicio block.overdrive-dome.name = Campo de Aceleración +#experimental, puede ser eliminado +block.block-forge.name = Fundidor de Bloques +block.block-loader.name = Cargador de Bloques +block.block-unloader.name = Descargador de Bloques +block.interplanetary-accelerator.name = Acelerador Interplanetario block.switch.name = Interruptor block.micro-processor.name = Micro Processador @@ -1231,40 +1226,53 @@ block.hyper-processor.name = Hiperprocesador block.logic-display.name = Pantalla lógica block.large-logic-display.name = Pantalla lógica grande block.memory-cell.name = Unidad de memoria -block.memory-bank.name = Disco de memoria +block.memory-bank.name = Servidor de memoria +team.blue.name = azul +team.crux.name = rojo +team.sharded.name = naranja +team.orange.name = naranja +team.derelict.name = abandonado +team.green.name = verde +team.purple.name = morado -team.blue.name = Azul -team.crux.name = Rojo -team.sharded.name = Naranja -team.orange.name = Naranja +hint.skip = Omitir +hint.desktopMove = Usa [accent][[WASD][] para moverte. +hint.zoom = [accent]Scroll[] para controlar el zoom. +hint.mine = Acércate a \uf8c4 una veta de cobre [accent]tócala[]\n para extraer cobre manualmente. +hint.desktopShoot = [accent][[Left-click][] para disparar. +hint.depositItems = Deposita objetos arrastrándolos desde tu nave hasta el núcleo. +hint.respawn = Para sacar otra nave, pulsa [accent][[V][]. +hint.respawn.mobile = Has pasado a controlar una unidad/estructura. Para volver a manejar la nave, [accent]toca el icono arriba a la izquierda.[] +hint.desktopPause = Pulsa [accent][[Space][] para pausar y reanudar la partida. +hint.placeDrill = Selecciona la pestaña de \ue85e [accent]Taladros[] en el menú abajo a la derecha, luego escoge un \uf870 [accent]Taladro[] y haz clic sobre una veta de cobre para colocarlo. +hint.placeDrill.mobile = Selecciona la pestaña de \ue85e [accent]Taladros[] en el menú abajo a la derecha, luego escoge un \uf870 [accent]Taladro[] y toca sobre una veta de cobre para colocarlo.\n\nPulsa el botón con la \ue800 [accent]"V"[] abajo a la derecha para confirmar. -team.derelict.name = Abandonado - -team.green.name = Verde -team.purple.name = Morado - -tutorial.next = [lightgray] -tutorial.intro = Has entrado en el[scarlet]Tutorial de Mindustry.[]\nComienza[accent]minando cobre[]. Para ello, toca en una veta de cobre cercana al núcleo.\n\n[accent]{0}/{1} cobre -tutorial.intro.mobile = Has entrado en el[scarlet] Tutorial []de Mindustry.\nArrastra la pantalla para moverte.\n[accent]Pellizca con 2 dedos [] para alejar y acercar la vista.\nComienza por[accent] minar cobre[]. Para ello, aproxímate a una veta de mineral de cobre cercana al núcleo y tócala.\n\n[accent]{0}/{1} cobre -tutorial.drill = Minar manualmente es ineficiente.\nLos [accent]taladros []pueden minar automáticamente.\nColoca uno sobre una veta de cobre. -tutorial.drill.mobile = Minar manualmente no es muy eficiente.\nLos [accent]taladros []pueden minar automáticamente.\nToca la sección de taladros en la esquina inferior derecha.\nSelecciona el [accent]taladro mecánico[].\nColócalo en una veta de cobre tocándola, después pulsa el [accent]botón de confirmación[] de debajo para confirmar tu selección.\nTambién puedes pulsar el [accent]botón "X" []para cancelar la construcción. -tutorial.blockinfo = Cada bloque tiene diferentes estadísticas. Cada taladro solo puede minar ciertos minerales.\nPara comprobar la información y estadísticas de un bloque, toca el botón [accent]"?"[] mientras lo tienes seleccionado en el menú de construcción.\n\nPrueba a acceder a las [accent]estadísticas[] del Taladro Mecánico. -tutorial.conveyor = Las [accent]Cintas Transportadoras[] se usan para transportar recursos.\nConstruye una línea de transportadores del taladro al núcleo. -tutorial.conveyor.mobile = Las [accent]Cintas Transportadoras[] se usan para transportar recursos.\nConstruye una línea de transportadores del taladro al núcleo.\n[accent] Puedes construir una línea manteniendo el dedo unos segundos y arrastrando hacia una dirección.[]\n\n[accet]{0}/{1} cintas colocadas en línea\n[ccent]]0/1 recursos transportados. -tutorial.turret = Debes construir estructuras defensivas para repeler al [lightgray]enemigo[].\nConstruye una torreta "dúo" cerca de tu base. -tutorial.drillturret = Los dúos requieren[accent] munición de cobre[] para disparar.\nColoca un taladro junto a la torre para suministrarle cobre. \nTambien puedes hacer una línea de transportadores desde el taladro hasta el dúo. -tutorial.pause = Durante la batalla, puedes [accent]pausar el juego.[]\nPuedes dejar estructuras en cola mientras está pausado.\n\n[accent]Pulsa Espacio para pausar. -tutorial.pause.mobile = Durante la batalla, puedes[accent] pausar el juego.[]\nPuedes dejar estructuras en cola mientras está pausado.\n\n[accent]Pulsa este boton de arriba a la izquierda para pausar.[] -tutorial.unpause = Ahora pulsa Espacio otra vez para reanudar. -tutorial.unpause.mobile = Ahora púlsalo otra vez para reanudar. -tutorial.breaking = En muchas ocasiones, será necesario destruir bloques.\n[accent]Mantén el botón derecho[] para deconstruir todos los bloques en una selección.[]\n\n[accent]Deconstruye todos los bloques de chatarra de la izquierda de tu núcleo usando selección de área. -tutorial.breaking.mobile = En muchas ocasiones, será necesario destruir bloques.\n[accent]Selecciona el modo de desonstrucción[], después toca un bloque para comenzar a deconstruirlo.\nDestruye un área manteniendo tu dedo algunos segundos[] y arrastrando hacia una dirección.\nUsa el botón de confirmación para confirmar la destrucción.\n\n[accent]Destruye todos los bloques de chatarra de la izquierda de tu núcleo usando la selección de área.[] -tutorial.withdraw =A veces, es necesario coger recursos directamente de bloques.\nPara hacer esto, [accent]toca un bloque[] con recursos en él, después [accent]toca el recurso[] en el inventario.\nSe pueden sacar múltiples recursos [accent]tocando y manteniendo[].\n\n[accent]Saca algo de cobre del núcleo.[] -tutorial.deposit = Deposita recursos en bloques arrastrándolos de tu nave al bloque de destino.\n\n[accent]Deposita tu cobre otra vez en el núcleo.[] -tutorial.waves = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Construye más torretas y taladros. Mina más cobre. -tutorial.waves.mobile = El[lightgray] enemigo[] se acerca.\n\nDefiende tu núcleo por 2 oleadas. Tu nave puede disparar automáticamente a los enemigos.\nConstruye más torretas y taladros. Mina más cobre. -tutorial.launch = Una vez llegues a cierta oleada, podrás[accent]lanzar el núcleo[], dejando atrás tus defensas y los recursos en tu núcleo.[]\nEstos recursos pueden ser usados para investigar nueva tecnología.\n\n[accent]Pulsa el botón de lanzamiento. +############ +hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. +hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. +hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. +hint.breaking = [accent]Right-click[] and drag to break blocks. +hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. +hint.research = Use the \ue875 [accent]Research[] button to research new technology. +hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. +hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. +hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. +hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. +hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. +hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. +hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. +hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. +hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. +hint.command = Press [accent][[G][] to command nearby units into formation. +hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. +hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. +hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. +hint.payloadDrop = Press [accent]][] to drop a payload. +hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. +hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. +hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. +####### item.copper.description = Un útil material de estructura. Usado extensivamente en todo tipo de bloques. item.lead.description = Un material básico. Usado en electrónicos y bloques de transferencia de líquidos. @@ -1282,6 +1290,7 @@ item.surge-alloy.description = Una aleación avanzada con propiedades eléctrica item.spore-pod.description = Utilizado para ser convertido en petróleo, explosivos y combustible. item.blast-compound.description = Un compuesto volátil usado en bombas y explosivos. Se puede quemar como combustible, pero no es recomendable. item.pyratite.description = Un compuesto extremadamente inflamable usada en armas incendiarias. + liquid.water.description = Usada comúnmente para enfriar máquinas y para procesar residuos. liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o expulsado a unidades enemigas como arma. liquid.oil.description = Puede ser quemado, explotado o usado como un enfriador. @@ -1399,10 +1408,3 @@ block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perf block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. block.segment.description = Daña y destruye proyectiles enemigos. No apunta a láseres. -# -#511//zone.unlocked = [lightgray]{0} desbloqueado. -#zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. -#zone.resources = Recursos Detectados: -#zone.objective = [lightgray]Objetivo: [accent]{0} -#zone.objective.survival = Sobrevivir -#zone.objective.attack = Destruir Núcleo Enemigo From 741e6b55b04f28d6af5936d547f6ca42fbc48475 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Mon, 23 Nov 2020 20:09:33 +0100 Subject: [PATCH 022/162] Update contributors --- core/assets/contributors | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index 39c29ff93a..4ed0124d4b 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,3 +1,4 @@ +Angel_24 Prosta4okua Felix Corvus Vanguard @@ -100,4 +101,4 @@ MEEP of Faith jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) -Headphaze (freesound.org) \ No newline at end of file +Headphaze (freesound.org) From 7c79ee469e0ea9b1bd0ef0684883b7c6af5770c7 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Mon, 23 Nov 2020 20:11:27 +0100 Subject: [PATCH 023/162] Update contributors --- core/assets/contributors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index 4ed0124d4b..f5c5a36107 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,4 +1,4 @@ -Angel_24 +Angel-24 Prosta4okua Felix Corvus Vanguard From ec19381c4e9afc92c4d5c1ef5ed3d9769cf3d231 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 15:41:10 -0500 Subject: [PATCH 024/162] Fixed campaign bases having ridiculous wall tiers --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/content/Items.java | 1 + core/src/mindustry/maps/SectorDamage.java | 6 +++--- core/src/mindustry/maps/generators/BaseGenerator.java | 2 +- core/src/mindustry/type/Planet.java | 4 ++-- core/src/mindustry/world/blocks/campaign/LaunchPad.java | 8 ++++++++ core/src/mindustry/world/blocks/units/UnitFactory.java | 5 +---- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 33ab9b2778..0ba749cc57 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1261,7 +1261,7 @@ hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. -hint.command = Press [accent][[G][] to command nearby units into formation. +hint.command = Press [accent][[G][] to command nearby units of [accent]similar type[] into formation.\n\nTo command ground units, you must first control another ground unit. hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index 6d3964fd2c..2c2e5eb60b 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -72,6 +72,7 @@ public class Items implements ContentList{ }}; surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{ + cost = 1.2f; }}; sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{ diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 156c49515f..993d49d72f 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -233,7 +233,7 @@ public class SectorDamage{ //first, calculate the total health of blocks in the path //radius around the path that gets counted - int radius = 9; + int radius = 8; IntSet counted = new IntSet(); for(Tile t : sparse2){ @@ -335,9 +335,9 @@ public class SectorDamage{ info.waveDpsSlope = reg.slope; //enemy units like to aim for a lot of non-essential things, so increase resulting health slightly - info.sumHealth = sumHealth * 1.3f; + info.sumHealth = sumHealth * 1.18f; //players tend to have longer range units/turrets, so assume DPS is higher - info.sumDps = sumDps * 1.3f; + info.sumDps = sumDps * 1.18f; info.sumRps = sumRps; info.wavesSurvived = getWavesSurvived(info); diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index 8a5bf215ab..2677f95c22 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -55,7 +55,7 @@ public class BaseGenerator{ BasePart coreschem = bases.cores.getFrac(difficulty); int passes = difficulty < 0.4 ? 1 : difficulty < 0.8 ? 2 : 3; - Block wall = wallsSmall.getFrac(difficulty), wallLarge = wallsLarge.getFrac(difficulty); + Block wall = wallsSmall.getFrac(difficulty * 0.91f), wallLarge = wallsLarge.getFrac(difficulty * 0.91f); for(Tile tile : cores){ tile.clearOverlay(); diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 0f872b393d..b4917e519e 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -182,12 +182,12 @@ public class Planet extends UnlockableContent{ float sum = 1f; for(Sector other : sector.near()){ if(other.generateEnemyBase){ - sum += 1f; + sum += 0.9f; } } if(sector.hasEnemyBase()){ - sum += 1.9f; + sum += 1f; } sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f); diff --git a/core/src/mindustry/world/blocks/campaign/LaunchPad.java b/core/src/mindustry/world/blocks/campaign/LaunchPad.java index aa259efea6..d72c1f133a 100644 --- a/core/src/mindustry/world/blocks/campaign/LaunchPad.java +++ b/core/src/mindustry/world/blocks/campaign/LaunchPad.java @@ -19,6 +19,7 @@ import mindustry.graphics.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.consumers.*; import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -38,6 +39,7 @@ public class LaunchPad extends Block{ solid = true; update = true; configurable = true; + drawDisabled = false; } @Override @@ -61,6 +63,12 @@ public class LaunchPad extends Block{ return !state.isCampaign() || net.client() ? SystemCursor.arrow : super.getCursor(); } + //cannot be disabled + @Override + public float efficiency(){ + return power != null && (block.consumes.has(ConsumeType.power) && !block.consumes.getPower().buffered) ? power.status : 1f; + } + @Override public void draw(){ super.draw(); diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 6b2156e566..1a257d9565 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -53,15 +53,12 @@ public class UnitFactory extends UnitBlock{ @Override public void init(){ capacities = new int[Vars.content.items().size]; - itemCapacity = 0; for(UnitPlan plan : plans){ for(ItemStack stack : plan.requirements){ capacities[stack.item.id] = Math.max(capacities[stack.item.id], stack.amount * 2); + itemCapacity = Math.max(itemCapacity, stack.amount * 2); } } - for(int i : capacities){ - itemCapacity += i; - } super.init(); } From 06929ee8f39abf2cddada0fbc1a6146e513483ce Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 15:47:15 -0500 Subject: [PATCH 025/162] Fixed boss hint not disappearing --- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/game/Teams.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b6f8e76b14..02d3820bc4 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -363,7 +363,7 @@ public class Blocks implements ContentList{ sandWall = new StaticWall("sand-wall"){{ variants = 2; - sandWater.asFloor().wall = this; + sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this; }}; saltWall = new StaticWall("salt-wall"); diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index 1c06372731..d5afac1217 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -146,6 +146,7 @@ public class Teams{ public void updateTeamStats(){ present.clear(); + boss = null; for(Team team : Team.all){ TeamData data = team.data(); From 2282cb89b11f7280e2e4da307dcfc7915faf9ee4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 18:09:20 -0500 Subject: [PATCH 026/162] Fixed sector damage calculations / Campaign balance --- core/assets/maps/windsweptIslands.msav | Bin 13400 -> 13484 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/TechTree.java | 1 + core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/game/Waves.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 30 ++++++++++++---------- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/core/assets/maps/windsweptIslands.msav b/core/assets/maps/windsweptIslands.msav index d5e838b60dd4f312d7d8bce89580163b850e9216..2c8547f6f9676540b7aef2129f4291928ccdfd01 100644 GIT binary patch literal 13484 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 literal 13400 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 { //main sequence diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 993d49d72f..045a0bd75b 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -111,23 +111,26 @@ public class SectorDamage{ float damage = getDamage(state.rules.sector.info); //scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier) - float scaled = Mathf.pow(damage, 1.6f); + float scaled = Mathf.pow(damage, 1.2f); - //apply damage to units - float unitDamage = damage * state.rules.sector.info.sumHealth; Tile spawn = spawner.getFirstSpawn(); //damage only units near the spawn point if(spawn != null){ Seq allies = new Seq<>(); + float sumUnitHealth = 0f; for(Unit ally : Groups.unit){ if(ally.team == state.rules.defaultTeam && ally.within(spawn, state.rules.dropZoneRadius * 2.5f)){ allies.add(ally); + sumUnitHealth += ally.health; } } allies.sort(u -> u.dst2(spawn)); + //apply damage to units + float unitDamage = damage * sumUnitHealth; + //damage units one by one, not uniformly for(var u : allies){ if(u.health < unitDamage){ @@ -335,9 +338,9 @@ public class SectorDamage{ info.waveDpsSlope = reg.slope; //enemy units like to aim for a lot of non-essential things, so increase resulting health slightly - info.sumHealth = sumHealth * 1.18f; + info.sumHealth = sumHealth * 1.2f; //players tend to have longer range units/turrets, so assume DPS is higher - info.sumDps = sumDps * 1.18f; + info.sumDps = sumDps * 1.2f; info.sumRps = sumRps; info.wavesSurvived = getWavesSurvived(info); @@ -348,13 +351,12 @@ public class SectorDamage{ Queue frontier = new Queue<>(); float[][] values = new float[tiles.width][tiles.height]; - float damage = fraction*80; //arbitrary damage value //phase one: find all spawnpoints for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = damage; + values[tile.x][tile.y] = fraction * 80; } } @@ -368,14 +370,16 @@ public class SectorDamage{ int radius = 3; //only penetrate a certain % by health, not by distance - float totalHealth = damage >= 1f ? 1f : path.sumf(t -> { + float totalHealth = fraction >= 1f ? 1f : path.sumf(t -> { float s = 0; for(int dx = -radius; dx <= radius; dx++){ for(int dy = -radius; dy <= radius; dy++){ int wx = dx + t.x, wy = dy + t.y; if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){ Tile other = world.rawTile(wx, wy); - s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + if(!(other.block() instanceof CoreBlock)){ + s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + } } } } @@ -385,7 +389,7 @@ public class SectorDamage{ float healthCount = 0; out: - for(int i = 0; i < path.size && (healthCount < targetHealth || damage >= 1f); i++){ + for(int i = 0; i < path.size && (healthCount < targetHealth || fraction >= 1f); i++){ Tile t = path.get(i); for(int dx = -radius; dx <= radius; dx++){ @@ -405,7 +409,7 @@ public class SectorDamage{ removal.add(other.build); - if(healthCount >= targetHealth && damage < 0.999f){ + if(healthCount >= targetHealth && fraction < 0.999f){ break out; } } @@ -430,10 +434,10 @@ public class SectorDamage{ } } - float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); + float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; - if(damage > 0.1f){ + if(fraction > 0.1f){ //phase two: propagate the damage while(!frontier.isEmpty()){ peak = Math.max(peak, frontier.size); From 97254a66720a227906b3c6ab7ecbad386634a8ca Mon Sep 17 00:00:00 2001 From: Volas171 <60143910+Volas171@users.noreply.github.com> Date: Mon, 23 Nov 2020 22:27:08 -0500 Subject: [PATCH 027/162] Update contributors --- core/assets/contributors | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index 39c29ff93a..d38692de8c 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,3 +1,4 @@ +VolasYouKnow Prosta4okua Felix Corvus Vanguard @@ -100,4 +101,4 @@ MEEP of Faith jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) -Headphaze (freesound.org) \ No newline at end of file +Headphaze (freesound.org) From 12d045c6312ecc40a2307e524b27315abc5b13c5 Mon Sep 17 00:00:00 2001 From: Skat <55407440+skykatik@users.noreply.github.com> Date: Tue, 24 Nov 2020 09:34:29 +0300 Subject: [PATCH 028/162] [Typo] comiting changes* --- core/assets/bundles/bundle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 0ba749cc57..147bdb1df2 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -99,7 +99,7 @@ preparingconfig = Preparing Config preparingcontent = Preparing Content uploadingcontent = Uploading Content uploadingpreviewfile = Uploading Preview File -committingchanges = Comitting Changes +committingchanges = Committing Changes done = Done feature.unsupported = Your device does not support this feature. From 8004b6ce1d8a97eb6ac003e1382322bccad904f8 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Tue, 24 Nov 2020 09:39:08 +0100 Subject: [PATCH 029/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 1c4d7a716d..6c7b500266 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -22,7 +22,6 @@ gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! gameover.waiting = [accent]Esperando el próximo mapa... highscore = [accent]¡Nuevo récord de puntuación! copied = Copiado -indev.popup = [accent]v6[] está actualmente en [accent]desarrollo[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no está totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves podría ser cambiado o eliminado.\n\nReporta bugs o cierres inesperados en [accent]Github[]. indev.notready = Esta parte del juego no esta lista aún. indev.campaign = [accent]Has llegado al final de la campaña![]\n\nEsto es todo lo lejos que puedes llegar por ahora.\nLos viajes interplanetarios se añadirán en futuras actualizaciones. From 7ffbb93ba7e06fa76e782733059ce49d873aa130 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Tue, 24 Nov 2020 10:30:33 +0100 Subject: [PATCH 030/162] Update contributors --- core/assets/contributors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index f5c5a36107..6283f50c03 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,4 +1,3 @@ -Angel-24 Prosta4okua Felix Corvus Vanguard @@ -102,3 +101,4 @@ jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) Headphaze (freesound.org) +Angel-24 From 38f4154d180264b56aa8de9d3a529191185c8aae Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Tue, 24 Nov 2020 10:47:35 +0100 Subject: [PATCH 031/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6c7b500266..515e044a72 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1237,7 +1237,7 @@ team.purple.name = morado hint.skip = Omitir hint.desktopMove = Usa [accent][[WASD][] para moverte. -hint.zoom = [accent]Scroll[] para controlar el zoom. +hint.zoom = Puedes usar la [accent]Rueda del ratón[] para controlar el zoom. hint.mine = Acércate a \uf8c4 una veta de cobre [accent]tócala[]\n para extraer cobre manualmente. hint.desktopShoot = [accent][[Left-click][] para disparar. hint.depositItems = Deposita objetos arrastrándolos desde tu nave hasta el núcleo. @@ -1246,12 +1246,12 @@ hint.respawn.mobile = Has pasado a controlar una unidad/estructura. Para volver hint.desktopPause = Pulsa [accent][[Space][] para pausar y reanudar la partida. hint.placeDrill = Selecciona la pestaña de \ue85e [accent]Taladros[] en el menú abajo a la derecha, luego escoge un \uf870 [accent]Taladro[] y haz clic sobre una veta de cobre para colocarlo. hint.placeDrill.mobile = Selecciona la pestaña de \ue85e [accent]Taladros[] en el menú abajo a la derecha, luego escoge un \uf870 [accent]Taladro[] y toca sobre una veta de cobre para colocarlo.\n\nPulsa el botón con la \ue800 [accent]"V"[] abajo a la derecha para confirmar. - -############ -hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. -hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. +hint.placeConveyor = Las cintas transportadoras pueden sacar objetos de los taladros, y moverlos hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nHaz clic y arrastra para crear una cadena con múltiples transportadores.\nUsa la [accent]Rueda del ratón[] para rotarlo. +hint.placeConveyor.mobile = Las cintas transportadoras pueden mover objetos de los taladros hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nMantén el dedo un segundo y arrastra para crear múltiples cintas transportadoras. hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. -hint.breaking = [accent]Right-click[] and drag to break blocks. +hint.breaking = Pulsa [accent]Clic-derecho[] y arrastra para destruir bloques. + +############## hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.research = Use the \ue875 [accent]Research[] button to research new technology. hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. From 1637360952b6995e27508bc6ad33eae2f0ba7e7f Mon Sep 17 00:00:00 2001 From: Skat <55407440+skykatik@users.noreply.github.com> Date: Tue, 24 Nov 2020 13:00:08 +0300 Subject: [PATCH 032/162] Deleted unnecessary DateTimeFormatter declaration --- server/src/mindustry/server/ServerControl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 2eaa0a59e1..553fd6af74 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -1003,8 +1003,7 @@ public class ServerControl implements ApplicationListener{ private void logToFile(String text){ if(currentLogFile != null && currentLogFile.length() > maxLogLength){ - String date = DateTimeFormatter.ofPattern("MM-dd-yyyy | HH:mm:ss").format(LocalDateTime.now()); - currentLogFile.writeString("[End of log file. Date: " + date + "]\n", true); + currentLogFile.writeString("[End of log file. Date: " + dateTime.format(LocalDateTime.now()) + "]\n", true); currentLogFile = null; } From 7a59c7bc2496a39a733728ecefb272c7155acd5d Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Tue, 24 Nov 2020 13:22:42 +0200 Subject: [PATCH 033/162] translation checkpoint --- core/assets/bundles/bundle_ro.properties | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index a7bbe0b61c..c05ddca290 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1249,19 +1249,19 @@ hint.depositItems = Pt a transfera materiale, trage-le din nava ta către nucleu hint.respawn = Pt a te regenera ca navă în nucleu, apasă [accent][[V][]. hint.respawn.mobile = Acum controlezi o unitate/structură. Pt a te regenera ca navă în nucleu, [accent]dă click pe avatarul din colțul din stânga-sus.[] hint.desktopPause = Apasă [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză. -hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina. -hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt a confirma. -hint.placeConveyor = Benzile mută materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\n Ține click apăsat și trage pe ecran pt a desena o linie de bandă.\n[accent]Folosește rotița mouseului[] pt a roti. -hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. -hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. -hint.breaking = [accent]Right-click[] and drag to break blocks. -hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. -hint.research = Use the \ue875 [accent]Research[] button to research new technology. -hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. -hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. -hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. -hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. -hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. +hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina. +hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt confirmare. +hint.placeConveyor = Benzile transportă materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nFă click pe ecran și trage pt a desena o linie de bandă.\n[accent]Folosește rotița mouseului[] pt rotire. +hint.placeConveyor.mobile = Benzile transportă materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nȚine apăsat cu degetul pt o secundă și trage pt a desena o linie de bandă. +hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie. +hint.breaking = Ține apăsat [accent]click-dreapta[] și trage pe ecran pt a distruge blocuri. +hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și dă click pt a distruge blocuri.\n\nȚine apăsat cu degetul pt o secundă și trage pt a distruge mai multe blocuri deodată. +hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii. +hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii. +hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme. +hint.unitControl.mobile = [accent][Dă dublu click[] pt a controla unități aliate sau arme. +hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către un altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos. +hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către un altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[]. hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. From 058b2ddfce45f7f0e40ed14049e5d7a2b05a5319 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 09:00:34 -0500 Subject: [PATCH 034/162] Fixed #3565 --- core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/entities/bullet/SapBulletType.java | 2 +- core/src/mindustry/game/Schematics.java | 5 +++++ core/src/mindustry/game/Waves.java | 8 ++++---- core/src/mindustry/maps/SectorDamage.java | 2 +- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 0e321e1ed6..21a8b3fb45 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -88,7 +88,7 @@ public class Vars implements Loadable{ /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; /** chance of an invasion per turn, 1 = 100% */ - public static final float baseInvasionChance = 1f / 60f; + public static final float baseInvasionChance = 1f / 75f; /** how many turns have to pass before invasions start */ public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 02d3820bc4..98c835f026 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1195,7 +1195,7 @@ public class Blocks implements ContentList{ size = 2; ambientSound = Sounds.smelter; - ambientSoundVolume = 0.05f; + ambientSoundVolume = 0.06f; }}; differentialGenerator = new SingleTypeGenerator("differential-generator"){{ diff --git a/core/src/mindustry/entities/bullet/SapBulletType.java b/core/src/mindustry/entities/bullet/SapBulletType.java index 9d05a37e9a..dbd30b77a8 100644 --- a/core/src/mindustry/entities/bullet/SapBulletType.java +++ b/core/src/mindustry/entities/bullet/SapBulletType.java @@ -61,7 +61,7 @@ public class SapBulletType extends BulletType{ b.data = target; if(target != null){ - float result = Math.min(target.health(), damage); + float result = Math.max(Math.min(target.health(), damage), 0); if(b.owner instanceof Healthc h){ h.heal(result * sapStrength); diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 7cd51ecec4..2d526606c7 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -127,6 +127,9 @@ public class Schematics implements Loadable{ newSchematic.tags.putAll(target.tags); newSchematic.file = target.file; + loadouts.each((block, list) -> list.remove(target)); + checkLoadout(target, true); + try{ write(newSchematic, target.file); }catch(Exception e){ @@ -134,6 +137,8 @@ public class Schematics implements Loadable{ Log.err(e); ui.showException(e); } + + } private @Nullable Schematic loadFile(Fi file){ diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 28f742a3cd..5958d5f22f 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -10,7 +10,7 @@ import mindustry.type.*; import static mindustry.content.UnitTypes.*; public class Waves{ - public static final int waveVersion = 3; + public static final int waveVersion = 4; private Seq spawns; @@ -277,7 +277,7 @@ public class Waves{ int cap = 150; float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f; - float[] scaling = {1, 1.2f, 2f, 3f, 4f}; + float[] scaling = {1, 1.5f, 3f, 4f, 5f}; Intc createProgression = start -> { //main sequence @@ -286,7 +286,7 @@ public class Waves{ for(int i = start; i < cap;){ int f = i; - int next = rand.random(8, 16) + (int)Mathf.lerp(4f, 0f, difficulty) + curTier * 4; + int next = rand.random(8, 16) + (int)Mathf.lerp(5f, 0f, difficulty) + curTier * 4; float shieldAmount = Math.max((i - shieldStart) * shieldsPerWave, 0); int space = start == 0 ? 1 : rand.random(1, 2); @@ -298,7 +298,7 @@ public class Waves{ begin = f; end = f + next >= cap ? never : f + next; max = 13; - unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier]; + unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier]; shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 045a0bd75b..a86bc47356 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -437,7 +437,7 @@ public class SectorDamage{ float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; - if(fraction > 0.1f){ + if(fraction > 0.15f){ //phase two: propagate the damage while(!frontier.isEmpty()){ peak = Math.max(peak, frontier.size); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index a7d0c837de..4700bc0906 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -167,6 +167,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ } newPresets.reverse(); + updateSelected(); if(planets.planet.getLastSector() != null){ lookAt(planets.planet.getLastSector()); From 9f8e1b93f1556c85f35c6e275371cbf64148b456 Mon Sep 17 00:00:00 2001 From: CPXMC <62936489+CPXMC@users.noreply.github.com> Date: Tue, 24 Nov 2020 22:02:28 +0800 Subject: [PATCH 035/162] Update bundle_zh_CN.properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 单位,方块,物品的简介翻译交给你们了(滑稽 --- core/assets/bundles/bundle_zh_CN.properties | 138 +++++++++++++++----- 1 file changed, 105 insertions(+), 33 deletions(-) diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 9b0f278d9c..428de78f53 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -17,11 +17,14 @@ linkfail = 打开链接失败!\n网址已复制到您的剪贴板。 screenshot = 屏幕截图已保存到 {0} screenshot.invalid = 地图太大,可能没有足够的内存用于截图。 gameover = 游戏结束 +gameover.disconnect = 断开连接 gameover.pvp = [accent] {0}[]队获胜! +gameover.waiting = [accent]正在等待下一张地图... highscore = [accent]新纪录! -copied = 已复制。 +copied = 已复制 indev.popup = [accent]6.0[]仍在[accent]测试版[].\n[lightgray]这意味着:[]\n[scarlet]- 战役玩法完全没有完成[]\n- 很多内容还没有做完\n - 大多[scarlet]单位AI[]无法正确地运行\n- 单位系统完全没有完成\n- 一切您所看到的内容都可能会移除或调整。\n\n在[accent]Github[]提交错误报告。\n[#66ccff]来自译者WinterUnderTheSnow的忠告:不建议新玩家游玩还在测试阶段的6.0!建议您先从[orange]v104.6[#66ccff]或[orange]v104.10[#66ccff]开始游玩! indev.notready = 这部分玩法还未开发完成。 +indev.campaign = [accent]您已经到达战役模式的结尾![]\n\n这是内容所能做到的。 未来的更新中将添加行星际旅行。 load.sound = 音乐加载中 load.map = 地图加载中 @@ -57,6 +60,7 @@ schematic.rename = 重命名蓝图 schematic.info = {0}x{1},{2} 个方块 schematic.disabled = [scarlet]蓝图已禁用![]\n您不能在此[accent]地图[]或[accent]服务器[]上使用蓝图. +stats = 统计资料 stat.wave = 防守波数:[accent]{0} stat.enemiesDestroyed = 消灭敌人:[accent]{0} stat.built = 建造建筑:[accent]{0} @@ -189,6 +193,10 @@ servers.local = 本地服务器 servers.remote = 远程服务器 servers.global = 全球服务器 +servers.showhidden = 显示隐藏的服务器 +server.shown = 显示 +server.hidden = 隐藏 + trace = 跟踪玩家 trace.playername = 玩家名称:[accent]{0} trace.ip = IP 地址:[accent]{0} @@ -267,6 +275,9 @@ cancel = 取消 openlink = 打开链接 copylink = 复制链接 back = 返回 +crash.export = 导出崩溃日志 +crash.none = 找不到崩溃日志。 +crash.exported = 崩溃日志已导出。 data.export = 导出数据 data.import = 导入数据 data.openfolder = 打开数据文件夹 @@ -283,6 +294,7 @@ cancelbuilding = [accent][[{0}][]来清除规划 selectschematic = [accent][[{0}][]来选择复制 pausebuilding = [accent][[{0}][]来暂停建造 resumebuilding = [scarlet][[{0}][]来恢复建造 +showui = UI已隐藏\n按[accent][[{0}][]显示UI wave = [accent]第{0}波 wave.cap = [accent]Wave {0}/{1} wave.waiting = [lightgray]下一波倒计时:{0}秒 @@ -290,6 +302,8 @@ wave.waveInProgress = [lightgray]波次袭来 waiting = [lightgray]等待中… waiting.players = 等待玩家中… wave.enemies = [lightgray]剩余 {0} 个敌人 +wave.enemycores = [accent]{0}[lightgray] 敌人核心(多个) +wave.enemycore = [accent]{0}[lightgray] 敌人核心 wave.enemy = [lightgray]剩余 {0} 个敌人 wave.guardianwarn = Boss 将在[accent]{0}[]波后到来。 wave.guardianwarn.one = Boss 将在[accent]{0}[]波后到来。 @@ -350,6 +364,7 @@ waves.invalid = 剪贴板中的波次信息无效。 waves.copied = 波次信息已复制。 waves.none = 没有定义敌人。\n请注意,这将自动替换为默认的敌人列表。 +#these are intentionally in lower case wavemode.counts = 数目 wavemode.totals = 总和 wavemode.health = 生命值 @@ -462,6 +477,8 @@ load = 载入游戏 save = 保存 fps = 帧数:{0} ping = 延迟:{0}毫秒 +memory = 内存: {0}mb +memory2 = 内存:\n {0}mb +\n {1}mb language.restart = 为了使语言设置生效请重启游戏。 settings = 设置 tutorial = 教程 @@ -476,24 +493,21 @@ complete = [lightgray]完成: requirement.wave = {1}中的第{0}波次 requirement.core = 在{0}中摧毁敌方核心 requirement.research = 研究 {0} +requirement.produce = 生产 {0} requirement.capture = 占领 {0} -bestwave = [lightgray]最高波次:{0} launch.text = 发射 research.multiplayer = 仅有服主可研究物品。 +map.multiplayer = 仅有服主可查看区域。 uncover = 解锁 configure = 设定装运的数量 + loadout = 装运 resources = 资源 bannedblocks = 禁用建筑 addall = 添加所有 +launch.from = 发射地: [accent]{0} launch.destination = 目的地: {0} configure.invalid = 数量必须是0到{0}之间的数字。 -zone.unlocked = [lightgray]{0} 已解锁。 -zone.requirement.complete = 完成{0}。\n已达成解锁{1}的要求。 -zone.resources = 地图中的资源: -zone.objective = [lightgray]目标:[accent]{0} -zone.objective.survival = 生存 -zone.objective.attack = 摧毁敌方核心 add = 添加… boss.health = Boss 生命值 @@ -517,17 +531,41 @@ weather.fog.name = 雾 sectors.unexplored = [lightgray]未探索 sectors.resources = 资源: sectors.production = 产出: +sectors.export = 输出: +sectors.time = 时间: +sectors.threat = 威胁 +sectors.wave = 进攻波: sectors.stored = 贮存: sectors.resume = 继续 sectors.launch = 发射 sectors.select = 选择 sectors.nonelaunch = [lightgray]无 (太阳) sectors.rename = 重命名区块 +sectors.enemybase = [scarlet]敌人基地 +sectors.vulnerable = [scarlet]脆弱的 +sectors.underattack = [scarlet]遭到攻击![accent]{0}% 被摧毁 +sectors.survives = [accent]存活{0}波 +sectors.go = 进入 +sector.curcapture = 区域已占领 +sector.curlost = 区域丢失 sector.missingresources = [scarlet]核心资源不足 +sector.attacked = 区域[accent]{0}[white]受到攻击! +sector.lost = 区域[accent]{0}[white]已丢失! +#note: the missing space in the line below is intentional +sector.captured = 区域[accent]{0}[white]已占领! + +threat.low = 低 +threat.medium = 中 +threat.high = 高 +threat.extreme = 极高 +threat.eradication = 根除 + +planets = 行星 planet.serpulo.name = 塞普罗 planet.sun.name = 太阳 +sector.impact0078.name = 影响0078 sector.groundZero.name = 零号地区 sector.craters.name = 陨石带 sector.frozenForest.name = 冰冻森林 @@ -539,6 +577,10 @@ sector.overgrowth.name = 增生区 sector.tarFields.name = 油田 sector.saltFlats.name = 盐碱荒滩 sector.fungalPass.name = 真菌通道 +sector.biomassFacility.name = 生物质合成设施 +sector.windsweptIslands.name = 风吹群岛 +sector.extractionOutpost.name = 萃取前哨 +sector.planetaryTerminal.name = 行星发射终端 sector.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧! sector.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。 @@ -573,7 +615,6 @@ settings.clearcampaignsaves.confirm = 您确定要清除战役进度? paused = [accent]< 暂停 > clear = 清除 banned = [scarlet]已禁止 -unplaceable.sectorcaptured = [scarlet]需要占领区块 yes = 是 no = 否 info.title = [accent]详情 @@ -583,6 +624,7 @@ unit.nobuild = [scarlet]单位未能建造 lastaccessed = [lightgray]上次操作: {0} block.unknown = [lightgray]??? +stat.description = 介绍 stat.input = 输入 stat.output = 输出 stat.booster = 增强物品/液体 @@ -610,6 +652,8 @@ stat.memorycapacity = 内存容量 stat.basepowergeneration = 基础能源输出 stat.productiontime = 生产时间 stat.repairtime = 建筑完全修复时间 +stat.weapons = 武器 +stat.bullet = 子弹 stat.speedincrease = 提速 stat.range = 范围 stat.drilltier = 可钻探矿物 @@ -642,12 +686,15 @@ stat.minetier = 采矿等级 stat.payloadcapacity = 载货容量 stat.commandlimit = 指挥上限 stat.abilities = 能力 +stat.canboost = 助推器 +stat.flying = 飞行 ability.forcefield = 力墙场 ability.repairfield = 修复场 ability.statusfield = 状态场 ability.unitspawn = {0} 工厂 ability.shieldregenfield = 护盾再生场 +ability.movelightning = 闪电移动 bar.drilltierreq = 需要更好的钻头 bar.noresources = 缺失资源 @@ -676,12 +723,14 @@ units.processorcontrol = [lightgray]由处理器控制 bullet.damage = [stat]{0}[lightgray] 伤害 bullet.splashdamage = [stat]{0}[lightgray] 范围伤害 ~[stat] {1}[lightgray] 格 bullet.incendiary = [stat] 燃烧 +bullet.sapping = [stat]sapping bullet.homing = [stat] 追踪 bullet.shock = [stat] 电击 bullet.frag = [stat] 分裂 bullet.knockback = [stat]{0}[lightgray] 击退 bullet.pierce = [stat]{0}[lightgray]x 穿透 bullet.infinitepierce = [stat]pierce +bullet.healpercent = [stat]{0}[lightgray]% 修复 bullet.freezing = [stat] 冰冻 bullet.tarred = [stat] 减速 bullet.multiplier = [stat]{0}[lightgray]x 装弹数量 @@ -706,6 +755,7 @@ unit.items = 物品 unit.thousands = K unit.millions = M unit.billions = B +category.purpose = 介绍 category.general = 普通 category.power = 能量 category.liquids = 液体 @@ -719,6 +769,7 @@ setting.blockreplace.name = 自动推荐合适的建筑 setting.linear.name = 抗锯齿 setting.hints.name = 提示 setting.flow.name = 显示资源传送速度[scarlet] (实验性) +setting.backgroundpause.name = 在背景中暂停 setting.buildautopause.name = 自动暂停建造 setting.animatedwater.name = 流动的水 setting.animatedshields.name = 动态画面 @@ -747,7 +798,6 @@ setting.conveyorpathfinding.name = 传送带自动寻路 setting.sensitivity.name = 控制器灵敏度 setting.saveinterval.name = 自动保存间隔 setting.seconds = {0} 秒 -setting.blockselecttimeout.name = 建筑选择超时 setting.milliseconds = {0} 毫秒 setting.fullscreen.name = 全屏 setting.borderlesswindow.name = 无边界窗口[lightgray](可能需要重启) @@ -836,6 +886,8 @@ keybind.menu.name = 菜单 keybind.pause.name = 暂停 keybind.pause_building.name = 暂停/继续建造 keybind.minimap.name = 小地图 +keybind.planet_map.name = 行星地图 +keybind.research.name = 研究 keybind.chat.name = 聊天 keybind.player_list.name = 玩家列表 keybind.console.name = 控制台 @@ -899,6 +951,7 @@ content.item.name = 物品 content.liquid.name = 液体 content.unit.name = 部队 content.block.name = 块 +content.sector.name = 区域 item.copper.name = 铜 item.lead.name = 铅 @@ -959,6 +1012,7 @@ block.resupply-point.name = 补给点 block.parallax.name = 差扰光束 block.cliff.name = 悬崖 block.sand-boulder.name = 砂岩 +block.basalt-boulder.name = 玄武岩巨石 block.grass.name = 草地 block.slag.name = 矿渣 block.space.name = 太空 @@ -1056,7 +1110,6 @@ block.conveyor.name = 传送带 block.titanium-conveyor.name = 钛传送带 block.plastanium-conveyor.name = 塑钢传送带 block.armored-conveyor.name = 装甲传送带 -block.armored-conveyor.description = 运送物品,与钛传送带一样的速度,但有更强的装甲。除其他传送带,不接受任何边上的输入。 block.junction.name = 连接器 block.router.name = 路由器 block.distributor.name = 分配器 @@ -1064,7 +1117,6 @@ block.sorter.name = 分类器 block.inverted-sorter.name = 反向分类器 block.message.name = 信息板 block.illuminator.name = 照明器 -block.illuminator.description = 小型、紧凑、可配置的光源。需要能量运行。 block.overflow-gate.name = 溢流门 block.underflow-gate.name = 反向溢流门 block.silicon-smelter.name = 硅冶炼厂 @@ -1160,6 +1212,11 @@ block.payload-router.name = 载荷路由器 block.disassembler.name = 解离机 block.silicon-crucible.name = 热能坩埚 block.overdrive-dome.name = 超速穹顶投射器 +#experimental, may be removed +block.block-forge.name = 方块熔炉 +block.block-loader.name = 方块装载机 +block.block-unloader.name = 方块卸载机 +block.interplanetary-accelerator.name = 行星际加速器 block.switch.name = 开关 block.micro-processor.name = 微型处理器 @@ -1178,30 +1235,45 @@ team.derelict.name = 灰 team.green.name = 绿 team.purple.name = 紫 -tutorial.next = [lightgray]<点击以继续> -tutorial.intro = 您已进入[scarlet] Mindustry 教程[]。[]\n使用[accent][[WASD][]键移动机甲和视角。\n[accent]按住[[Ctrl]并转动鼠标滚轮[]缩放视野。\n让我们从[accent]采集铜矿[]开始。先移动到铜矿旁边,然后点按矿脉附近散落的矿物。\n\n[accent]{0}/{1} 铜 -tutorial.intro.mobile = 您已进入[scarlet] Mindustry 教程[]。\n在屏幕上滑动来继续。\n[accent]双指捏合[] 来缩小和放大。\n让我们从[accent]采集铜矿[]开始。先移动到铜矿旁边,然后点按矿脉附近散落的矿物。\n\n[accent]铜 {0}/{1} -tutorial.drill = 手动采矿效率不高。\n[accent]钻头[]可以自动采矿。\n让我们在在铜矿上放一个。\n点击右下角的钻头菜单。\n选择[accent]机械钻头[]。\n单击将其放置在铜矿上。\n[accent]右键单击[]来停止。 -tutorial.drill.mobile = 手动采矿效率不高。\n[accent]钻头[]可以自动采矿。\n点右下角的钻头菜单。\n选择[accent]机械钻头[]。\n点一下将其放在铜矿上,点[accent]对号[]来确定。\n点[accent]叉号[]来取消。 -tutorial.blockinfo = 每种钻头都有其独特的数据。每个钻头只能开采部分矿石。\n若要查看建筑的详细信息,[accent]在菜单中点击问号。[]\n\n[accent]现在查看机械钻头的数据吧。[] -tutorial.conveyor = [accent]传送带[]可以把物资传送到核心。\n请在钻头到核心间建造一条传送带。 -tutorial.conveyor.mobile = [accent]传送带[]可以把物资传送到核心。\n请在钻头到核心间建造一条传送带。\n[accent]长按数秒[]并向一个方向拖动来直线放置。\n\n[accent]{0}/{1} 条传送带\n[accent]0/1 物品 -tutorial.turret = 必须建造防御建筑来击退[lightgray]敌人[]。\n请在核心附近造一个双管炮。 -tutorial.drillturret = 双管炮需要[accent]铜[]作弹药来射击。\n可以放一个钻头在炮塔附近供应铜。 -tutorial.pause = 在战斗中,您可以[accent]暂停游戏[]。\n暂停时您可以规划建筑物。\n\n按[accent]空格[]暂停。 -tutorial.pause.mobile = 在战斗中,您可以[accent]暂停游戏[]。\n暂停时您可以规划建筑物。\n\n[accent]点击左上角的按钮以暂停。 -tutorial.unpause = 现在再次按空格以继续。 -tutorial.unpause.mobile = 现在再次点按以继续。 -tutorial.breaking = 建筑经常需要拆除。\n[accent]按住鼠标右键[]来拆除选中的建筑。[]\n\n[accent]使用范围拆除来拆除核心左侧的废墙。 -tutorial.breaking.mobile = 建筑经常需要拆除。\n[accent]选择拆除模式[],点击建筑以拆除。\n[accent]长按几秒[]并拖动来范围拆除。\n点击对号来确定。\n\n[accent]使用范围拆除来拆除核心左侧的废墙。 -tutorial.withdraw = 有时,从建筑中取出物品是必要的。\n[accent]点击包含物品的建筑[],然后[accent]点击在方框中的物品[]。\n可以通过[accent]点击或长按[]来取出物品。\n\n[accent]从核心中取出一些铜[]。 -tutorial.deposit = 将物品从机甲拖向建筑来放下物品。\n\n[accent]将铜放回核心[]。 -tutorial.waves = [lightgray]敌人[]来了。\n\n保护核心,防御两波攻击。造更多的炮塔。[accent]点击[]以射击。\n建造更多的炮塔和钻头,并采更多的矿。 -tutorial.waves.mobile = [lightgray]敌人[]来了。\n\n保护核心,防御两波攻击。造更多的炮塔。你的机甲将对敌人自动开火。\n建造更多的炮塔和钻头,并采更多的矿。 -tutorial.launch = 进入特定波次后,你可以[accent]发射核心(起飞)[],[accent]带走核心中的所有资源[]并抛下所有的建筑。\n装运的资源可用于研究科技。\n\n[accent]点击发射按钮。 +hint.skip = 跳过 +hint.desktopMove = 使用[accent][[WASD][]来移动. +hint.zoom = [accent]滚动[]放大或缩小. +hint.mine = 移动到\uf8c4铜矿附近并点按[accent]tap[]进行手动开采 +hint.desktopShoot = [accent][[Left-click][]射击. +hint.depositItems = 要转移物品,请将其从飞船上拖到核心。 +hint.respawn = 要重生飞船,请按[accent][[V][]. +hint.respawn.mobile = 您已切换控制单元/结构. 如果要重生飞船请[accent]点击左上方的图标(那个和你长得一样的).[] +hint.desktopPause = 按[accent][[Space][]暂停和取消暂停游戏. +hint.placeDrill = 选择\ue85e[accent]钻头[]右下角菜单中的标签,然后选择一个\uf870 [accent]钻头[]然后单击铜矿将其放置. +hint.placeDrill.mobile = 选择\ue85e[accent]钻头[]右下角菜单中的标签,然后选择一个\uf870 [accent]钻头[]然后点击铜矿将其放置.\n\n按下\ue800 [accent]复选标记[]在右下角按钮确认. +hint.placeConveyor = 传送带将物品从钻头移到其他块中。选择一个\uf896 [accent]传送带[]从\ue814 [accent]布局[]标签.\n\n单击并拖动以放置多个传送带.\n[accent]滚动[]旋转. +hint.placeConveyor.mobile = 传送带将物品从钻头移到其他块中。选择一个\uf896 [accent]传送带[]从\ue814 [accent]布局[]标签.\n\n按住手指一秒钟,然后拖动以放置多个传送带. +hint.placeTurret = 放置\uf861 [accent]炮塔[]保卫你的基地从敌人手中.\n\n炮塔需要弹药-在这种情况下e, \uf838copper.\n使用传送带和钻头为它们供弹。 +hint.breaking = [accent]右击[]并拖动以拆除方块. +hint.breaking.mobile = 激活\ue817 [accent]锤子[]在右下角点击以拆除方块.\n\n按住手指一秒钟,然后拖动以选择. +hint.research = 使用\ue875 [accent]科技树[]按钮研究新技术. +hint.research.mobile = 使用\ue875 [accent]科技树[]按钮在\ue88c [accent]菜单[]去研究新技术. +hint.unitControl = 按住[accent][[L-ctrl][]和[accent]点击[]控制友军单位或炮塔。 +hint.unitControl.mobile = [accent][双击[]控制友军单位或炮塔(双击)。 +hint.launch = 一旦收集到足够的资源,您就可以[accent]发射[]通过选择附近的区域从\ue827 [accent]地图[]在右下角. +hint.launch.mobile = 一旦收集到足够的资源,您就可以[accent]发射[]通过选择附近的区域从\ue827 [accent]地图[]在\ue88c [accent]菜单[]. +hint.schematicSelect = 按住[accent][[F][]并拖动以选择要复制和粘贴的块.\n\n[accent][[Middle Click][]复制单个块类型. +hint.conveyorPathfind = 按住[accent][[L-Ctrl][]拖动,传送带会自动生成路径. +hint.conveyorPathfind.mobile = 启用\ue844 [accent]对角线模式[]并拖动,传送带会自动生成路径. +hint.boost = 按住[accent][[L-Shift][]用当前单位飞越障碍物.\n\n只有少数地面单位有助推器.(首先排除爬虫家族) +hint.command = 按accent][[G][]指挥附近的单位编队. +hint.command.mobile = [accent][双击][]您的部队指挥附近的部队编队.(双击) +hint.payloadPickup = 按[accent][[[]捡起小方块或单位. +hint.payloadPickup.mobile = [accent]点住]一个小方块或一个单位来捡起来. +hint.payloadDrop = 按[accent]][]放下有效载荷. +hint.payloadDrop.mobile = [accent]点住[]一个空的位置将有效载荷丢到那里.(不是很精准) +hint.waveFire = [accent]进攻波[]炮塔加水弹药会自动扑灭附近的大火.(浪涌和海啸) +hint.generator = \uf879 [accent]燃烧发电机[]燃烧煤炭并将电力传输到相邻方块.\n\n电力传输范围可以扩展,用\uf87f [accent]能量节点[]. item.copper.description = 一种最基本的的建筑材料。在各种类型的建筑中被广泛使用。 +item.copper.details = 铜. 在Serpulo上的金属异常丰富。 除非加固,否则结构较弱。 item.lead.description = 一种基本的电力材料。广泛用于电子设备和液体输送模块。 +item.lead.details = Dense. Inert. Extensively used in batteries.\nNote: Likely toxic to biological life forms. Not that there are many left here. item.metaglass.description = 一种致密坚硬的复合玻璃。广泛用于液体输送和存储。 item.graphite.description = 一种高密度的碳材料,用于弹药和电器元件。 item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。 From 7d43856735c853f4f5a8c4e42addf3bcb929e431 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 10:23:28 -0500 Subject: [PATCH 036/162] Bugfixes --- core/src/mindustry/core/Control.java | 10 +++++++++- core/src/mindustry/entities/GroupDefs.java | 1 + core/src/mindustry/entities/bullet/BulletType.java | 4 ++-- core/src/mindustry/game/Universe.java | 2 ++ core/src/mindustry/io/SaveVersion.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 2 +- .../world/blocks/power/ItemLiquidGenerator.java | 5 +++++ gradle.properties | 2 +- 8 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index a810c61946..952ab5d82e 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -23,6 +23,7 @@ import mindustry.gen.*; import mindustry.input.*; import mindustry.io.*; import mindustry.io.SaveIO.*; +import mindustry.maps.*; import mindustry.maps.Map; import mindustry.net.*; import mindustry.type.*; @@ -322,6 +323,13 @@ public class Control implements ApplicationListener, Loadable{ return; } + //set spawn for sector damage to use + Tile spawn = world.tile(sector.info.spawnPosition); + spawn.setBlock(Blocks.coreShard, state.rules.defaultTeam); + + //add extra damage. + SectorDamage.apply(1f); + //reset wave so things are more fair state.wave = 1; @@ -331,8 +339,8 @@ public class Control implements ApplicationListener, Loadable{ //kill all units, since they should be dead anyway Groups.unit.clear(); Groups.fire.clear(); + Groups.puddle.clear(); - Tile spawn = world.tile(sector.info.spawnPosition); Schematics.placeLaunchLoadout(spawn.x, spawn.y); //set up camera/player locations diff --git a/core/src/mindustry/entities/GroupDefs.java b/core/src/mindustry/entities/GroupDefs.java index 3ddef67d65..8f98a69442 100644 --- a/core/src/mindustry/entities/GroupDefs.java +++ b/core/src/mindustry/entities/GroupDefs.java @@ -12,5 +12,6 @@ class GroupDefs{ @GroupDef(value = Syncc.class, mapping = true) G sync; @GroupDef(value = Drawc.class) G draw; @GroupDef(value = Firec.class) G fire; + @GroupDef(value = Puddlec.class) G puddle; @GroupDef(value = WeatherStatec.class) G weather; } diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index a384dd18b2..7d94602844 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -317,11 +317,11 @@ public abstract class BulletType extends Content{ } public Bullet create(Bullet parent, float x, float y, float angle){ - return create(parent.owner(), parent.team, x, y, angle); + return create(parent.owner, parent.team, x, y, angle); } public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl, float lifeScale){ - return create(parent.owner(), parent.team, x, y, angle, velocityScl, lifeScale); + return create(parent.owner, parent.team, x, y, angle, velocityScl, lifeScale); } public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl){ diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index b8f27b5f73..b19fcee6da 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -208,6 +208,8 @@ public class Universe{ //add production, making sure that it's capped sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item)))); + //prevent negative values with unloaders + sector.info.items.checkNegative(); sector.saveInfo(); } diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 76e3b1cc5c..85fe4a3e31 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -286,7 +286,7 @@ public abstract class SaveVersion extends SaveFileReader{ public void writeEntities(DataOutput stream) throws IOException{ //write team data with entities. - Seq data = state.teams.getActive(); + Seq data = state.teams.getActive().and(Team.sharded.data()); stream.writeInt(data.size); for(TeamData team : data){ stream.writeInt(team.team.id); diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index a86bc47356..22f19c3e4d 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -356,7 +356,7 @@ public class SectorDamage{ for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = fraction * 80; + values[tile.x][tile.y] = fraction * 23; } } diff --git a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java index 12b3f6d691..2a0982a069 100644 --- a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -92,6 +92,11 @@ public class ItemLiquidGenerator extends PowerGenerator{ return generateTime > 0; } + @Override + public float ambientVolume(){ + return Mathf.clamp(productionEfficiency); + } + @Override public void updateTile(){ //Note: Do not use this delta when calculating the amount of power or the power efficiency, but use it for resource consumption if necessary. diff --git a/gradle.properties b/gradle.properties index ba9e4fa2a9..75d6273d77 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=9446f0f01b2a1b25abf870a32bf839bc486b12e3 +archash=a30c7164ce621554b73610ac84ada418e4500a5c From 61bec243dcade2162badbeb6f34ef2beda32f488 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 12:35:04 -0500 Subject: [PATCH 037/162] Campaign balance --- core/assets/maps/saltFlats.msav | Bin 18919 -> 19192 bytes core/assets/maps/stainedMountains.msav | Bin 16695 -> 16724 bytes core/src/mindustry/content/SectorPresets.java | 1 + core/src/mindustry/content/TechTree.java | 5 +++-- core/src/mindustry/maps/SectorDamage.java | 2 +- .../world/blocks/defense/MendProjector.java | 4 +++- .../blocks/defense/OverdriveProjector.java | 4 +++- 7 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index 556b33700f444bc7061ef573bdd63510f7a6303b..d0f1a672c4c8729d1ab7c99f9e6ece6def99ad93 100644 GIT binary patch literal 19192 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 diff --git a/core/assets/maps/stainedMountains.msav b/core/assets/maps/stainedMountains.msav index af3abb26c204361563fdc2e0cff94bae71661512..082f96ad7b2a4c0ca211a491a2f79bed41fb0ada 100644 GIT binary patch literal 16724 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 literal 16695 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 { - node(multiplicativeReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> { + node(multiplicativeReconstructor, () -> { node(exponentialReconstructor, () -> { node(tetrativeReconstructor, () -> { @@ -508,6 +508,7 @@ public class TechTree implements ContentList{ node(saltFlats, Seq.with( new SectorComplete(windsweptIslands), + new Research(commandCenter), new Research(groundFactory), new Research(airFactory), new Research(door), @@ -646,7 +647,7 @@ public class TechTree implements ContentList{ static TechNode node(UnlockableContent content, ItemStack[] requirements, Seq objectives, Runnable children){ TechNode node = new TechNode(context, content, requirements); if(objectives != null){ - node.objectives = objectives; + node.objectives.addAll(objectives); } TechNode prev = context; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 22f19c3e4d..78802f46bb 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -21,7 +21,7 @@ import mindustry.world.blocks.storage.*; import static mindustry.Vars.*; public class SectorDamage{ - public static final int maxRetWave = 30, maxWavesSimulated = 50; + public static final int maxRetWave = 40, maxWavesSimulated = 50; //direct damage is for testing only private static final boolean direct = false, rubble = true; diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index cf71928f26..1c171edfdc 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -60,6 +60,7 @@ public class MendProjector extends Block{ float heat; float charge = Mathf.random(reload); float phaseHeat; + float smoothEfficiency; @Override public float range(){ @@ -68,6 +69,7 @@ public class MendProjector extends Block{ @Override public void updateTile(){ + smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f); heat = Mathf.lerpDelta(heat, consValid() || cheating() ? 1f : 0f, 0.08f); charge += heat * delta(); @@ -115,7 +117,7 @@ public class MendProjector extends Block{ @Override public void drawLight(){ - Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency()); + Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency); } @Override diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index 7cadaede81..7e645e5a2e 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -65,6 +65,7 @@ public class OverdriveProjector extends Block{ float heat; float charge = Mathf.random(reload); float phaseHeat; + float smoothEfficiency; @Override public float range(){ @@ -73,11 +74,12 @@ public class OverdriveProjector extends Block{ @Override public void drawLight(){ - Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency()); + Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency); } @Override public void updateTile(){ + smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f); heat = Mathf.lerpDelta(heat, consValid() ? 1f : 0f, 0.08f); charge += heat * Time.delta; From 6fd36d97f09de6f22950e930e5000513f6f7af62 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 12:53:55 -0500 Subject: [PATCH 038/162] Balancing --- core/src/mindustry/ai/types/BuilderAI.java | 5 ++++- core/src/mindustry/content/Blocks.java | 13 +++++++------ core/src/mindustry/core/Logic.java | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index a82a220070..f900a60955 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -1,5 +1,6 @@ package mindustry.ai.types; +import arc.math.*; import arc.struct.*; import arc.util.*; import mindustry.entities.*; @@ -83,8 +84,10 @@ public class BuilderAI extends AIController{ }); } + float rebuildTime = (unit.team.rules().ai ? Mathf.lerp(15f, 2f, unit.team.rules().aiTier) : 2f) * 60f; + //find new request - if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, 60 * 2f)){ + if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, rebuildTime)){ Queue blocks = unit.team.data().blocks; BlockPlan block = blocks.first(); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 98c835f026..eabaae3104 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1377,7 +1377,7 @@ public class Blocks implements ContentList{ itemCapacity = 9000; size = 4; - unitCapModifier = 14; + unitCapModifier = 16; researchCostMultiplier = 0.04f; }}; @@ -1389,7 +1389,7 @@ public class Blocks implements ContentList{ itemCapacity = 13000; size = 5; - unitCapModifier = 20; + unitCapModifier = 24; researchCostMultiplier = 0.05f; }}; @@ -1517,12 +1517,12 @@ public class Blocks implements ContentList{ lancer = new ChargeTurret("lancer"){{ requirements(Category.turret, with(Items.copper, 25, Items.lead, 50, Items.silicon, 45)); - range = 155f; - chargeTime = 50f; + range = 165f; + chargeTime = 40f; chargeMaxDelay = 30f; chargeEffects = 7; recoilAmount = 2f; - reloadTime = 90f; + reloadTime = 80f; cooldown = 0.03f; powerUse = 6f; shootShake = 2f; @@ -1544,6 +1544,7 @@ public class Blocks implements ContentList{ lifetime = 16f; drawSize = 400f; collidesAir = false; + length = 173f; }}; }}; @@ -1557,7 +1558,7 @@ public class Blocks implements ContentList{ reloadTime = 35f; shootCone = 40f; rotateSpeed = 8f; - powerUse = 3f; + powerUse = 3.3f; targetAir = false; range = 90f; shootEffect = Fx.lightningShoot; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 5f6bd2c1a9..02222bd327 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -107,7 +107,7 @@ public class Logic implements ApplicationListener{ if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){ state.rules.waveTeam.rules().ai = true; } - state.rules.waveTeam.rules().aiTier = state.getSector().threat; + state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f; state.rules.waveTeam.rules().infiniteResources = true; } From ea653bf5c35bbf5d86a2d7e38fcc99974cb117ad Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Tue, 24 Nov 2020 20:48:40 +0200 Subject: [PATCH 039/162] Finished (for now) --- core/assets/bundles/bundle_ro.properties | 55 +++++++++++------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index c05ddca290..913a45a34d 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -22,7 +22,6 @@ gameover.pvp = Echipa [accent] {0}[] este câștigătoare! gameover.waiting = [accent]Se așteaptă următoarea hartă... highscore = [accent]Scor maxim nou! copied = Copiat. -indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este neterminată[]\n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[]. indev.notready = Această secțiune a jocului nu este gata încă. indev.campaign = [accent]Ai ajuns la finalul campaniei![]\n\nAi mers cât de departe se poate momentan. Călătoria interplanetară va fi adăugată într-un update viitor. @@ -147,8 +146,9 @@ planetmap = Harta Planetei launchcore = Lansează Nucleu filename = Nume Fișier: unlocked = Nou conținut deblocat! +available = Poți cerceta noi tehnologii! completed = [accent]Finalizat -techtree = Tehnologie +techtree = Cercetează research.list = [lightgray]Cercetare: research = Cercetează researched = [lightgray]{0} cercetat. @@ -501,7 +501,6 @@ map.multiplayer = Doar gazda poate vedea harta sectoarelor. uncover = Descoperă configure = Configurează Încărcarea -#Spațiu Necesar loadout = Încărcare resources = Resurse bannedblocks = Blocuri Interzise @@ -509,12 +508,6 @@ addall = Adaugă-le pe toate launch.from = Lansează Din: [accent]{0} launch.destination = Destinație: {0} configure.invalid = Cantitatea trebuie să fie un număr între 0 și {0}. -zone.unlocked = [lightgray]{0} deblocat(ă). -zone.requirement.complete = Cerințele pt {0} finalizate:[lightgray]\n{1} -zone.resources = [lightgray]Resurse Detectate: -zone.objective = [lightgray]Obiectiv: [accent]{0} -zone.objective.survival = Supraviețuiește -zone.objective.attack = Distruge Nucleul Inamic add = Adaugă... boss.health = Viața Gardianului @@ -693,7 +686,7 @@ stat.minetier = Minabile stat.payloadcapacity = Capacitate Încărcătură stat.commandlimit = Nr Unități Comandate stat.abilities = Abilități -stat.canboost = Poate Îmbunătăți +stat.canboost = Are Propulsor stat.flying = Zboară ability.forcefield = Câmp de Forță @@ -813,7 +806,7 @@ setting.smoothcamera.name = Cameră Graduală setting.vsync.name = VSync setting.pixelate.name = Pixelează setting.minimap.name = Vezi Miniharta -setting.coreitems.name = Vezi Materialele din Nucleu (neterminat) +setting.coreitems.name = Vezi Materialele din Nucleu setting.position.name = Vezi Poziția Jucătorului setting.musicvol.name = Volumul Muzicii setting.atmosphere.name = Vezi Atmosfera Planetelor @@ -894,6 +887,7 @@ keybind.pause.name = Pauză keybind.pause_building.name = Pauză/Reia Construit keybind.minimap.name = Minihartă keybind.planet_map.name = Harta Planetei +keybind.research.name = Cercetare keybind.chat.name = Chat keybind.player_list.name = Listă Jucători keybind.console.name = Consolă @@ -1019,6 +1013,7 @@ block.parallax.name = Parallax block.cliff.name = Deal block.sand-boulder.name = Bolovan de Nisip block.grass.name = Iarbă +block.basalt-boulder.name = Bolovan de Bazalt block.slag.name = Zgură block.space.name = Cosmos block.salt.name = Sare @@ -1243,16 +1238,16 @@ team.purple.name = mov hint.skip = Treci peste hint.desktopMove = Folosește [accent][[WASD][] ca să te miști. hint.zoom = [accent]Cu rotița de la mouse[] poți ajusta zoomul. -hint.mine = Du-te lângă \uf8c4 minereul de cupru și [accent]fă click[] pe el pt a mina manual. +hint.mine = Du-te lângă \uf8c4 minereul de cupru și [accent]dă click[] pe el pt a mina manual. hint.desktopShoot = [accent][[Click-stânga][] pt a trage cu armele navei. hint.depositItems = Pt a transfera materiale, trage-le din nava ta către nucleu. hint.respawn = Pt a te regenera ca navă în nucleu, apasă [accent][[V][]. hint.respawn.mobile = Acum controlezi o unitate/structură. Pt a te regenera ca navă în nucleu, [accent]dă click pe avatarul din colțul din stânga-sus.[] -hint.desktopPause = Apasă [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză. +hint.desktopPause = Apasă pe [accent][[Space][] pt a da pauză jocului. Apasă din nou pt a ieși din modul pauză. hint.placeDrill = Selectează tabul \ue85e [accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina. -hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din stânga-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click pe un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt confirmare. -hint.placeConveyor = Benzile transportă materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nFă click pe ecran și trage pt a desena o linie de bandă.\n[accent]Folosește rotița mouseului[] pt rotire. -hint.placeConveyor.mobile = Benzile transportă materiale din burghie în alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nȚine apăsat cu degetul pt o secundă și trage pt a desena o linie de bandă. +hint.placeDrill.mobile = Selectează tabul \ue85e[accent]Burghie[] din meniul din dreapta-jos, apoi selectează un \uf870 [accent]Burghiu[] și dă click un minereu de cupru pt a mina.\n\nApasă pe \ue800 [accent]bifa[] din dreapta-jos pt confirmare. +hint.placeConveyor = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nDă click pe ecran și trage pt a desena o linie de bandă.\nFolosește [accent]rotița mouseului[] pt rotire. +hint.placeConveyor.mobile = Benzile transportă materiale din burghie către alte blocuri. Selectează o \uf896 [accent]Bandă[] din tabul \ue814 [accent]Distribție[].\n\nȚine apăsat cu degetul pt o secundă și trage pt a desena o linie de bandă. hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie. hint.breaking = Ține apăsat [accent]click-dreapta[] și trage pe ecran pt a distruge blocuri. hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și dă click pt a distruge blocuri.\n\nȚine apăsat cu degetul pt o secundă și trage pt a distruge mai multe blocuri deodată. @@ -1260,19 +1255,21 @@ hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii. hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme. hint.unitControl.mobile = [accent][Dă dublu click[] pt a controla unități aliate sau arme. -hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către un altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos. -hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către un altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[]. -hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. -hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. -hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. -hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. -hint.command = Press [accent][[G][] to command nearby units into formation. -hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. -hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. -hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. -hint.payloadDrop = Press [accent]][] to drop a payload. -hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. -hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. +hint.launch = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din dreapta-jos. +hint.launch.mobile = Odată ce s-au strâns suficiente resurse, poți [accent]Lansa[] către o altă zonă selectând sectoarele învecinate folosind \ue827 [accent]Harta[] din \ue88c [accent]Meniu[]. +hint.schematicSelect = Ține apăsat [accent][[F][] și trage pt a selecta blocuri pt copiere.\n\n[accent][[Click pe rotiță][] pt a copia un singur tip de bloc. +hint.conveyorPathfind = Ține apăsat [accent][[Ctrl][] în timp ce plasezi benzi pt a genera automat o cale între 2 puncte. +hint.conveyorPathfind.mobile = Activează \ue844 [accent]modul diagonal[] și plasează benzi pt a genera automat o cale între 2 puncte. +hint.boost = Ține apăsat [accent][[Shift][] pt a zbura peste obstacole cu unitatea ta.\n\nDoar câteva unități de artilerie au propulsoare. +hint.command = Apasă [accent][[G][] pt a comanda unitățile [accent]similare[] din apropiere în formație.\n\nPt a comanda unități de artilerie, trebuie întâi să controlezi o unitate de artilerie. +hint.command.mobile = [accent][[Dublu-click][] pe unitatea ta pt a comanda unitățile [accent]similare[] din apropiere în formație. +hint.payloadPickup = Apasă [accent][[[] pt a ridica blocuri mici sau unități. +hint.payloadPickup.mobile = [accent]Ține apăsat[] pe un bloc mic/o unitate pt a o ridica. +hint.payloadDrop = Apasă [accent]][] pt a descărca încărcătura. +hint.payloadDrop.mobile = [accent]Ține apăsat[] pe o locație goală pt a descărca încărcătura acolo. +hint.waveFire = Armele [accent]Wave[] încărcate cu apă vor stinge incendiile automat. +hint.generator = \uf879 [accent]Generatoarele pe Combustie[] ard cărbunele și transmit electricitatea blocurilor învecinate.\n\nElectricitatea poate fi transmisă pe distanțe lungi folosind \uf87f [accent]Noduri Electrice[]. +hint.guardian = Unitățile [accent]Gardian[] au armuri puternice. Munițiile slabe precum [accent]Cuprul[] și [accent]Plumbul[] [scarlet]nu sunt eficiente[].\n\nFolosește arme mai bune sau muniție de \uf835 [accent]Grafit[] pt \uf861Duo/\uf859Salvo pt a nimici Gardianul. item.copper.description = Folosit în tot felul de construcții și muniție. item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat. From bcaf5e4c3d2f3599b4f499788f44edd46cddb702 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 16:33:36 -0500 Subject: [PATCH 040/162] Campaign balance / Smarter power node placement --- core/assets/bundles/bundle.properties | 5 +++ core/assets/maps/saltFlats.msav | Bin 19192 -> 19191 bytes core/src/mindustry/ai/BaseAI.java | 5 +++ core/src/mindustry/content/TechTree.java | 2 +- core/src/mindustry/game/Waves.java | 6 +-- core/src/mindustry/input/InputHandler.java | 43 ++++++++++++++------- core/src/mindustry/input/Placement.java | 27 +------------ core/src/mindustry/type/Planet.java | 2 +- 8 files changed, 44 insertions(+), 46 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 0ba749cc57..8149f4ff3c 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -593,6 +593,11 @@ sector.tarFields.description = The outskirts of an oil production zone, between sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. +sector.biomassFacility.description = The origin of spores. This is the facility in which they were researched and initially produced.\nResearch the technology contained within. Cultivate spores for the production of fuel and plastics.\n\n[lightgray]Upon this facility's demise, the spores were released. Nothing in the local ecosystem could compete with such an invasive organism. +sector.windsweptIslands.description = Further past the shoreline is this remote chain of islands. Records show they once had [accent]Plastanium[]-producing structures.\n\nFend off the enemy's naval units. Establish a base on the islands. Research these factories. +sector.extractionOutpost.description = A remote outpost, constructed by the enemy for the purpose of launching resources to other sectors.\n\nCross-sector transport technology is essential for further conquest. Destroy the base. Research their Launch Pads. +sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology. +sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure. settings.language = Language settings.data = Game Data diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index d0f1a672c4c8729d1ab7c99f9e6ece6def99ad93..f01aa3a0f3c991f45644042effb3d67c40ede6f6 100644 GIT binary patch literal 19191 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 literal 19192 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 { + node(waterExtractor, Seq.with(new SectorComplete(saltFlats)), () -> { node(oilExtractor, () -> { }); diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 5958d5f22f..c8667e7e76 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -340,10 +340,10 @@ public class Waves{ step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty)); } - int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.5f, difficulty)); + int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.75f, difficulty)); int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty)); - int bossTier = difficulty < 0.5 ? 3 : 4; + int bossTier = difficulty < 0.6 ? 3 : 4; //main boss progression out.add(new SpawnGroup(Structs.random(species)[bossTier]){{ @@ -411,7 +411,7 @@ public class Waves{ } //shift back waves on higher difficulty for a harder start - int shift = Math.max((int)(difficulty * 15 - 5), 0); + int shift = Math.max((int)(difficulty * 14 - 5), 0); for(SpawnGroup group : out){ group.begin -= shift; diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index c2ab8423c9..2df91588b6 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -47,6 +47,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ /** Maximum line length. */ final static int maxLength = 100; final static Rect r1 = new Rect(), r2 = new Rect(); + final static Seq tmpPoints = new Seq<>(), tmpPoints2 = new Seq<>(); public final OverlayFragment frag = new OverlayFragment(); @@ -1164,27 +1165,39 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ points = Placement.normalizeLine(startX, startY, endX, endY); } - if(block instanceof PowerNode){ - Seq skip = new Seq<>(); + if(block instanceof PowerNode node){ + var base = tmpPoints2; + var result = tmpPoints.clear(); - for(int i = 1; i < points.size; i++){ - int overlaps = 0; - Point2 point = points.get(i); + base.selectFrom(points, p -> p == points.first() || p == points.peek() || Build.validPlace(block, player.team(), p.x, p.y, rotation, false)); + boolean addedLast = false; - //check with how many powernodes the *next* tile will overlap - for(int j = 0; j < i; j++){ - if(!skip.contains(points.get(j)) && ((PowerNode)block).overlaps(world.tile(point.x, point.y), world.tile(points.get(j).x, points.get(j).y))){ - overlaps++; + outer: + for(int i = 0; i < base.size;){ + var point = base.get(i); + result.add(point); + if(i == base.size - 1) addedLast = true; + + //find the furthest node that overlaps this one + for(int j = base.size - 1; j > i; j--){ + var other = base.get(j); + boolean over = node.overlaps(world.tile(point.x, point.y), world.tile(other.x, other.y)); + + if(over){ + //add node to list and start searching for node that overlaps the next one + i = j; + continue outer; } } - //if it's more than one, it can bridge the gap - if(overlaps > 1){ - skip.add(points.get(i-1)); - } + //if it got here, that means nothing was found. try to proceed to the next node anyway + i ++; } - //remove skipped points - points.removeAll(skip); + + if(!addedLast) result.add(base.peek()); + + points.clear(); + points.addAll(result); } float angle = Angles.angle(startX, startY, endX, endY); diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 1d713f7f75..59af8ac517 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -241,35 +241,10 @@ public class Placement{ } public static class NormalizeDrawResult{ - float x, y, x2, y2; + public float x, y, x2, y2; } public static class NormalizeResult{ public int x, y, x2, y2, rotation; - - boolean isX(){ - return Math.abs(x2 - x) > Math.abs(y2 - y); - } - - /** - * Returns length of greater edge of the selection. - */ - int getLength(){ - return Math.max(x2 - x, y2 - y); - } - - /** - * Returns the X position of a specific index along this area as a line. - */ - int getScaledX(int i){ - return x + (x2 - x > y2 - y ? i : 0); - } - - /** - * Returns the Y position of a specific index along this area as a line. - */ - int getScaledY(int i){ - return y + (x2 - x > y2 - y ? 0 : i); - } } } diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index b4917e519e..f12cdb5c53 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -187,7 +187,7 @@ public class Planet extends UnlockableContent{ } if(sector.hasEnemyBase()){ - sum += 1f; + sum += 0.88f; } sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f); From 17e66f10088ed58bb992834c8a4529e1c1ecf189 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 17:17:55 -0500 Subject: [PATCH 041/162] Final campaign tweaks --- core/assets/maps/saltFlats.msav | Bin 19191 -> 19304 bytes core/src/mindustry/core/Control.java | 2 ++ .../src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/game/Waves.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 2 +- gradle.properties | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index f01aa3a0f3c991f45644042effb3d67c40ede6f6..f4979da57b10f56d2957b952d6065690bb48cede 100644 GIT binary patch literal 19304 zcmb=J^R_m7M$GZhgs*SQ&;MRK^J0dZa-`HvscMz8FGQ_3=|oPOYT=jT`PhBV64T3* zZoQj1@5>pFX}t%heQr3S(#U$~P#R~>wAB3$LUv52wU6B7?dP4q(5T92R_^$n zzZ-woK4gzx{_4ugUH!Yhm-(MR?Dn_T`1`%8dBv~xyb8Iyi{G~DlTxzI(TI27BkfP? zhIW~Uo#IxVHX~{0>!aDKA1BP&Rou07`p?HU+13We#a|vgJlvknCu>zPdAO?Upl_rgu+$Ds);T zJbYbP_L|QnFK<4&l=Su2jd>d~Y})+lPd}$hdoO+b`KWfd*VeyFkN$kz z9)IJ#*Y1#AL2)*Ao9iprMQG~BS=JdC{6F#U>C#6sPvjR(Vh=g_dTUbUQ>|$>KB~)0 zPg?VzTX9JH>C{I`(`?;R(|b0tA9??P+rO}AEraEp=kWe7(MU*|pXjfv6?e>SuDiGjCn$aBMwRh4y5 zwY=qK%}ScNdg-UBtF=EV#zwE5GR?SsUc9EL__Tie`UgKg>%XzD`18{!zj))GAgi4l z0&MpMMeFYUaH!5P@#BX5J2nN)seZQbRgI_J`cIp_JMQn-o9gwMe{ERUDetL8E00Z_ zE%;R~G{fKDmyvg!zMlMd{;Q3ewpzcvr|VCD7S^X9ChpxerFiS3uUxzrx2#F-;eWqo zM?h?B4ClIYm21Neonq%Zb*sJf?E)>mc@_l?ZSNOcd^vGJ7x&SfLK}s?lw@c%EM_`b z^0m@rg?H=I5|{Jr{ax#pH}B$exxT{MR#-f4@ukM*V8#z}K_AY!^qqR>P_nqgq*lRU z9Up61*xI!PwVT#x`LTxBNStz6*T;X>Lo`{)A}8lgfHJpSSM==ceV>Z2y4t^CPd=14 zsY;FG>xX~ywRN+$ipSY+s5bv&+|DGDUcr2HYShO_*I&$yKC<(Fx&2*P5T~uTZjD~d zDpAqNQnCK-A*G9Ja{C^&e}iLXJ0Pqo4~ z``fL5H?6z-^J(p?w+{Vl{q$&N)XTf8mmb|IeY{`xq3Ab#k@;6W+53E(jh-F#TYs%f z`>9rk{Io?=UM_C0JQcGwYUXpb7e5-6+xum$N}exd*0=e}bh`2E4E=Q?H{Ivg{0mz9 z%O~^WKCjYulIw2Hzr|m9e7S`rlQG{7BfeWkd^e4jKk5lH-ilsp@acMiX zw?4WQYNw{ddL?b;&a91xRx+0D+q3JyrU#1-_|7VijCr(nx^`;bZrAmvBUY5Y%qrYz zQn|BYW!SuA-P5bLYA-#Rv@~e%!M}@C-+lJc3w<8>TXlt@Wq54Fqs4aTW7kR>7-%nL z`E9QgsdK$TKEWrlYF*I2nwhCBAMG2iH&@uUT+iHd?!i}sxc&!UHRAd=uE|OFx+@c4 z&VKc*VyW@kytFH46Q|ABpE_-w_)dSOI?0$@VO>v;PQCPJNzI%2`q$<$KJwjlnOn*C z-u7V0pL1d~KOKx%C$gSn$#bs~XIARXsPVa6Q}R<`xr_A5)OVE|Q)ZS=d;DMRXmZuh ztc^jBHaNYPu_!q7WJ2d}n=P98(J8Y(IhrVVI~cF}@JeZ^SIpB~*4Za?;@7T?i+X13 zuzcOUX{WkXbG+{?JMzEp^?_NF@0^;d_Pnu}+p2Nv$yvoyucj(wehVtyYIHt7%2oT- zO5blwjTsHTUg@*AxLL*Aws?7QWn`nqyJ&|Jt;y51L*MQEF2O(fv#Xtnfvtfs|1Np{ zo$~1s+CBH41Ql)!nQ8N&%IZax)sw1OWwtw`EzfX0^89jmllM~Z={tgXe&rVK3tLx^ z!*X$n)ro_9LpTf6U2W94Kipbd;J#{stIa~IjPR=DBF-2AKk*NfKQ3gRdgRF`C(b#Q z*H#KW%UWHW$|vA$8@x_uligaEmbivnbJnf!-yyk!O*OKg)yGrB}J$Z~8OmMf>E0 zqIE}>Yd$@_I^1i`(mf|cvpvl&DQRj{?l@gB<4GQ;{+(qf)V#m!klX0f-ndue>T}Nn zMQc4uB3In5IV8lYBJrgBRrOSD(M@NrexEUW7JHc9fqE_engypW?`^u}v6HLhrJ>Ne zDeDW^o247?aEX^HPOo7RYt1=0_43YNCgt1?6|3f4nxndYYR{3fxfbzHKOg0L_xRjQ z)*Y`N?CR&&yUu5MF7UdSc}14^#Oaf&V%D^F&OLgIN&ao++)33{rG_}%`b40S+`1I0HhAq4X50mO@KXHY>SW_$7v0#3* zm<6{VmyczH_fhEw3NveyxyFrtMo6Y}&ME z>d&j6xUwJL(Ge8re>+D>Tc~_ytmb~{B_59b{d3aJZ{Vv@c(o<_Rl@Bqi$@zbgzP=X znlRCSk)>HlzfQBj9Qn0RC3f$KBk*B0&1 z^_wuW*l@i?`P8NB#7>KT(KMd==#k76oohRuG|gKR(sllm)%Bfw4ooOqT)}%wBle-w znY|OIKD~PMk<-kjdh4AOx_>Y77X1*LcP8{er)Er>#r4p4ALE}-owno2wH;fU)aD(( zasCj~jKqL-3nbTFVbFhP&veT?g8Mt`%Z0fcD|mU-?7oRVe|}nffqa%~pU(8{p^mHH za!V|KnDMKa-TS;=;Q^KO9h=$0ytKD2uv%-HXK10|9s2Id#Jd84|YBZ*otpW~}D9yE9nK9?!8nUuD3^ z6ztN`*l@(NU{QOMkxFai!k{Niy3ud1d_VEi`N7_6JEleGaNZ4?Gg~_}AZru%9lN6c zZJ*D7{lxWreqZaSn6+H9D*dG1_IZ8f5@%3;_=?w{%c}9WA2$O}{#Gac=?-_doZJ;t ze<-F+ndgJgF5#ULjnAI1VO0yXQ)u6QTK(up&1pgFc9m?L9J6jmj>dk)v%4a*0xND$ z56kYZxp%5)`cC(sb9O|>#;k~IwvH43^Yryn(P_{8zW(7=U`jWdH#JhPsM-GfUeAX% z4vzn(JPdh!to3)$sg9GkEgSltPFp|C`_AeoeZN#csBAto>ErP=7x@3Q-QFD4`}){V z9%*)QIkg{mSX*y8`W>xunBeW5WE7-5b-fOg()BJK=2ddfxZlU=9x^Rm8=`q=&HA$5 z>~@`FQjt+CvJPseYeK>z+N!(EE&iv5uR0$#{fBRqOK8F_#bv*Aln<-uEI-7i6a8rO zW>vkfcg*9~6xr{M+IjH3<@t>w?`!4>&o-a4ZtBko#k;18E6%H3S=PMz&y%8+XD(f3 zwUd87A!G;Z!zB;a99ypGx=x_NP$6X6(!y1fRuzV-Ef-SaYUtas$3Jde+{w=~a~(H* z6J8n>>SubcL!svN)2OM3>)fV1-?le~wYj=&_wT8nPVw5F&04*7n)vF~r~BhX7ydl= zI`!VoQoo1nmd`&#zhmHRwfZmMqV?mh(Q7B(vs*tLUajpNdav%`r&o`rCOutia8v8R zgyIG3iZ?yAbf420`26IhE+1c6%Tu-&gl^28dP(`|>6on?s&Q-PKH@7_`bFop5~t1i zT)A+rsbjH zWgfd-N^d{po0We4z+Hhmxr@W(8ny&#U1u-SciEDCMG544Ux02JTXip8P6T2s0IWFD#Q`jV6(MsvOkjX8A zi>)ti(lBzl&>wKRU1M#lfxl4v++}wbw_OT)+iAx#?e3YSMMo>i#xT~;m%A&tM9?@^vds=?f5NcuIjo!f5Asv=f(dU8M?AP-z^d>>CoG??%6V< zE2-}UZ5$1@2j4XpSYq#3x|JoP^0xnkFpam*HQvr&%AuJikZHZ*j(<>oe{lZWDZlx4 zRU6-Zy5d-J$m7CObJcq$wFFL@@gX-PS^nye3A3d%Cn@*q+4)cTqjU8`!5TmBmTi}w zJ)7?SV?XzzsfPp1y(84_Z1K8uH}=XYi>0wGVJy#O8pDhx{hxBh&dGG0qvgbEpF=i! z2W{U6@H#fTuWXw(CAsa)hcK2U$EUJc`bW&Weu|?tFXocNwY$D+?>N?;36!#lI}v!= zQp)k-71l}Ht5+OzTvga(;d9+X=&}j)nRm9xoe$E^Uo!1-$YW2b z;)|PJIKS?wd$st%wLh9oAl})!!3#ztjhTnLS_vp=<*~{`%^j^Lz{Qga1>zt+2 zwgC2^+Qj!$fu$^=MFuV)F={r?Ia(>t{O}f^BV5SyvpTxbr6CN?`9pV+s{Rp`e&=`DXxbWYw@CwnM}`{dgz`Auh7 z76+DI$v9c(zLc-{r6TXa4Z9gj>~%J9^ssqIE>+bzWswm(M`d4@de{4)y`Ig}HYm`?3oJ|g|@A@q|U8Y$#?Osq&NocIU{A0%2l$HH? zi(YnwXiT$<>O9NhX3gXJdXtm2r^lvu6X&U=&Qn@!=di$VrMKFd2O0LA>*h6Q8h-d< z?e_QCokNy>OsnTw8*YBL_?sK&XO*X1yS^BietxCc^QC5?!fUOESN60Sva&jAFWq`@ zZb7vbv%-$%O9>C2?%6oK;*zrQfgtg%tFGU%bWmRW(RcEcN+lg;md|`m2_DlvJ6}-z znKkF^q8KfX1sA(#=?1lgnJ>KM`KDO9^onCZXIr>dA7{8Dx?kzv?iZaWzi3FEv6`fQnBi0av(y4PbKVv)(ZDi= zbCq+-`%l+5%@Ob1sb^#!^47$ycGC%q2-7uYvz2BZlsds9Uf5^RcQL^5l0oQGvFaE$ z)s%-ag}aq4bDS1gc`rD-jMwi-(?)Ao%Q;Tm(4qm zvJywtXPTCiTK`^|*Jri;lwtWrRn^i(O_k=-=CVO&cUOfb%72|5lAQ9zI+3I0zn*J3 zt7eH_#FrfR;~JMHv1Ns9pB(by$C3vfw>#ryOiu*)mrXpQl4If_RC-Y{bc?uGV$04n zCCx)N>z_Opl&2f^efAqjCM(|o_y=R($?*7pHMufeR|IiuP=cG z->*6E<@J(Xma(h5%Gxt%bvR?moUN^2xE)fDob8+Z#e%C!^l#}_BbPtVJ9W6u-Spct zaY0eTf-O$ANA#;cDOU*>zG6HoomG3#^y3}BBF{;$7}`hkUnqxI5hGXm$!y)#ob$ z<%hHx66c>iW!>VMwCd_DqxU?`=-HF*tXtrJ z$)j9IuFBS7OF4hy%GB(hA4|J0U5L|Kuj*SqH;?PC_nj-QJHKn?YO5~wKG}ZotyIvn zyvWNA?Y!2aS9>InX+E;oO6NExuc}un+rG6{X7|#~<0vkYHr>^$$-Hjv za+a-sG=e8LiUnOtpK4_@U&)nma{f*h#>a-MV>j4cogJkUD5$#k#**p3w^rIOKT&D7 z@`LUA;{3%6Q?KNUf1Rx|u||6K2VKusot=EY_uuqg*dxLbewy#%()dmDPAB@Eatxb% zyj>;s*usuQ0o+gdf=?e1+gv3YdEr%I)6QnK^!!N^`lKJ4HGiv|<v1;nAN)1?0q_|?T=Hvy_JGThNeL1&Vy)ZoythHn(I=i*j6lUex%|i=IP|k7rDH zKmC_i=L9+aUY;EmMOB|USE)@2V}H49iL`gr|EX8k1@Es4cTt}z?7KBMSW`Ux^vW}- ztI8%Vuu^3|5TDz!%97>a_B*YY^R|3B^Dw$4Y|^Prn>G)h_$M(-o+a=rIOH$0lUZeb zDyBH1D`AD@woSJDLQR*i%=;j0DE5Wn(Km&aJa5aNaoi7U^8c-`A6U()dG1x9iK%dTUNLA+q7*~a3;OJ%6{=) z^~_7o{6Utvc3%s+6~b=ynkdIAJ@MFagnh-+^+C5piX(YLM4nvw_@Xn{-cT2Y473eLzc_3%fmMQCgmzrITX)6W0M5y47Jd{cURJ)5b8@-;;VIQW#XgB_5&v>or7mCT^pl%X z3-|IErv5Prj=MTr<@tx*{)SJL=9x{|cRDUFJ?rDo^c9SPN5!P8->b2R&-^6&-t5GZ zQ-6D|r0FRfy{ED9#+Nel_hkX{8}42%xPQ-onqS4?-5eed!!k}+w!J&IlYQycyPs@Z zzHDBie$?r7OUSCOH~9hah7-A2;Aw;6>q!z@~mGoc>4=EyPf3!#d=(vP&&CKYhQc7qAyC(86VhI z{5*bV#kGpDktJOJana>voF79UuTocl)T{mx!opRNb1yZ*~ zV!!lh>|O70Gqd!$hsXpcHWsUEN-{z(X64GU z%(=@iUf)@DeANZZDF3XVH~dWPo*rA=y<*vRRu1W}m#-AHJ#oIUzP)JcxnqAjxtdJA zR=2(SCltJFakIyzr((OMw>(!l=-ccOezokbHDl=pN0WjnMHBUe z(|V>o`Xg?%z2n@)(GQz$7EhmWR$C#uQ>E(i+IhdSm`kKJ8>~HNUniRf@0=YvO`Dg>8?T(v7>~{_X6RaLJF#D?XUsbLek~%ENbe z7Fyq}T&}c{XF>-5mz;(lr9$nQ!66(B&1QGA+7Co*x^%_#y@$Gpfc-qW36=j#^RQ!-y9cx%KRx2I~J0!Jrt@7qz{rdB2_#J@HE zz*3tdv0YpC+{?M?_~LTc8&=!RiAT1*WoerbdgqX_WAxth7pysENl7i>O#VEn=8jt6 zT!;M;&Kr8GP8)}8*<4k<;oaH=3Kz~w8!g_RGGn&L)XA#5<}B%R2^PLGah^>Y=h~LU znQAHzHqSc#HL9emt#HE5u>CfdzwYkX*;2LR?A@K|dQ;lZZEkD);yghq?AqUL!TIdG zJ40$Nxcz;!Yl+g_d)q=4mI&t^K69t#!t1O^r+6Qq52BW=7gTzEv_Eb>95CB6aes3~ z%og_d(I<5o7DygZsh!qg{Q9O?z4cPgNiu;?z8o`a{r$0_>D~;x3CA^lTO5p$lDOwN zY4SyDPG!S~vWpLXzLI)GOh9nr`uFpK_e%bKwX1J;Uf8Ct*I$_#4>kvF2<>g>+^0P0 zT-E8rELKa7cT8eEh9vTJmg_j#wTSl8!2FVyXwjbweY z==#a8UL~^}u|6gn6mzU_;}e@=-JTZo%SD-Nj~Y!1PN!nbHaiE=BXXzDsVoD0s+dVU*#5EXBu5PcGT} z^}TwM@v4RIg;>0~6TfH}Z=GUzT(I0fIFI}6?sg8l-r4M-?F`o^m)Kss_}k{o?P~8Y zUEz&!A76#s=Do4{wt@we`odbHHnecwAGOMG{G!Zo?`7KP`cS4{N|N!IV((x9qo>8?L-Rgt_} z*%j_B$wy9EnSD||qx#LMgq>4t@0|&YcHMeZ(_*ox{nv#O!Dt(nntDf>g-Zi<>|Td* zo!|2Gzu?+mD^g|Us;9lU<6e6Ic~i)}mkzCQj#t-RP|SL&ulY7^d*6k8`&X$)?}ofR zJ~K>LPkBwL8P`UkH~+oZIxgOI-Bs<+u*2%#qWJDB-ab-S?TfzO_I>be;-%}aZU0Z# zd2TPfnJf5T<+9e3saL*U`7~d3-{Z7^un6Y8F@I(ABDg~G8l*0~H>%SQK9)Gqhe>&c zy~muji#4CGoZ~$AwdS94!Rwj22HsC)n4Gt)d8`#xo;1g8>g8R*>(9t1>s?m6v_-6< z;nwBX#*6mmzN;&}J2|9$&Z(E%Q|&z@&IZqNero3+a_Q|}?xO9%mgmoX3187>vFxQp zZ_|s%vJ=!~9{%SoU+f}Y>(cbi?ceg~gWnCOZ(rB^*^2F}U3u@@BR3b_IjzDSz9MGQ zsnnHsqF36k_4+Q{l&;AedGAt)IOCF)tDkq==4{n7e-I`A;_K&X4Rhzx;3s;2#HP+x z+Pmz2`L*`2+Sv&g!(xu>ehG7`Jr!gx_=Yt|#8c~gUDFrqlS!BT?ztDdJ-KzQyS(IA zE#6IP>3yeOPM>A>a+=)4-v$R4y}h{m(jxJ<cINDe`axbynhs~!5`xF>9z46 zt3&IHBi1#?@7`c@xajboD$dWhe{N-e&HFKXV!XTI-v0Rc$I4{u-X5#Ds`teHAj4tF za|N4XX2n}?xFhgw`hiaj?{%1^PJLsX$1`pJf%Ta>{4X`@?jBoj8^LeqHs#^k|ankN^;^e%;F=?VfL_xwoL6 z|B>Mv&GjEVx?965&sHAGmH7SeThND4xre#Oe|hG-7x@$`c6qaf-tCR?@2a_e7@d%h zY`J{!pODA<-#?1kKAujjeevH=CO_0(`2%a^%*1kOlXH?=nhe?RNjcwRyq9x)-{*>Y zriXIJtaeY>=bu#Px8)>@uFNr(HSHVcPiEPDFvm}#X6-Ar ziSr6{Ijjs6qnkZGGbMK{-?L1xPuN6kmu~xq>A5+Fx0v)f3;m3`T3S;o8t>Qr?-=V{ zm7GfEVDdVI)T@gC&Ibz$$VXXYhp6T*XW;L=UQyLy`fI%WAn#X z$DjMHneOysX5fEWwpbx2v(#$MDQm_2tuv?06`6KEsXE_b&%M^K?E>pfwlP08>o|WQ zU;Ej7x0RzDHDJE!0nG)rkg#` zkf^!d_4UlRAd9%~%K!4+D@4w37n-|8X8Xgf4mR4K{i<)haI_5AbU*#XSB{qfC*_y- z>~h%7*Rq-Y^@(Xq`kKF}8|-IYAFIKC;X1>&i~Vnz_AFq&JyGuMjXM2l;WhV~EgXJ! zN5r2xoG!#UuPUp@Urxy9pWWg7d#5K`->99#rN1&IZA$G)9c|A`U1!x++|E>Ly!my- z3gJubSz8*CS0}tRlzQu0HM7@@v0v=XCh4QrC%0I6b8giuEbXy5&U`8$WWN6H-#$l{ zy32LmX-$rCn7foA&`K@yg~NvRhXZ-lXF1y(y?x;FTnoR-Wx16?sa!t{TZ=SPyF0&Z zGl;nEwPy`O*Fxn5bG@Ig&~UP1?33hXxZ%jytCDB5qd{$YQ0S(knIWgs-V4oAv3p+F z!8prrA=?tE<}b2=PpU8a+G!U=UQy4|ag;D>vp*Oh7R)i_F{4&*>btb4<9((+t9ZJS z#hoUrb9~J?(BcqTtnkutne7~wNmbJ?UhLkb?EQYF!3Ktna!d9V&G=-oDzZdL_K6~E z9DkFJto?Rnjt6hoNl((bcIHOgu6-#l{S6prxv4kX&7UQ$QUA)Mi`Ch>R(x_9_o;WC z&0Y@#))-#A8risaZhDUdm&(Dq2HEs=_iwwlIsbX_H#y0OAtX;xal(-aUzg~eRCc@- zm?i4Sc5}KV2WweZHKVyO!-46pvzyDlCYD9?Q-)Y78RY?GI_?* z^pzLhxxRk8V2|8^k4b0cl+ADN&q=d5JLyiLi6Y;tBaX}mRg^fq(&c~q@7eQ{y=CL8 z>FYnZe-&TU;q-Cy$*VhNX#8?KyYNkqd*s&Hc|t0JOIgfWmhacqRPp{37JEbOhRdTX z>7k!FzcH5mInwR6Gx+kaf7-M4)D(~0*H2UMaq;m}XbkpvV11b5&C(3#Gm|zOW-Dw7 zJGPJ6SFok`UWUTOQz;f~DwQTYGdc1)TciCO_WvvrIJ)P;wnf29Dxz6$&e2#A+AN!> zVA{B6yK=wAQ;y&T)dC+xtaMND-c4k`VLSW7my3t&j&J@o_j3AOo~rxl5C1=}IMrTR z*ZuNEy~RN#ZN}&SE%c4OYL~TC{?FrkrTyo9^P3H8K0UVB5m3>b51-TM~K`{v}t zyX?3BQudw`{_0KtA6?dLE@|4rQuXq-?U~*Dt@$%n3anyn7i*rFr{&f)on>$IPKQOT zGarPoq`8S~Fq3thC8lz=Y|hl#yE64%upk zq}wapMf7Z?+27kO3)|Q9kTp;?)_9NMj;sbQl^gCiJj)jfypi~Aab9NG8I|94WnH(g z2jAH?FC^92QRPObluifB+Y@!WC$K2{=$D+(Snd9+K2+m>@cEsZ%2WThpE#Bn7m+wW z>}6Jjyd~Q;{i?Ou!ooFXG8wCV40INGPCTLbcbTEWWXH*C#kv&stDf+x65vj8@}KDt zefy`>hOK4s0|#(%|&w@W+MW_b$Mc{1D1D9?4@!uH`-+J!%=-vwA~jW!-v zP_()>cj?65-4lD=4Qe}1?)c(cQWA1ga?Zkru+Ure5{y+hgTvOIU->oc#_Eghk4(A> zPbaEfx4eJ63hWg%Y!GCQ{3Wty}8;K zO1D4d2ufpUe{X5uDp4J`%6RIRJ>C}aR~i=Vd6}v8tkzy1JT zH>!Vr6?kOS;q@Y8gUykbkK&YK9WocB?Fh-(wfv%iCa0uZgyI9k?B?@KS3IlD8JB)u z(G)yyp5mc@5e4U~65{wIL+axWaIgkknSLelg@1zpk54>9i~g&BN>6U^M?LuPlVhdX zw3oe;ntk#gWu{h5zF^0eZ@VV&{4Aw)$3Nt%Z*?d`1_d>E$j3Oox;c8L;X z*(%4k$M~GY+7)pTs}ooD|Md0R+kNtDy2KJ$j%#b;Ew1H-JrLJ>`LO@PPuHD43k2rQ zpUYFGH@ivNy`SBzmX$qS+H9_)SgUQkze#Yq`@@K|s>_Vd4Q>+)jSpG2IJ>P;-rcb8 zu|VIlpa=)~ojs>-OcylQSgfR}rF5^0=jZYnW)1(e|NLWl-MG5!M#a0s&+QLeeW+o% zJ;8qNH{Qj6%rES;Jof&-^*#CH)dA_>6C?{{{U7bU)4lpT_dlyg752*-lfSr@NI&>m zliIca#QOA^W%KrBJX!tRc*cCex2MvV8ZYR*pRmEPt8?$}pw@#4j?OW2|_w=5yYu93)d$n01 z$6hb#_T+ghQfuYd?a$Ti-@Rr^piZ;F^1>fi-u13b=$4=HqWRkNgf((6vkE0Xu>Vbd z$f5IOKI_3Hfv;6(PCdFZW7^5LFF&a>PY&ko50-iUwY_J_bkR9&TT55?9@aCTwBkfk zPhddrk50A>yQ(rp+o@VX(JhX#Z$)2;ht)B^SRDC&@kY*M$rsC1jysq4EZ!R3Ql;=N zukcT;^Z&!82@?OrBRuo|-EU3s{qg&MM8*HW=6fto>n1Lp+0oU1n}gro?6-l>k;NNY z7crkW{=n$Xk-B>0h`a0imt1w0Ievacmb9&L48sY=?dfL@s9y*;#6N9X`<%<>u@ksT zr$6ZZ(-m>hL}`HZ^BY{QPMu&~A(Jd<}nOI-H7 zvP5q4Hm_G}CyNBY0jqU&p!^ku_NI?fR~WH`b0uebIRqb>*tKyxX7D}(EEa8%Ae)vt%a8gIHbW>imgMaIj zNb7egRnfogmc=ujF_4`7XQF~jU1)~Y#-1maOFsORQ)W~AZ2xA}m!gEF4o#M?FVqGs zUHIT#`K=Sn?)?l-34Xus?}qGHJ(&|bQVcUMX52QLqbwMz-#fFTN%rTyXEQ(Wde>CG zZrpM%<4{vZ$L=!g%gnoknatQkG_s7b`RCIfbvk5j%f_gGq6X z^$fA6*~eN=ue`kYx~cAoD0iKrE`bwA&dxEH;ZVLHw`5__mxC@b-#;InmH7Fb<%8$5 z*Si=6O{w^iZqj&V@68(@7#glQoX(iBc;EDw+h=gU*kW`0&dg_0$&!Wc3bQu9UYPOs zF{}QI2y4e5&aQ)w?5(4)?Dv$ zJ+Y!}aXITIPQhpVZrzPsIT2h@ESf>tZAGbXSSK8bQffZAHRRlyrJsI15SG}{%|D6H z>s?CFJH=byYD+yoTfOwro_zIu%v1T2)=efA7V|9jf{k zA54NmkCfhLJpEzn?)8_sH$Qy3FDt(OvfG7S$D*F=99Z$2b)Ll}i@#lKW+%ia|G#IE zj#3U9M@zYn<1UNLRf)xYc&mwum-cxJ!R|3uc?9OJr$OLpAk&}`C< z4Ee40d1240MkPr>(IrVg5BeJK4?7?A`mn&>qda$?#QwkE)44XR#B=thpj#Pxr=1jf zeWOfkLGJ8N8EkjVGJCWemR(sZ?)yY=yOqbUi)?e*(qngoXvh2fVfxKEbF<~C>#w#m zERZ)~_?!N(IlHO0&w0-Cdi&?M|C`6r zRjWQ$`F&wIrJQrXgl*HhJ#jWuqu1TurMk5cgX zs-M!|EDzcC_?41CU%+|}c0=LIY2r!Kvt7O@q}6cTzxYEhn)~hlMUe%c*JQ<*C9$pE z&~}sY(Y)I;|E2KHS;qdp-FDZss}0i<47NQm*uO90`PNAs@t6A+->;d{laNxNd8K^y zv4H(^`8lse{}5TWb(r0a38 z^YrXOR+o08+EXT*+ur5exi2$~{rwjH$bU=rE;cb8D?rHyM9Z^|Wq;$gSQU1}b)?fRzUC1=^z z87^HQb8lUmb!ZS^NOUk8*P^* zzsXvwdd*~A-Ku3X{+%${GwF73$leWlf23#JII-Kj_d;z&vF!hQ7S7#szg)P;@U<^p zDBj)oQTBdY4b$hZucZ3cuzCn6`< zW;OX{rRew;?@8U$vX<%6+9SGCUtDGvNIWI=Z*sEsoKF_&cQeAyo4zYB&5hgnEd2JT z?2l5L%_beaB(Y9Pz0f5phqcH@KAeB?g~n6g99JLTD#mVq=#8k;ojqzosu_$ArXN*e z_*eDeMafso`Aut8OUvT!S-j()XI$a;;AX-9llj_{-~7|~ueoE=R6Z+B# zb>P_Aw3J!L^_O2fyK$4FJXinEE^(Pjm1YMtH}_V~shCqfLwZiV>#4--GqN-IkKbwh zxk2%`ugvt|z(*^OwLWaRJ^RhNw3=UQZz`TKGii!Gb|znRg4yw-E9ZOfKICsM;^|vc zBEO{ma;(y^UCyb()rEdH#a|efBnbb^(UjM90jGT{hsEWYkD-xRsY+X z9rG@3s#5s4U6b8!#;qLLZyWqi^caS_B`h*cp6tC}B;=Os-Vld?2ca9a+U-yGt>fKt z>Ssapu4ms4KQggvop>%R0FFiH*>6`NP;IXhN+t^=C zGyD73;&aW<2^trp%97XK5817)u;v-R|3Rs=kbk<2+*STJpHGQe*4&t;vaDD+J?xdW z+Jwp7L1#Bk&0QekXudaNb(N&W_ODx?82d!4JEY3m$xI6n?B8f`c}CM`9}cG!%X^7C zzMjlFaOKpYqhEEpT;@HGKk(G#bXMr(>x#9r_qJU>@F48@i?=p~EqC4L%ug`Cp}+gq zW7jj`yHyW<`F8qw#mCp1O(&9-g3Bz0Fz)P3D|(ORU& ztIVY)F-YrX?hcua`zud{{oBiw{9=Ok^kqG2FIRJ{T6#ET(>Yn*ewSzMGroz1O{}Pu zF@9ussqcOR|6ePe1M|IqOb*J9@#LPgT!VkzM$hU0;&S>-9}4WBz!11s?_|f1vXxV& zIZl~odr~d&jRdzhZ-qV0Ld_ zugx?C-!--?r`PhmU!UJ~So&1|wWHjxv-jH;GELNto4Yz`_St`RkJcWE?p)vR^1Hk1 z{|3$A4L=UrcE>OHQXzGp?Twf`Tf1@Al6UV!moDiqDtGvBZGXDJH!HXNO5X{aHokr& zWga!V_FmbKNz<=BxxRf%YUtx@&bGCyZa=q;?mfBT{bl+43G3Nve=X)bw<0Dz;W{bo@BBcbVG#*|zVliEFG$Jf~LVb$Ht$F8}%i|JL6Z ztUmA|{p0#;G9kgQ?{n7t7Ys>Y`&n3jd7HqmD~Tx=aY4?8X*U;da|;#RXfpMH zdHGrM6p44w_O|A&*uSQ7v&PP<%I%ugO0S-Ox_#}Wq_=5&R9=&iM|aLEvv z{;cQsvNx+rzDwKA`Y_opf>Hg4=bc9!How`P&0{k8%^}9!x~S}8z2d8w<`cTde4pLC zd-kC96xZaBNteIu@_(JTePd(!@2OM&`?NK4q*`maw@qebH}{i${5|+%Rky%FpE|MssQt&a%!chk*9|W|-hMnpQc=rdLtE{|$5(w5 z3;+K!IP$1?_HyNMwS|G2qpao@eWOp*&t z6Acs8g?>S*^RaB^Ny^;juUI*>lXD~ZJQS ztDpS0@WZ_SagXmhYRpQhKfCYLzGMFrf@S}GxfkF6Zq@fC*N)X(ExVHNVbMc9zEiS3 zSsO0o?^?IK@b9r z?0SCv#&y>hKUTllzw!~Q@;;tcnZO76m4d%mPrO~AxSdn+>zCk|+a~2(cq$>vsyqY_FJekkw{y)ia*B^ea~UtMk)#xjA26@O5L_n-4{EzDL~5 zFZ%XZE&bVl#eWl~*513gJ>*=Pp1b+y7`D_?Tp6eG(r1g5^9TyxU)IoHIJKD}_mBQY z$8A}Mg$`eJzH(DNFp>B5nX1EEoGvHLIm<1+);;OOo21hRDzrbE&N^{~`?B?79vAlm zLO(oYdh=_eQ*B$Uz4{J22kv*WF5c^>H~;dixDBD-E!#eSoK#@9Pi@(b`1Jj!v;WKG zv)0ElKIizW``bDB(V0bj0e{4PAJ#2wNK&{Vc1+^v(ggv_{~XBv9{V!7bN%uoyjR2H zrZRIqHV-{w_Gq%S=l*Vm{jYgnomu((hr{`}16A8U9E`fqm+^C3icgNrR_D0=8~pBB zf2dvJ5~C{d_|1;0Da-54rE1RjxmhPnzoKyKgGpV7V)OeysvoVQzBi~imrbtk`FnA# zxLTg-J~JWn3j1$jbH1%>cRIu7((^y2Vo%%pHD;XbvJ+pFXZ|nomYMitQ?FjMwcmjo z0<#z+D*PY)oXPoTiIe;>=4kVoOYc5c+HJ&^>~~>}%*;w&uR!&;i{kGqb{xLqdvkC0 zS3Y*zJDl>z+4=>&BFju%4ZM%Ezj(BtDZw@?{q(2FtV!O^jj6X^CTlaUR-7%?e!r>f z>bCaq-wz$v+`ahYSfHlx&8=^2cpt7X-LmWSwO0ia^V>S&u2g0pOc%;^jO;0|nd539 z+9#_qQEcyCRo7%&-D75YoX$J8n>5B-c&}-#H@>!aQPh*1YENg?Q(-IP8Z#ew9O{Ve zHrvUyz;DUw-H}RR-{a1CtYQi0GM#+wy!la6zBs*YAAKIY-1MuJ_5U`#*WFfuQ<;4E zlf^D?b`$ucvc2KKXSaE2^_r`5&#h~CHu;eK&W#hAHh$bC>JhV6Fg$P%+ZN}TsRH5L zFZg9v1iZ>VDtCJAYJp|%3}S-VxB4wm>z#BVEmQ1s$H|PJows|lthcvq%bn#}yl?;8 z1i^Lxziz5}dV8-%>Xv`qod4rH&d>Uod*`3j@6QiA16oc zO#4}%6pD^{qseL@Zn&am6oj&o^XzI}?`BNP}zSjR3&oMD}(vIbMycaHYY?!V7 z-Z{qNO+mLvoj0T0q_#gxKi;!e_jcudIBjG9>xn;p{aO)tLd}5Nxr+Cs{-*t$W-67< z@xp7m@BW{&ifRA-u7jsOUSt1tA@}vc&CUx}Bqg(lAD$Zd(eI2^vvu5gi}uh{Z?#kX zH|OV^O3{#i-K|)-Uq|V&A!Fa7)cd>z3u@gDo!^|F$K<;u>1_1YP5Jh-?N~!y-b)*O)u*uo)5UFv_MAEw?Y_2ap@U{`9wot*7v zvI5gT8vE|iXKX)F+tN~XE%TLT?p4{HGvvMZ>Plqoyd<#twg&ftEAM%NWXv>viE-}aa_L~=cSh)&rkg&K8Zu$=#}k(2@eb0f4#q{zhQp>tImD<$ojPKYnBgh zFXfTm_ix7Exmr2AX`bui7n_!*o9xMT<>K-w{QcO<{$u~+i1*C@AMFemGuOH&m1(Y- zCu*?y%ckT1|2;dO|IEwx^sbZcmzh}fD?|TJyJ){XV2^80bf@%b*?m6)KU=L#PYU;6 zeb2*i#w8Q;rL{jkd1}SU989tfT^+Xcu2{_Fn5ZxBm%mt7AAVMO;?JMrIMRO%8kFeop6|=|J$&B(s~!8Z-#Rm`+vEdn_}quN_^qr6Z*DC|8y-c zbxYN|ezxOtpM>9^-2pO1KV(nc)8JfNUN@1a z&uc^z8g)6|O9_8%S}J0_H{qx2xANKl8uw_(u28mFVG8IM>}~fW2UjB zFKTW4E|jmi-*~~{wBx3_+FH>8ueK*VS{qy%r{DQ*s)U4Z`(LTw)i)}ZaxLkx-5sEC za_!ms-K&ZHM3~D>e*$ZxF?=Tn7cBpS={wey6f7OJ|YJ2}ovTokE zb>+{m`Fanck6%u5zCDYXSNg=F1pg}5JD1jNS!nAiVf=V*saDmD)T7bW@`hC_+gqKD zE;-(Ra^Z2sW!t`cTkotd%KJBIQtPo9CvU58oRHU6%-rM2Tj%5;d3R1f-{G1$SH-vd zKDw{g^5>fchV^Sdyj^?bS4`*iw_9@0{yKk0=kKm>p-Y3pPL<_2PsyG9yvjUx>!UOi z*>zOU8Zy$c5X=I@MzSlDPw)EvbxoTa$=fC{#zRo|_UN7BO z;CJT5Q?Umk?=I!~-cRx7zKH25ni7w+E z_wMaWd9C~4_iRSP&t@?JZOd7V>V-U+*Ka*kTFsEjHnBuG;@yUg#``@hUOi(Hi$3fh z-2b~`^Sk2>`Jdg^MzZRNh!?PG_V=9lFl&jie)@*>k{eeYobXHcm}2q+hP=a{nt!mJ z`}k}{|CEiFu4UbM?y~)IN$L+Ft%hQ@gU#h0#vEz;6V@$j-p;%`JX@dP*zFC~8q-~0 zeM#Ex%+dDL_g-}8cA3&i}z1bX)aZi+L+F6HaALvCHyzD z+?5BrWNWVnT-hTt*Fo*3*g2MolM-9S)L7OV)N(|rJ8|~a-3|+hR{Z7oYG$ug`h@5F zhL-mNg61y2*eW6;q7x^t6Lv)@q~WP>&O&Pzoh!XZtQ#v1ef>S-$$}Qg|9Xa=lYVS> zVV1XK&`LAfpm#^Z(*EF@Zyw5Q9RIb|c%!7Ww<#@Rz1HG7!9&w;q1J72zD;c3*#%+( zR_1cNGi#1F_Sv_0oz;n?dv?qCu5P%%(sP|Zku_rp>*2|(KHK%Erv%h*m7EaG7d^SR zZpz7WK8GeQiC=-ecMo5wJZ8M@Zl}@bc;l_ka(y1dz? z;|>}o{mk4N_vAmANWB$eT6g`$4x!4s*SD#RndL?_`?4fUj6zd_~si#ND*d6LgA@HRJFV>feA+uVm7Zx2d(u~`Q_TpIS~#ID_*r7Vqe z1eY<}Xj$!OUwODUg}uvl4X;(3iO$191M3MY7d{vmrHMPuI^OnK<;ts=UV&+a8y36X zJ7`drAa`P+l~+|nd*V)=%g>ZMWmgyHtdZ4@az4m<&+vzMGS9SYsqAwra$R?Z^FDuU zvVv`MkNlTgM^hB6nt8Qn=9x=v+p|w+VFTmtlmda8jV0=n`Q|4boU%Od{i#pWW?fuq zoSc5c+R|#f@<;ax_E#7Ff2;VSLMrDJr(D+^1^xGj#M32CUFKWn#J$1L`JGhx1WTuf zT^svt&e?btiN2Uqu8_jFFM@3Xud+%qTS}2~%8IqC?@#5jT%(?T;z=;aY%7;^>)>=R z&*qdvv)m+f7dYWNk^`n!69uKUMT9e11-?U(y-_3){$ z8*9%UxP9=e*#YUAxr%BtIgf0WX7_oRYm_>xbsmHKsegj+BOE^aD_HPJElhk9w=%1u zKb^fPJYnJH2VZTOGTLn06s$Nt<*9u&+7WoFnx!u@IZ9>5L(V6WJ>iK-d*?8=h~@l~$RvE1qjWnM=;C(Hl&r`vP9Fo#*C zWP)e)%3}+!XK0_?lKh25D!*1|UdZn4iaECnW40&SK5f%j|FAH5VE|j&lIPpmAKq$w zd#A5v@{#n-_sY~_14H>A)QFs3x^b@hh8m&M>9$YxJBl{-d}_Tf7vR2E>^a9ScpqrZY`10 o?A7=Gx!QL-{`~ne{p_+MZ(qE;`rfwk)%yAWe*I_f<=ZO)0Dj%6VE_OC literal 19191 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 diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 952ab5d82e..bc5acc066f 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -332,6 +332,8 @@ public class Control implements ApplicationListener, Loadable{ //reset wave so things are more fair state.wave = 1; + //set up default wave time + state.wavetime = state.rules.waveSpacing * 2f; //reset win wave?? state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index aa02f25022..b90afcae56 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -397,8 +397,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I /** Actually destroys the unit, removing it and creating explosions. **/ public void destroy(){ - float explosiveness = 2f + item().explosiveness * stack().amount / 2f; - float flammability = item().flammability * stack().amount / 2f; + float explosiveness = 2f + item().explosiveness * stack().amount / 2.4f; + float flammability = item().flammability * stack().amount / 2.4f; Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); float shake = hitSize / 3f; diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index c8667e7e76..ddcff2cbbf 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -340,7 +340,7 @@ public class Waves{ step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty)); } - int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.75f, difficulty)); + int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.7f, difficulty)); int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty)); int bossTier = difficulty < 0.6 ? 3 : 4; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 78802f46bb..187778e470 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -356,7 +356,7 @@ public class SectorDamage{ for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = fraction * 23; + values[tile.x][tile.y] = fraction * 26; } } diff --git a/gradle.properties b/gradle.properties index 75d6273d77..33d59bb632 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=a30c7164ce621554b73610ac84ada418e4500a5c +archash=a61861127c9fea900f10b84a35be2369437be8f1 From 15f33b45c7640ed2338d1e425e783b3361433aa1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 18:12:45 -0500 Subject: [PATCH 042/162] Salt Flats should probably require additive reconstructors --- core/src/mindustry/content/TechTree.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 30d6c60207..cf77c5819b 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -510,6 +510,7 @@ public class TechTree implements ContentList{ new SectorComplete(windsweptIslands), new Research(commandCenter), new Research(groundFactory), + new Research(additiveReconstructor), new Research(airFactory), new Research(door), new Research(waterExtractor) From 5fd66d38bb72a95b3a01e71d18ec3a7c902ace72 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 18:15:40 -0500 Subject: [PATCH 043/162] Fixed #3573 --- .../world/blocks/storage/CoreBlock.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index bc706ff73d..995834c977 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -268,6 +268,26 @@ public class CoreBlock extends StorageBlock{ } } + @Override + public void handleStack(Item item, int amount, Teamc source){ + super.handleStack(item, amount, source); + + if(team == state.rules.defaultTeam && state.isCampaign()){ + state.rules.sector.info.handleCoreItem(item, amount); + } + } + + @Override + public int removeStack(Item item, int amount){ + int result = super.removeStack(item, amount); + + if(team == state.rules.defaultTeam && state.isCampaign()){ + state.rules.sector.info.handleCoreItem(item, -result); + } + + return result; + } + @Override public void drawSelect(){ Lines.stroke(1f, Pal.accent); From e65971db47a32243f9a941d685e98fefb9fe74b0 Mon Sep 17 00:00:00 2001 From: Volas171 <60143910+Volas171@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:30:59 -0500 Subject: [PATCH 044/162] h --- core/assets/contributors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index d38692de8c..cb64660dae 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,4 +1,3 @@ -VolasYouKnow Prosta4okua Felix Corvus Vanguard @@ -102,3 +101,4 @@ jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) Headphaze (freesound.org) +VolasYouKnow From b2851658182bcd74b7c6d11e58dd6a84ea721f79 Mon Sep 17 00:00:00 2001 From: Quick-Korc <68910156+Quick-korkc@users.noreply.github.com> Date: Wed, 25 Nov 2020 06:31:16 +0700 Subject: [PATCH 045/162] New Sector description Translation --- core/assets/bundles/bundle_in_ID.properties | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index e83f85d4f3..301d321e9a 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -593,6 +593,11 @@ sector.tarFields.description = Terletak di pinggiran zona produksi minyak, diant sector.desolateRift.description = Zona yang sangat berbahaya. Banyak sumber daya, tetapi terdapat sedikit ruang. Sangat beresiko tinggi untuk dihancurkan. Keluar secepat yang kamu bisa. Jangan terlena karena waktu antara gelombang yang lama. sector.nuclearComplex.description = Sebuah fasilitas untuk memproduksi dan memproses thorium, telah hancur.\n[lightgray]Pelajari thorium dan cara penggunaanya.\n\nMusuh disini menyerang dalam jumlah besar, yang siap untuk menghadapi siapapun. sector.fungalPass.description = Area ini terdapat diantara pegunungan yang lebih tinggi dengan yang lebih rendah, juga daerah yang dipenuhi spora. Musuh membangun basis kecil disini.\nHancurkan itu.\nGunakan unit Dagger dan Crawler. Hancurkan dua 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.windsweptIslands.description = Jauh dari pantai terdapat sekumpulan pulau. Catatan yang ada mengatakan bahwa mereka memiliki struktur untuk memproduksi [accent]Plastanium[].\n\nKalahkan unit laut musuh. Bangun basis di kepulauan ini. Pelajari pabriknya. +sector.extractionOutpost.description = Sebuah pos jarak jauh, dibangun musuh untuk meluncurkan sumber daya ke sektor yang lain.\n\nTeknologi tarnsportasi antar sektor dapat memudahkan untuk menaklukan lebih banyak sektor. Hancurkan basis itu. 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.planetaryTerminal.description = Target terakhir.\n\nBasis pantai ini memiliki struktur yang dapat meluncurkan inti ke planet disekitarnya. Memiliki pertahanan yang sangat bagus.\n\nProduksi unit laut. Hancurkan musuh secepat mungkin. Pelajari struktur peluncuran mereka. settings.language = Bahasa settings.data = Data Game From fac1bccda18089a6d1f07c4bf7a869f53244b2ac Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Wed, 25 Nov 2020 14:16:00 +0700 Subject: [PATCH 046/162] various fixes --- core/assets/bundles/bundle_in_ID.properties | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 301d321e9a..abc2909083 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -22,7 +22,6 @@ gameover.pvp = Tim[accent] {0}[] menang! gameover.waiting = [accent]Menunggu peta selanjutnya... highscore = [accent]Rekor Baru! copied = Tersalin. -indevpopup = [accent]v6[] saat ini dalam versi [accent]alpha[].\n[lightgray]Artinya:[]\n[scarlet]- Kampanye belum sepenuhnya selesai[]\n- Beberapa konten tidak tersedia\n - Beberapa [scarlet]Unit AI[] tidak sepenuhnya bekerja\n- Beberapa unit belum sepenuhnya selesai\n- Semua yang kamu lihat dapat berubah atau dihapus sewaktu-waktu.\n\nLaporkan bug atau crash di [accent]Github[]. indev.notready = Bagian tersebut saat ini belum siap indev.campaign = [accent]Kamu telah mencapai batas dari kampanye![]\n\nHanya sejauh ini yang kamu bisa. Perjalanan antarplanet akan ditambahkan di masa mendatang. @@ -147,6 +146,7 @@ planetmap = Peta Planet launchcore = Luncurkan Inti filename = Nama File: unlocked = Konten baru terbuka! +available = Penelitian baru tersedia! completed = [accent]Terselesaikan techtree = Cabang Teknologi research.list = [lightgray]Penelitian: @@ -1240,15 +1240,15 @@ team.derelict.name = abu-abu team.green.name = hijau team.purple.name = ungu -hint.skip = Skip +hint.skip = Lewati hint.desktopMove = Tekan [accent][[WASD][] untuk bergerak. hint.zoom = [accent]Skrol[] untuk membesarkan atau mengecilkan layar. hint.mine = Dekati \uf8c4 bijih tembaga dan [accent]tekan[] untuk menambangnya secara manual. -hint.desktopShoot = [accent][[Klik kanan][] untuk menembak. -hint.depositItems = Untuk mentransfer item, tekan item dari inti. -hint.respawn = untuk muncul kembali seperti awal, tekan [accent][[V][]. +hint.desktopShoot = [accent][[Klik][] untuk menembak. +hint.depositItems = Untuk mentransfer item, tarik item dari pesawatmu ke inti. +hint.respawn = Untuk muncul kembali seperti awal, tekan [accent][[V][]. hint.respawn.mobile = Kamu telah mengambil alih kontrol dari sebuah unit/struktur. Untuk muncul kembali, [accent]tekan avatar di kiri atas.[] -hint.desktopPause = Tekan [accent][[Spasi][] untuk menjeda dan menghentikan jeda. +hint.desktopPause = Tekan [accent][[Spasi][] untuk menjeda dan menghentikan jeda permainan. hint.placeDrill = Pilih \ue85e [accent]Bor[] menu di kanan bawah, lalu pilih \uf870 [accent]Bor[] dan klik diatas bijih tembaga untuk menaruhnya. hint.placeDrill.mobile = Pilih \ue85e[accent]Bor[] tab di menu di kanan bawah, lalu pilih \uf870 [accent]Bor[] dan klik diatas bijih tembaga untuk menaruhnya.\n\nTekan \ue800 [accent]checkmark[] di bawah kanan untuk menkonfirmasi pembangunan. hint.placeConveyor = Pengantar dapat memindahkan item dari bor ke blok yang lain. Pilih \uf896 [accent]Pengantar[] dari menu \ue814 [accent]Distribusi[].\n\nKlik dan tarik untuk menaruh beberapa pengantar.\n[accent]Skrol[] untuk memutarnya. @@ -1274,6 +1274,7 @@ hint.payloadDrop = Tekan [accent]][] untuk menurunkan muatan. hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan. hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya. hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[]. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok. item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat. From 87da58df69130b64909bee5a74597d43a534c103 Mon Sep 17 00:00:00 2001 From: Nikolass1000 <68129216+Nikolass1000@users.noreply.github.com> Date: Wed, 25 Nov 2020 09:19:35 +0100 Subject: [PATCH 047/162] Update bundle_pl.properties --- core/assets/bundles/bundle_pl.properties | 35 ++++++++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index fb874f5e08..483d3f37aa 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -22,6 +22,7 @@ highscore = [accent]Nowy rekord! copied = Skopiowano. indev.popup = [accent]Wersja v6[] jest obecnie w [accent]alphie[].\n[lightgray]Oznacza to, że:[]\n[scarlet]- Kampania nie jest skończona[]\n- Brakuje zawartości\n - Większość [scarlet]SI jednostek[] nie działa poprawnie\n- Wiele jednostek jest niedokończonych\n- Wszystko to, co widzisz, może ulec zmianie lub usunięciu.\n\nZgłaszaj błędy i awarie na [accent]Githubie[]. indev.notready = Ta część gry nie jest jeszcze ukończona +indev.campaign = [accent]Udało ci się zakończyć kampanie![]\n\nZawartość kończy się na tym. Podróż międzyplanetarna zostanie dodana w przyszłych aktualizacjach. load.sound = Dźwięki load.map = Mapy @@ -189,6 +190,10 @@ servers.local = Serwery Lokalne servers.remote = Serwery Zdalne servers.global = Serwery Publiczne +servers.showhidden = Pokaż Ukryte Serwery +server.shown = Pokazane +server.hidden = Ukryte + trace = Zlokalizuj Gracza trace.playername = Nazwa gracza: [accent]{0} trace.ip = IP: [accent]{0} @@ -495,7 +500,7 @@ zone.objective = [lightgray]Cel: [accent]{0} zone.objective.survival = Przeżyj zone.objective.attack = Zniszcz Rdzeń Wroga add = Dodaj... -boss.health = Zdrowie Bossa +boss.health = Zdrowie Strażnika connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0} error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie? @@ -523,10 +528,12 @@ sectors.launch = Wystrzel sectors.select = Wybierz sectors.nonelaunch = [lightgray]żaden (słońce) sectors.rename = Zmień Nazwę Sektora -sector.missingresources = [scarlet]Insufficient Core Resources +sector.missingresources = [scarlet]Niewystarczające Zasoby Rdzenia +sector.attacked = Sektor [accent]{0}[white] jest atakowany! +sector.lost = Sektor [accent]{0}[white] został stracony! planet.serpulo.name = Serpulo -planet.sun.name = Sun +planet.sun.name = Słońce sector.groundZero.name = Punkt Zerowy sector.craters.name = Kratery @@ -539,6 +546,10 @@ sector.overgrowth.name = Przerośnięty Las sector.tarFields.name = Pola Smołowe sector.saltFlats.name = Solne Równiny sector.fungalPass.name = Grzybowa Przełęcz +sector.biomassFacility.name = Obiekt Syntezy Biomasy +sector.windsweptIslands.name = Wyspy Wiatru +sector.extractionOutpost.name = Placówka Ekstrakcji +sector.planetaryTerminal.name = Planetarny Terminal Startowy sector.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niskie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej. sector.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przedsięwzięcie od prądu. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. @@ -551,6 +562,11 @@ sector.tarFields.description = Obrzeża strefy produkcji ropy, między górami a sector.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie ryzyko zniszczenia. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga. sector.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zredukowny do ruin.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie poszukuje napastników. sector.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie. +sector.biomassFacility.description = Miejsce powstania zarodników. Tutał były badane i początkowo produkowane.\nZbadaj zawartą w nim technologię. Hoduj zarodniki dla paliwa i tworzyw sztucznych.\n\n[lightgray]Po upadku tej placówki zarodniki zostały uwolnione. Nic w lokalnym ekosystemie nie mogło konkurować z tak inwazyjnym organizmem. +sector.windsweptIslands.description = Dalej za linią brzegową znajduje się ten odległy łańcuch wysp. Zapisy wyakzują ze były tu struktury produkujące [accent]Plastan[].\n\nOdeprzyj morskie jednostki wroga. Załóż bazę na wyspach. Odkryj te fabryki. +sector.extractionOutpost.description = Odległa placówka zbudowana przez wroga w celu wystrzeliwania zasobów do innych sektorów.\n\nDo dalszych podbojów niezbędna jest międzysektorowa technologia transportu. Zniszcz bazę. Zbadaj ich Wyrzutnie. +sector.impact0078.description = Tutaj leżą pozostałości międzygwiezdnego statku transportowego, który jako pierwszy wszedł do tego układu.\n\nWydobądź jak najwięcej z wraku. Zbadaj każdą nienaruszoną technologię. +sector.planetaryTerminal.description = Ostatni cel.\n\nTa baza przybrzeżna zawiera strukturę zdolną do wyrzucania rdzeni na lokalne planety. Jest wyjątkowo dobrze strzeżona.\n\nProdukuj jednostki morskie. Jak najszybciej wyeliminuj wroga. Zbadaj tą strukturę. settings.language = Język settings.data = Dane Gry @@ -573,14 +589,14 @@ settings.clearcampaignsaves.confirm = Jesteś pewny że chcesz usunąć wszystki paused = [accent]< Wstrzymano > clear = Wyczyść banned = [scarlet]Zbanowano -unplaceable.sectorcaptured = [scarlet]Requires captured sector + unplaceable.sectorcaptured = [scarlet]Wymaga podbitego sektora. yes = Tak no = Nie info.title = Informacje error.title = [crimson]Wystąpił błąd error.crashtitle = Wystąpił błąd unit.nobuild = [scarlet]Jednostka nie może budować -lastaccessed = [lightgray]Last Accessed: {0} +lastaccessed = [lightgray]Osatino wpłynął: {0} block.unknown = [lightgray]??? stat.input = Wejście @@ -650,6 +666,7 @@ ability.repairfield = Pole Naprawy ability.statusfield = Pole Statusu ability.unitspawn = Fabryka jednostek {0} ability.shieldregenfield = Strefa Tarczy Regenerującej +ability.movelightning = Pioruny Poruszania bar.drilltierreq = Wymagane Lepsze Wiertło bar.noresources = Brak Zasobów @@ -1162,6 +1179,10 @@ block.payload-router.name = Rozdzielacz Ładunku block.disassembler.name = Rozkładacz block.silicon-crucible.name = Tygiel Krzemu block.overdrive-dome.name = Kopuła Pola Overdrive +block.block-forge.name = Piec Bloków +block.block-loader.name = Ładownik Bloków +block.block-unloader.name = Opróżniacz Bloków +block.interplanetary-accelerator.name = Przspieszacz Międzyplanetarny block.switch.name = Przełącznik block.micro-processor.name = Micro Procesor @@ -1213,6 +1234,8 @@ hint.payloadPickup.mobile = [accent]Kliknij i przytrzymaj[] mały blok by go pod hint.payloadDrop = Kliknij [accent]][] by opuścić podniesoiny towar. hint.payloadDrop.mobile = [accent]Kliknij i przytrzymaj[] w puste miejsce by opuścić podniesoiny towar. hint.waveFire = [accent]Strumień[] wypełniony wodą będzie gasić pobiskie pożary. +hint.generator = \uf879 [accent]Generatory Spalinowe[] spalają węgiel i przekuzują moc do pobliskich bloków.\n\nMożesz powiększyć odległość transmitowanej mocy używająć \uf87f [accent]Węzeły Prądu[]. +hint.guardian = Jednostki [accent]Strażnicze[] są uzbrojone. Słaba amunicja - taka jak [accent]Miedź[] oraz [accent]Ołów[] [scarlet]nie jest efektywna[].\n\nUżyj lepszych działek takich jak \uf835 [accent]Naładowane Grafitem[] \uf861Duo/\uf859Salwa by pozbyć się strażników. item.copper.description = Przydatny materiał budowlany. Szeroko używany w prawie każdej konstrukcji. item.lead.description = Podstawowy materiał. Używany w przesyle przemiotów i płynów. Nie jest on przypadkiem szkodliwy? @@ -1370,7 +1393,7 @@ block.memory-cell.description = Przechowuje informacje dla procesora. block.memory-bank.description = Przechowuje informacje dla procesora. Duża pojemność. block.logic-display.description = Wyświetla obraz z procesora. block.large-logic-display.description = Wyświetla obraz z procesora. -block.interplanetary-accelerator.description = Masywna elektromagnetyczna wierza. Przyspiesza rdzeń do prędkości ucieczki by wylądować na innych planetach. +block.interplanetary-accelerator.description = Masywna elektromagnetyczna wieża. Przyspiesza rdzeń do prędkości ucieczki by wylądować na innych planetach. unit.dagger.description = Strzela standardowymi pociskami w najbliższych wrogów. From 43fea03996badc25225f048b448fc727010f147d Mon Sep 17 00:00:00 2001 From: Quick-Korc <68910156+Quick-korkc@users.noreply.github.com> Date: Wed, 25 Nov 2020 15:24:35 +0700 Subject: [PATCH 048/162] New hint translate and other --- core/assets/bundles/bundle_in_ID.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index abc2909083..e67700b398 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -629,7 +629,7 @@ unit.nobuild = [scarlet]Unit tidak dapat membangun lastaccessed = [lightgray]Terakhir Diakses: {0} block.unknown = [lightgray]??? -stat.description = Purpose +stat.description = Kegunaan stat.input = Masukan stat.output = Pengeluaran stat.booster = Pendorong @@ -1274,7 +1274,7 @@ hint.payloadDrop = Tekan [accent]][] untuk menurunkan muatan. hint.payloadDrop.mobile = [accent]Tekan dan tahan[] di lokasi yang kosong untuk menurunkan muatan. hint.waveFire = [accent]Wave[] yang terisi dengan air akan memadamkan air dalam jangkauannya. hint.generator = \uf879 [accent]Generator Pembakar[] membakar batu bara dan menghasilkan energik ke blok yang berdekatan.\n\nTransmisi energi dapat diperluas menggunakan \uf87f [accent]Tiang Listrik[]. -hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. +lhint.guardian = Unit [accent]Penjaga[] adalah unit yang diperkuat. Amunisi lemah seperti [accent]Tembaga[] dan [accent]Timah[] [scarlet]tidak berefek pada mereka[].\n\nGunakan turret yang lebih bagus atau gunakan amunisi yang lebih kuat seperti \uf835 [accent]Grafit[] \uf861Duo/\uf859Salvo untuk menghancurkan Penjaga. item.copper.description = Bahan struktur yang berguna. Digunakan di semua tipe blok. item.copper.details = Tembaga. Logam yang sangat melimpah di Serpulo. Lemah secara struktural kecuali jika diperkuat. From 40bf0741f0cc7f4d5b6df4b92599948400918e84 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 09:36:12 +0100 Subject: [PATCH 049/162] Remove unused import --- core/src/mindustry/world/blocks/distribution/Conveyor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index a76542f92b..b3218ea7be 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -10,7 +10,6 @@ import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.units.*; -import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; From 8ee3f2b2e630bd5317923a576ea4efbff385d713 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 09:38:04 +0100 Subject: [PATCH 050/162] Remove stray newline --- core/src/mindustry/world/blocks/distribution/StackConveyor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index b35f1630fb..4d6ca5d614 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -178,7 +178,6 @@ public class StackConveyor extends Block implements Autotiler{ } proxUpdating = false; } - } @Override From e0f2c2f46feab0f4ada9b19af95094eec94a13c9 Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Wed, 25 Nov 2020 10:40:02 +0200 Subject: [PATCH 051/162] Sector descriptions: additions and revisions Romanian is gonna hit stable soon. --- core/assets/bundles/bundle_ro.properties | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 913a45a34d..92efbac76a 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -584,15 +584,20 @@ sector.planetaryTerminal.name = Terminalul de Lansare Planetară sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe. sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare. -sector.saltFlats.description = La periferia deșertului stau Podișurile Saline. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă. +sector.saltFlats.description = La periferia deșertului stau Podișurile Saline. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex de depozitare aici. Distruge-le nucleul. Nu lăsa nimic în urmă. sector.craters.description = Apa s-a acumulat în acest crater, rămășiță a vechilor războaie. Cucerește din nou zona. Adună nisip. Toarnă-l în metasticlă. Pompează apă pt a răci armele și burghiele. -sector.ruinousShores.description = După deșerturi vine țărmul. Odată, locația aceasta a avut un sistem de apărare de coastă. N-a rămas mult din el. Doar structurile de apărare cele mai de bază rămas în picioare, restul fiind redus la fier vechi.\nContinuă expansiunea în afară. Redescoperă tehnologia. -sector.stainedMountains.description = Mai înspre continent sunt munții, încă neatinși de spori.\nExtrage abundentele resurse de titan din zonă. Învață cum să-l folosești.\n\nPrezența inamicului e mai mare aici. Nu le da timp să-și trimită cele mai puternice unități. -sector.overgrowth.description = Această zonă este plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un adăpost aici. Construiește unități Mace. Distruge-o. Cucerește din nou ce s-a pierdut. -sector.tarFields.description = O zonă aflată la periferia unei zone de producție petrolieră, între munți și deșert. Una din puținele zone cu resurse utilizabile de țiței.\nDeși abandonată, zona aceasta are niște forțe inamice periculoase înapropiere. Nu le subestima.\n\n[lightgray]Cercetează tehnologia de procesare a petrolului dacă se poate. -sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă cât mai curând. Nu te lăsa păcălit de timpul mare dintre atacurile inamice. -sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constând atacatori. +sector.ruinousShores.description = După deșerturi vine țărmul. Odată, locația aceasta a avut un sistem de apărare de coastă. N-a rămas mult din el. Doar structurile de apărare cele mai simple au rămas în picioare, restul fiind redus la fier vechi.\nContinuă expansiunea înspre exterior. Redescoperă tehnologia. +sector.stainedMountains.description = Mai spre mijlocul continentului sunt munții, încă neatinși de spori.\nExtrage abundentele resurse de titan din zonă. Învață cum să-l folosești.\n\nPrezența inamicului e mai mare aici. Nu le da timp să-și trimită cele mai puternice unități. +sector.overgrowth.description = Această zonă este plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un avanpost aici. Construiește unități Mace. Distruge-l. +sector.tarFields.description = O zonă aflată la periferia unui complex de producție petrolieră, între munți și deșert. Una din puținele zone cu resurse utilizabile de țiței.\nDeși abandonată, în apropierea zonei se află de forțe inamice periculoase. Nu le subestima.\n\n[lightgray]Cercetează tehnologie de procesare a petrolului pe cât posibil. +sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă curând, cât mai curând. Nu te lăsa păcălit de pauzele mari dintre atacurile inamice. +sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constant atacatori. sector.fungalPass.description = O zonă de tranziție dintre munții înalți și zonele joase, pline cu spori. O mică bază de recunoaștere a inamicului este localizată aici.\nDistruge-o.\nFolosește unități Dagger și Crawler. Distruge cele 2 nuclee. +sector.biomassFacility.description = The origin of spores. This is the facility in which they were researched and initially produced.\nResearch the technology contained within. Cultivate spores for the production of fuel and plastics.\n\n[lightgray]Upon this facility's demise, the spores were released. Nothing in the local ecosystem could compete with such an invasive organism. +sector.windsweptIslands.description = Acest arhipelag izolat se află mai departe, după țărm. Datele arată că odată aveau structuri care produceau [accent]Plastaniu[].\n\nApără-te de unitățile navale ale inamicului. Construiește o bază pe insule. Cercetează fabricile necesare. +sector.extractionOutpost.description = Un avanpost izolat, construit de inamic cu scopul de a lansa resurse către alte sectoare.\n\nTehnologia de transport intersectorial este esențială pt cuceririle ce urmează. Distruge baza. Cercetează platformele lor de lansare. +sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât mai mult posibil din epavă. Cercetează orice tehnologie intactă. +sector.planetaryTerminal.description = Ținta finală.\n\nAceastă bază de coastă conține o structură capabilă să lanseze nuclee către alte planete locale. Este extrem de bine păzită.\n\nProdu unități navale. Elimină inamicul cât de rapid se poate. Cercetează structura de lansare. settings.language = Limbă settings.data = Datele Jocului From 69063e9dc57d33b2a70d39bebbe5692bc941488e Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 10:23:07 +0100 Subject: [PATCH 052/162] Update contributors --- core/assets/contributors | 1 + 1 file changed, 1 insertion(+) diff --git a/core/assets/contributors b/core/assets/contributors index 6283f50c03..6c659086b0 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -101,4 +101,5 @@ jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) Headphaze (freesound.org) +VolasYouKnow Angel-24 From 2a618a660008a0038f3de95ff81c8f92a4fe4812 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 10:36:48 +0100 Subject: [PATCH 053/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 515e044a72..5ef1516b76 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -593,6 +593,12 @@ sector.tarFields.description = Las afueras de una zona de producción de petról sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Vete lo antes posible. No se deje engañar por el gran intervalo entre los ataques enemigos. sector.nuclearComplex.description = Antigua instalación de producción y procesamiento de torio, reducida a ruinas.\n[lightgray] Investiga el torio y sus múltiples usos.\n\nEl enemigo está presente aquí en gran número, constantemente en busca de atacantes. sector.fungalPass.description = Un área de transición entre montañas altas y tierras bajas plagadas de esporas. Aquí se encuentra una pequeña base de reconocimiento enemiga.\nDestroy it.\nUsa unidades Dagger y Crawler. Saca los dos núcleos de funcionamiento! +sector.biomassFacility.description = El origen de las esporas. Este es el centro en el que se investigaron, y donde fueron incialmente producidas.\nDescubre la tecnología restante que contiene. Cultiva esporas para producir combustible y plásticos.\n\n[lightgray]Nada en el ecosistema local pudo combatir semejante organismo tan invasivo, originado en este lugar. +sector.windsweptIslands.description = Further past the shoreline is this remote chain of islands. Records show they once had [accent]Plastanium[]-producing structures.\n\nFend off the enemy's naval units. Establish a base on the islands. Research these factories. +####################################### +sector.extractionOutpost.description = Una base remota, construida por el enemigo con el objetivo de lanzar recursos a otros sectores.\n\nLa tecnología de transporte de recursos entre sectores es esencial para conquistar a gran escala. Destruye la base. Investiga sus Plataformas de Lanzamiento. +sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology. +sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure. settings.language = Idioma settings.data = Datos del Juego From 642b877ab0fd38150a5b053fd9c3b0c39b4ad9e3 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:40:42 +0100 Subject: [PATCH 054/162] Update JoinDialog.java --- core/src/mindustry/ui/dialogs/JoinDialog.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index f3d200f08a..db62efef65 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -8,6 +8,7 @@ import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; +import arc.util.Timer.*; import arc.util.serialization.*; import mindustry.*; import mindustry.core.*; @@ -33,6 +34,10 @@ public class JoinDialog extends BaseDialog{ int refreshes; boolean showHidden; + String lastIp; + int lastPort; + Task ping; + public JoinDialog(){ super("@joingame"); @@ -445,13 +450,29 @@ public class JoinDialog extends BaseDialog{ logic.reset(); net.reset(); Vars.netClient.beginConnecting(); - net.connect(ip, port, () -> { + net.connect(lastIp = ip, lastPort = port, () -> { hide(); add.hide(); }); }); } + public void reconnect(){ + ui.loadfrag.show("@reconnecting"); + + this.ping = Timer.schedule(() -> { + net.pingHost(lastIp, lastPort, host -> { + ping.cancel(); + connect(lastIp, lastPort); + }, exception -> {}); + }, 1, 1); + + ui.loadfrag.setButton(() -> { + ui.loadfrag.hide(); + ping.cancel(); + }); + } + void safeConnect(String ip, int port, int version){ if(version != Version.build && Version.build != -1 && version != -1){ ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" + From f5e06cca54d0a253f2fc5175e56359bf8e30df14 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:41:41 +0100 Subject: [PATCH 055/162] Update NetClient.java --- core/src/mindustry/core/NetClient.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 841e7e42a7..85bbfd6f95 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -257,6 +257,11 @@ public class NetClient implements ApplicationListener{ public static void kick(KickReason reason){ netClient.disconnectQuietly(); logic.reset(); + + if(reason == KickReason.serverRestarting){ + ui.join.reconnect(); + return; + } if(!reason.quiet){ if(reason.extraText() != null){ From b002d8b4469f01fceaf55f8ccd7e32cc935f4404 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:42:13 +0100 Subject: [PATCH 056/162] Update bundle.properties --- core/assets/bundles/bundle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 8149f4ff3c..068068ff94 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -230,6 +230,7 @@ disconnect.timeout = Timed out. disconnect.data = Failed to load world data! cantconnect = Unable to join game ([accent]{0}[]). connecting = [accent]Connecting... +reconnecting = [accent]Reconnecting... connecting.data = [accent]Loading world data... server.port = Port: server.addressinuse = Address already in use! From 1467a3a7fd3bfac94aec5239a40d5fa1bcaabf1b Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 14:59:07 +0100 Subject: [PATCH 057/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 127 +++++++++++------------ 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 5ef1516b76..1010be4d40 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -582,23 +582,22 @@ sector.windsweptIslands.name = Islas Windswept sector.extractionOutpost.name = Puesto de avanzada de Extracción sector.planetaryTerminal.name = Terminal de Lanzamiento Interplanetario -sector.groundZero.description = La ubicación óptima para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible.\nSiga adelante. -sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no pueden contenerlos para siempre.\n\nComienza la aventura hacia el poder. Construye generadores de combustión. Aprenda a usar reparadores. -sector.saltFlats.description = En las afueras del desierto se encuentran las Salinas. Se pueden encontrar pocos recursos en esta ubicación.\n\nEl enemigo ha erigido un complejo de almacenamiento de recursos aquí. Erradicar su núcleo. No dejes nada en pie. -sector.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupere el área. Recoge arena. Fundir metavidrio. Bombee agua para enfriar torretas y taladros. -sector.ruinousShores.description = Más allá de los páramos, está la costa. Una vez, esta ubicación albergó una serie de defensa costera. No queda mucho. Solo las estructuras de defensa más básicas han quedado ilesas, todo lo demás reducido a chatarra.\nContinúe la expansión hacia afuera. Redescubra la tecnología. -sector.stainedMountains.description = Más tierra adentro se encuentran las montañas, pero no contaminadas por esporas.\nExtraiga el abundante titanio de esta zona. Aprenda como usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes. -sector.overgrowth.description = Esta área está cubierta de maleza, más cerca de la fuente de las esporas.\nEl enemigo ha establecido un puesto de avanzada aquí. Construye unidades Titán. Destruyelo. Recupera lo que se perdió. -sector.tarFields.description = Las afueras de una zona de producción de petróleo, entre la montaña y el desierto. Una de las pocas áreas con reservas de alquitrán utilizables.\nAunque está abandonada, esta zona tiene algunas fuerzas enemigas peligrosas cerca. No los subestimes.\n\n[lightgray]Investigue la tecnología de procesamiento de aceite si es posible. -sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Vete lo antes posible. No se deje engañar por el gran intervalo entre los ataques enemigos. -sector.nuclearComplex.description = Antigua instalación de producción y procesamiento de torio, reducida a ruinas.\n[lightgray] Investiga el torio y sus múltiples usos.\n\nEl enemigo está presente aquí en gran número, constantemente en busca de atacantes. -sector.fungalPass.description = Un área de transición entre montañas altas y tierras bajas plagadas de esporas. Aquí se encuentra una pequeña base de reconocimiento enemiga.\nDestroy it.\nUsa unidades Dagger y Crawler. Saca los dos núcleos de funcionamiento! +sector.groundZero.description = La ubicación adecuada para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible y sigue adelante. +sector.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no las contendrán para siempre.\n\nAprende a usar la energía. Construye generadores de combustión. Aprende a usar reparadores. +sector.saltFlats.description = En las afueras del desierto se encuentran las Salinas. No hay muchos recursos en esta ubicación.\n\nEl enemigo ha creado un complejo de almacenamiento de recursos aquí. Erradica su núcleo. No dejes nada en pie. +sector.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupera la zona. Recoge arena. Funde Metacristal. Bombea agua para enfriar torretas y taladros. +sector.ruinousShores.description = Más allá de los páramos, se encuentra la costa. Una vez, esta ubicación albergó una serie de defensa costera. No queda mucho. Solo las estructuras de defensa más básicas han quedado ilesas, todo lo demás está reducido a chatarra.\nContinúa la expansión. Redescubre la tecnología. +sector.stainedMountains.description = Más adentro se encuentran las montañas, aún intactas por las esporas.\nExtrae el abundante titanio de esta zona. Aprende a usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes. +sector.overgrowth.description = El área está cubierta de maleza, más cerca de la fuente de las esporas.\nEl enemigo ha establecido un puesto de avanzada aquí. Construye unidades Titán. Destruyelo. Recupera lo que se perdió. +sector.tarFields.description = Las afueras de una zona de producción de petróleo, entre la montaña y el desierto. Una de las pocas áreas con reservas de alquitrán utilizables.\nAunque está abandonada, esta zona tiene algunas fuerzas enemigas peligrosas cerca. No los subestimes.\n\n[lightgray]Investiga la tecnología de procesamiento de petróleo si es posible. +sector.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Abandona el lugar lo antes posible. No te dejes engañar por el intervalo entre los ataques enemigos. +sector.nuclearComplex.description = Antigua instalación de producción y procesamiento de torio, reducida a ruinas.\n[lightgray] Investiga el torio y sus múltiples usos.\n\nEl enemigo está presente aquí,superando en número a sus atacantes. +sector.fungalPass.description = Un área de transición entre montañas y las tierras bajas, plagadas de esporas. Aquí se encuentra una pequeña base de reconocimiento enemiga.\nDestrúyela.\nUsa unidades Dagger y Crawler. Acaba con los dos núcleos. sector.biomassFacility.description = El origen de las esporas. Este es el centro en el que se investigaron, y donde fueron incialmente producidas.\nDescubre la tecnología restante que contiene. Cultiva esporas para producir combustible y plásticos.\n\n[lightgray]Nada en el ecosistema local pudo combatir semejante organismo tan invasivo, originado en este lugar. -sector.windsweptIslands.description = Further past the shoreline is this remote chain of islands. Records show they once had [accent]Plastanium[]-producing structures.\n\nFend off the enemy's naval units. Establish a base on the islands. Research these factories. -####################################### +sector.windsweptIslands.description = Tras la costa, se encuentra esta remota cadena de islas. Las grabaciones muestran que aquí existieron estructuras relacionadas con la producción de [accent]Plastanio[].\n\nDefiéndete de las unidades navales enemigas. Establece una base en las islas. Investiga estas fábricas. sector.extractionOutpost.description = Una base remota, construida por el enemigo con el objetivo de lanzar recursos a otros sectores.\n\nLa tecnología de transporte de recursos entre sectores es esencial para conquistar a gran escala. Destruye la base. Investiga sus Plataformas de Lanzamiento. -sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology. -sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure. +sector.impact0078.description = Aquí yacen las ruinas de la primera estación de transporte interestelar en estar operativa del sistema.\n\nRecupera todo lo posible de los escombros. Investiga cualquier tecnología intacta. +sector.planetaryTerminal.description = El objetivo final.\n\nÉsta base costera alberga una estructura capaz de lanzar Núcleos a planeteas locales. Está extremadamente bien protegida.\n\nProduce unidades navales. Acaba con el enemigo lo antes posible. Analiza la estructura de lanzamiento. settings.language = Idioma settings.data = Datos del Juego @@ -692,7 +691,7 @@ stat.minetier = Nivel de taladro stat.payloadcapacity = Capacidad de carga stat.commandlimit = Límite de comando stat.abilities = Habilidades -stat.canboost = Puede Acelerar +stat.canboost = Tiene Propulsores stat.flying = Aéreo skill.forcefield = Zona de Escudo @@ -979,21 +978,21 @@ liquid.water.name = Agua liquid.slag.name = Fundido liquid.oil.name = Petróleo liquid.cryofluid.name = Líquido criogénico - -unit.dagger.name = Daga -unit.mace.name = Mazo -unit.fortress.name = Fortaleza +#Names of Units and Turrets look better untranslated, since they are propper/own names +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress unit.nova.name = Nova unit.pulsar.name = Pulsar unit.quasar.name = Quasar -unit.crawler.name = Oruga +unit.crawler.name = Crawler unit.atrax.name = Atrax unit.spiroct.name = Spiroct unit.arkyid.name = Arkyid -unit.toxopid.name = Toxopodo -unit.flare.name = Bengala -unit.horizon.name = Horizonte -unit.zenith.name = Cenit +unit.toxopid.name = Toxopid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith unit.antumbra.name = Antumbra unit.eclipse.name = Eclipse unit.mono.name = Mono @@ -1009,14 +1008,14 @@ unit.omura.name = Omura unit.alpha.name = Alpha unit.beta.name = Beta unit.gamma.name = Gamma -unit.scepter.name = Cetro +unit.scepter.name = Scepter unit.reign.name = Reign unit.vela.name = Vela -unit.corvus.name = Corvo +unit.corvus.name = Corvus block.resupply-point.name = Punto de reabastecimiento block.parallax.name = Parallax -block.cliff.name = Acantilado +block.cliff.name = Cliff block.sand-boulder.name = Roca de arena block.basalt-boulder.name = Roca de basalto block.grass.name = Hierba @@ -1108,10 +1107,10 @@ block.thorium-wall-large.name = Muro de Torio grande block.door.name = Puerta block.door-large.name = Puerta Grande block.duo.name = Duo -block.scorch.name = Quemador -block.scatter.name = Dispersor -block.hail.name = Granizo -block.lancer.name = Lancero +block.scorch.name = Scorch +block.scatter.name = Scatter +block.hail.name = Hail +block.lancer.name = Lancer block.conveyor.name = Cinta Transportadora block.titanium-conveyor.name = Cinta Transportadora de Titanio block.plastanium-conveyor.name = Cinta Transportadora de Plastanio @@ -1161,9 +1160,9 @@ block.unloader.name = Descargador block.vault.name = Almacén block.wave.name = Wave block.tsunami.name = Tsunami -block.swarmer.name = Enjambre -block.salvo.name = Salva -block.ripple.name = Onda +block.swarmer.name = Swarmer +block.salvo.name = Salvo +block.ripple.name = Ripple block.phase-conveyor.name = Cinta Transportadora de Fase block.bridge-conveyor.name = Puente de Cinta Transportadora block.plastanium-compressor.name = Compresor de Plastanio @@ -1174,7 +1173,7 @@ block.solar-panel-large.name = Panel Solar Grande block.oil-extractor.name = Extractor de Petróleo block.repair-point.name = Punto de Reparación de Unidades block.pulse-conduit.name = Conducto de Pulso -block.plated-conduit.name = Conducto Chapado +block.plated-conduit.name = Conducto Acorazado block.phase-conduit.name = Conducto de Fase block.liquid-router.name = Enrutador de Líquidos block.liquid-tank.name = Tanque de Líquidos @@ -1191,20 +1190,20 @@ block.mender.name = Reparador block.mend-projector.name = Proyector de Reparación block.surge-wall.name = Muro de Sobretensión block.surge-wall-large.name = Muro de Sobretensión grande -block.cyclone.name = Ciclón -block.fuse.name = Fusible +block.cyclone.name = Cyclone +block.fuse.name = Fuse block.shock-mine.name = Mina electrizante block.overdrive-projector.name = Proyector de Aceleración block.force-projector.name = Proyector de Escudo -block.arc.name = Arco +block.arc.name = Arc block.rtg-generator.name = Generador RTG -block.spectre.name = Espectro -block.meltdown.name = Fusión +block.spectre.name = Spectre +block.meltdown.name = Meltdown block.foreshadow.name = Foreshadow block.container.name = Contenedor block.launch-pad.name = Pad de Lanzamiento block.launch-pad-large.name = Pad de Lanzamiento Grande -block.segment.name = Segmento +block.segment.name = Segment block.command-center.name = Centro de comando block.ground-factory.name = Fábrica terrestre block.air-factory.name = Fábrica aérea @@ -1254,30 +1253,28 @@ hint.placeDrill = Selecciona la pestaña de \ue85e [accent]Taladros[] en el men hint.placeDrill.mobile = Selecciona la pestaña de \ue85e [accent]Taladros[] en el menú abajo a la derecha, luego escoge un \uf870 [accent]Taladro[] y toca sobre una veta de cobre para colocarlo.\n\nPulsa el botón con la \ue800 [accent]"V"[] abajo a la derecha para confirmar. hint.placeConveyor = Las cintas transportadoras pueden sacar objetos de los taladros, y moverlos hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nHaz clic y arrastra para crear una cadena con múltiples transportadores.\nUsa la [accent]Rueda del ratón[] para rotarlo. hint.placeConveyor.mobile = Las cintas transportadoras pueden mover objetos de los taladros hasta otros bloques. Selecciona un \uf896 [accent]Transportador[] de la pestaña \ue814 [accent]Distribución[].\n\nMantén el dedo un segundo y arrastra para crear múltiples cintas transportadoras. -hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. +hint.placeTurret = Construye \uf861 [accent]Torretas[] para defender tu base de los enemigos.\n\nLas torretas necesitan munición - en este caso, \uf838cobre.\nUsa cintas transportadoras y taladros para abastecerlas con cobre. hint.breaking = Pulsa [accent]Clic-derecho[] y arrastra para destruir bloques. - -############## -hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. -hint.research = Use the \ue875 [accent]Research[] button to research new technology. -hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. -hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. -hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. -hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. -hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. -hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. -hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. -hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. -hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. -hint.command = Press [accent][[G][] to command nearby units into formation. -hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. -hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. -hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. -hint.payloadDrop = Press [accent]][] to drop a payload. -hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. -hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. -hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. -####### +hint.breaking.mobile = Activa el botón con el \ue817 [accent]martillo[] situado abajo a la derecha y selecciona bloque para eliminarlos.\n\nMantén el dedo un segundo y arrastra para eliminar bloques directamente en esa selección. +hint.research = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos. +hint.research.mobile = Usa el botón \ue875 [accent]Investigación[] para acceder al menú de descubrimientos tecnológicos. +hint.unitControl = Mantén [accent][[L-ctrl][] y [accent]haz clic[] sobre unidades o torretas aliadas para controlarlas manualmente. +hint.unitControl.mobile = [accent][Toca dos veces rápidamente[] una unidad o torreta aliada para controlarla manualmente. +hint.launch = Cuando tengas sufientes recursos, puedes [accent]Lanzar el Núcleo[] escogiendo como objetivo sectores cercanos en el \ue827 [accent]Mapa[] abajo a la derecha. +hint.launch.mobile = Cuando tengas sufientes recursos, puedes [accent]Lanzar el Núcleo[] escogiendo como objetivo sectores cercanos en el \ue827 [accent]Mapa[], disponible desde el \ue88c [accent]Menú de pausa[]. +hint.schematicSelect = Mantén [accent][[F][] y arrastra para crear una selección de bloques que puedes copiar y pegar.\n\nUsa [accent][[Clic central][] para seleccionar un tipo de bloque. +hint.conveyorPathfind = Mantener [accent][[L-Ctrl][] mientras arrastras cintas transportadoras generará automáticamente una ruta. +hint.conveyorPathfind.mobile = Activa el\ue844 [accent]modo diagonal[] y arrastra cintas transportadoras para generar una ruta inteligente. +hint.boost = Mantén [accent][[L-Shift][] para sobrevolar obstáculos con tu unidad actual.\n\nSólo algunas unidades terrestres disponen de estos propulsores. +hint.command = Pulsa [accent][[G][] para comandar unidades aliadas cercanas. +hint.command.mobile = [accent][[Toca dos veces][] tu unidad para comandar unidades aliadas cercanas. +hint.payloadPickup = Pulsa [accent][[[] para recoger bloques pequeños o unidades. +hint.payloadPickup.mobile = [accent]Mantén[] sobre un bloque pequeño o unidad para recogerlo. +hint.payloadDrop = Pulsa [accent]][] para soltar la carga. +hint.payloadDrop.mobile = [accent]Mantén[] sobre un lugar vacío para soltar la carga. +hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apagarán fuego e incendios cercanos automáticamente. +hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[]. +hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes. item.copper.description = Un útil material de estructura. Usado extensivamente en todo tipo de bloques. item.lead.description = Un material básico. Usado en electrónicos y bloques de transferencia de líquidos. From eaa7b04c3dc3d4b5ce6f9b21c6a11cdbd84ecda5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 10:15:14 -0500 Subject: [PATCH 058/162] Fixed CI / Fixed exponentially increasing broken blocks --- .github/workflows/deployment.yml | 2 ++ .github/workflows/push.yml | 1 + core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/io/SaveVersion.java | 16 ++++++++++++++-- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + .../metadata/android/en-US/changelogs/29723.txt | 10 ++++++++++ 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29723.txt diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 1532c48561..e9de8ca029 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -21,6 +21,8 @@ jobs: - name: Update docs run: | cd ../ + git config --global user.email "cli@github.com" + git config --global user.name "Github Actions" git clone --depth=1 https://github.com/MindustryGame/docs.git cp -a Mindustry/core/build/docs/javadoc/. docs/ cd docs diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 9436adb06c..7ee54919ac 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -15,6 +15,7 @@ jobs: - name: Run unit tests run: ./gradlew test - name: Trigger BE build + if: ${{ github.repository == ‘Anuken/Mindustry’ }} run: | git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds cd ../MindustryBuilds diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index eabaae3104..8fa2510a57 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1216,7 +1216,7 @@ public class Blocks implements ContentList{ requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50)); size = 2; powerProduction = 4.5f; - itemDuration = 60 * 15f; + itemDuration = 60 * 14f; }}; solarPanel = new SolarGenerator("solar-panel"){{ diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 85fe4a3e31..58d9d77d53 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -286,7 +286,8 @@ public abstract class SaveVersion extends SaveFileReader{ public void writeEntities(DataOutput stream) throws IOException{ //write team data with entities. - Seq data = state.teams.getActive().and(Team.sharded.data()); + Seq data = state.teams.getActive().copy(); + if(!data.contains(Team.sharded.data())) data.add(Team.sharded.data()); stream.writeInt(data.size); for(TeamData team : data){ stream.writeInt(team.team.id); @@ -313,12 +314,23 @@ public abstract class SaveVersion extends SaveFileReader{ public void readEntities(DataInput stream) throws IOException{ int teamc = stream.readInt(); + for(int i = 0; i < teamc; i++){ Team team = Team.get(stream.readInt()); TeamData data = team.data(); int blocks = stream.readInt(); + data.blocks.clear(); + data.blocks.ensureCapacity(Math.min(blocks, 1000)); + var reads = Reads.get(stream); + var set = new IntSet(); + for(int j = 0; j < blocks; j++){ - data.blocks.addLast(new BlockPlan(stream.readShort(), stream.readShort(), stream.readShort(), content.block(stream.readShort()).id, TypeIO.readObject(Reads.get(stream)))); + short x = stream.readShort(), y = stream.readShort(), rot = stream.readShort(), bid = stream.readShort(); + var obj = TypeIO.readObject(reads); + //cannot have two in the same position + if(set.add(Point2.pack(x, y))){ + data.blocks.addLast(new BlockPlan(x, y, rot, content.block(bid).id, obj)); + } } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 4700bc0906..b3dc7aa135 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -140,6 +140,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ return this; } + rebuildButtons(); mode = look; selected = hovered = launchSector = null; launching = false; diff --git a/fastlane/metadata/android/en-US/changelogs/29723.txt b/fastlane/metadata/android/en-US/changelogs/29723.txt new file mode 100644 index 0000000000..c07b6541ec --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29723.txt @@ -0,0 +1,10 @@ +Only a few days left until stable 6.0 release now. The campaign should now be playable; I've done a playthrough and fixed all the bugs and irregularities I encountered. + +Aside from internal modding API changes and potential bugfixes, 6.0 should not have any more additions. + +- Added basalt boulder decoration block +- Added hint about generator use & power transfer +- Made power node placement smarter +- Buffed Lancer turret + +Campaign: From fb200c6d11db72244119e1ab015f97cd756abe60 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 10:16:40 -0500 Subject: [PATCH 059/162] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 33d59bb632..151ff7ea34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=a61861127c9fea900f10b84a35be2369437be8f1 +archash=6742c2b110eeecd1934c42b5b1c87b00c911ecc4 From ff20928becee5d2c76954a4527659f023b2e4bed Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 16:49:36 +0100 Subject: [PATCH 060/162] Anukify reconnect logic --- core/src/mindustry/ui/dialogs/JoinDialog.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index db62efef65..62cc2e9391 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -458,18 +458,21 @@ public class JoinDialog extends BaseDialog{ } public void reconnect(){ + if(lastIp.isEmpty()) return; ui.loadfrag.show("@reconnecting"); - this.ping = Timer.schedule(() -> { + ping = Timer.schedule(() -> { net.pingHost(lastIp, lastPort, host -> { + if(ping == null) return; ping.cancel(); + ping = null; connect(lastIp, lastPort); }, exception -> {}); }, 1, 1); ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - ping.cancel(); + if(ping != null) ping.cancel(); }); } From 3d6390a76a975eae281876045d616ce32c4b3af9 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 16:51:57 +0100 Subject: [PATCH 061/162] Set the ping to null when canceling manually as well --- core/src/mindustry/ui/dialogs/JoinDialog.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 62cc2e9391..155945fc0f 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -469,10 +469,12 @@ public class JoinDialog extends BaseDialog{ connect(lastIp, lastPort); }, exception -> {}); }, 1, 1); - + ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - if(ping != null) ping.cancel(); + if(ping == null) return; + ping.cancel(); + ping = null; }); } From f26b3358ef95731b4d89bcbbcbb0590365b2b7fe Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 17:08:03 +0100 Subject: [PATCH 062/162] Update core/src/mindustry/ui/dialogs/JoinDialog.java Co-authored-by: Anuken --- core/src/mindustry/ui/dialogs/JoinDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 155945fc0f..fe5ea1bdaf 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -458,7 +458,7 @@ public class JoinDialog extends BaseDialog{ } public void reconnect(){ - if(lastIp.isEmpty()) return; + if(lastIp == null || lastIp.isEmpty()) return; ui.loadfrag.show("@reconnecting"); ping = Timer.schedule(() -> { From b271c4be3208fa3c5d99d8935c2cb06efa89f95e Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:09:29 -0500 Subject: [PATCH 063/162] Fixed deploy CI, again --- .github/workflows/deployment.yml | 4 ++-- fastlane/metadata/android/en-US/changelogs/29726.txt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29726.txt diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index e9de8ca029..bc993bae07 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -50,12 +50,12 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: desktop/libs/Mindustry.jar + file: desktop/build/libs/Mindustry.jar tag: ${{ github.ref }} - name: Upload server artifacts uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: server/libs/server-release.jar + file: server/build/libs/server-release.jar tag: ${{ github.ref }} diff --git a/fastlane/metadata/android/en-US/changelogs/29726.txt b/fastlane/metadata/android/en-US/changelogs/29726.txt new file mode 100644 index 0000000000..52dda104eb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29726.txt @@ -0,0 +1,2 @@ +- Fixed broken blocks increasing exponentially, leading to runaway memory usage/lag +- Fixed incorrect planet dialog layout on certain devices From bc55e43defa795a44ebc822c54882ab253e8a5f5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:15:46 -0500 Subject: [PATCH 064/162] Fixed #3591 --- core/src/mindustry/entities/comp/WeaponsComp.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index b919f6fee1..21265731fc 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -91,6 +91,10 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{ mount.bullet.time = mount.bullet.lifetime - 10f; mount.bullet = null; } + + if(mount.sound != null){ + mount.sound.stop(); + } } } From 40b67349d9a522cc8f3bb8e5293efe0755f28b98 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:56:10 -0500 Subject: [PATCH 065/162] Fixed quotes --- .github/workflows/push.yml | 2 +- core/src/mindustry/game/EventType.java | 1 + core/src/mindustry/world/blocks/campaign/Accelerator.java | 3 +++ desktop/src/mindustry/desktop/steam/SAchievement.java | 1 + desktop/src/mindustry/desktop/steam/SStats.java | 2 ++ 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 7ee54919ac..cf01e4bc68 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -15,7 +15,7 @@ jobs: - name: Run unit tests run: ./gradlew test - name: Trigger BE build - if: ${{ github.repository == ‘Anuken/Mindustry’ }} + if: ${{ github.repository == 'Anuken/Mindustry' }} run: | git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds cd ../MindustryBuilds diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 43ae282d4c..f0aa3278b2 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -18,6 +18,7 @@ public class EventType{ impactPower, thoriumReactorOverheat, fireExtinguish, + acceleratorUse, newGame, tutorialComplete, flameAmmo, diff --git a/core/src/mindustry/world/blocks/campaign/Accelerator.java b/core/src/mindustry/world/blocks/campaign/Accelerator.java index 9dd9040f8f..7c8359a6bf 100644 --- a/core/src/mindustry/world/blocks/campaign/Accelerator.java +++ b/core/src/mindustry/world/blocks/campaign/Accelerator.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.campaign; +import arc.*; import arc.Graphics.*; import arc.Graphics.Cursor.*; import arc.graphics.g2d.*; @@ -8,6 +9,7 @@ import arc.scene.ui.layout.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; @@ -91,6 +93,7 @@ public class Accelerator extends Block{ if(!state.isCampaign() || !consValid()) return; ui.showInfo("@indev.campaign"); + Events.fire(Trigger.acceleratorUse); } @Override diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 38236eabd8..092f486249 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,6 +61,7 @@ public enum SAchievement{ coolTurret, enablePixelation, openWiki, + useAccelerator, ; private final SStat stat; diff --git a/desktop/src/mindustry/desktop/steam/SStats.java b/desktop/src/mindustry/desktop/steam/SStats.java index e9e8258487..822efe33cc 100644 --- a/desktop/src/mindustry/desktop/steam/SStats.java +++ b/desktop/src/mindustry/desktop/steam/SStats.java @@ -215,6 +215,8 @@ public class SStats implements SteamUserStatsCallback{ } }); + trigger(Trigger.acceleratorUse, useAccelerator); + trigger(Trigger.impactPower, powerupImpactReactor); trigger(Trigger.flameAmmo, useFlameAmmo); From fd80cbcae5b1c2946a8036fe333c8ed5cd39ce4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ga=C5=A1par=C3=ADk?= Date: Wed, 25 Nov 2020 18:42:20 +0100 Subject: [PATCH 066/162] Update up to b002d8b --- core/assets/bundles/bundle_cs.properties | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index c3ff3a3946..c4edd7f14e 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -20,7 +20,6 @@ gameover = Konec hry gameover.pvp = Vyhrál tým [accent]{0}[]! highscore = [accent]Nový rekord! copied = Zkopírováno. -indev.popup = Mindustry [accent]v6[] je aktuálně ve verzi [accent]beta[].\n[lightgray]To znamená:[]\n[scarlet]- Kampaň je nedokončená[]\n- Cokoli, co vidíte, se může změnit nebo být odstraněno.\n\nHlaste prosím chyby na [accent]Github[]. indev.notready = Tato část hry ještě není připravena indev.campaign = [accent]Završil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích. @@ -145,6 +144,7 @@ planetmap = Planetární mapa launchcore = Vyslat jádro filename = Název souboru: unlocked = Byl odemmknut nový blok! +available = Je zpřístupněn nový výzkum! completed = [accent]Dokončeno[] techtree = Technologie research.list = [lightgray]Výzkum:[] @@ -228,6 +228,7 @@ disconnect.timeout = Vypršel čas pro připojení. disconnect.data = Chyba načtení dat ze serveru! cantconnect = Není možno se připojit ke hře ([accent]{0}[]). connecting = [accent]Připojuji se...[] +reconnecting = [accent]Znovu se připojuji... connecting.data = [accent]Načítám data ze serveru...[] server.port = Port: server.addressinuse = Adresu již někdo používá! @@ -591,6 +592,11 @@ sector.tarFields.description = Rozhraní produkční naftové oblasti mezi horam sector.desolateRift.description = Extrémně nebezpečná mapa. Na úkor prostoru se zde nachází přehršel surovin. Vysoká pravděpodobnost zničení. Opusť tuto oblast co nejdříve to půjde. Nenech se zmást dlouhými prodlevami mezi vlnami nepřátel. sector.nuclearComplex.description = Bývalá továrna na zpracování thoria, dnes v troskách.\n[lightgray]Objev thorium a jeho široké využití.[]\n\nNepřátelské jednotky se zde nacházejí v hojném počtu, a neustále prohledávají oblast. sector.fungalPass.description = Přechodová oblast mezi vysokými horami a spórami nasycenou zemí. Nachází se zde malá průzkumná základna Tvého nepřítele.\nZnič ji.\nPoužij mechy Dýka a Slídil. Znič obě nepřátelské jádra. +sector.biomassFacility.description = Prapůvod všech spór. Toto je zařízení, be kterém byly spóry vynalezeny a zpočátku u vyráběny.\nVynalezni technologii, která se skrýbá uvnitř. Kultivuj spóry k výrobě paliva a plastů.\n\n[lightgray]Po vypnutí tohoto zařízení byly spóry vypuštěny. V okolním ekosystému však tomuto invazivnímu druhu nebylo nic schopné konkurovat. +sector.windsweptIslands.description = Vzdálen od pevniny je tento řetízek ostrovů. Záznamy ukazují, že zde kdysi byly zařízení na výrobu [accent]Plastany[].\n\nPoraž nepřátelské námořní jednotky. Vybuduj základnu na ostrově. Vynalezni továrny. +sector.extractionOutpost.description = Vzdálená pevnost, postavená nepřítelem za účelem vysílání zdrojů do okolních sektorů.\n\nDoprava položek napříč sektory je nezbytná pro lapení dalších sektorů. Znič základnu. Vyzkoumej jejich Vysílací plošiny. +sector.impact0078.description = Zde leží zbytky mezihvězdné lodi, která vstoupila d otohoto systému.\n\nZachraň z vraku vše, co se dá. Vyzkoumej nepoškozenou technologii. +sector.planetaryTerminal.description = Konečný cíl.\n\nTato pobřežní základna obsahuje konstrukce schopné vyslat jádra na okolní planety. Je mimořádně dobře opevněna.\n\nVyrob námořní jednotky. Odstraň nepřítele tak rychle, jak umíš. Vyzkoumej vysílací konstrukci. settings.language = Jazyk settings.data = Data hry @@ -1260,7 +1266,7 @@ hint.schematicSelect = Podrž [accent][[F][] a potáhni pro výběr bloků, kter hint.conveyorPathfind = Podrž [accent][[levý Ctrl][], když táhneš dopravníky, pro automatické vygenerování cesty. hint.conveyorPathfind.mobile = Povol \ue844 [accent]úhlopříčný režim[] a potáhni dopravníky pro automatické generování cesty. hint.boost = Podrž [accent][[levý Shift][], abys přeletěl přes překážky se svou současnou jednotkou.\n\nPouze některé jednotky však mají takový posilovač. -hint.command = Zmáčkni [accent][[G][] pro vytvoření formace z blízkých jednotek. +hint.command = Zmáčkni [accent][[G][] pro vytvoření formace z blízkých jednotek [accent]podobného typu[].\n\nAbys mohl velet pozemní jednotce, musíš nejprve ovládat jinou pozemní jednotku. hint.command.mobile = [accent][[Dvojťupni][] na Tvoji jednotku pro vytvoření formace z blízkých jednotek. hint.payloadPickup = Zmáčkni [accent][[[] pro sebrání malých bloků nebo jednotek. hint.payloadPickup.mobile = [accent]Ťupni a podrž[] na malém bloku nebo jednotce pro sebrání. @@ -1268,6 +1274,7 @@ hint.payloadDrop = Zmáčkni [accent]][] pro položení nákladu. hint.payloadDrop.mobile = [accent]Ťupni a drž[] na prázdném místě pro položení nákladu. hint.waveFire = [accent]Naplň[] věže vodou místo munice pro automatické hašení okolních požárů. hint.generator = \uf879 [accent]Spalovací generátory[] pálí uhlí a přenášení energii do sousedících bloků.\n\nPřenos energie na delší vzdálenost se provádí pomocí \uf87f [accent]Energetických uzlů[]. +hint.guardian = Jednotky [accent]Strážce[] jsou obrněné. Měkká munice, jako je například [accent]měď[] a [accent]olovo[] je [scarlet]neefektivní[].\n\nPoužij vylepšené věže nebo \uf835 [accent]grafitovou[] munici pro \uf861Střílnu Duo/\uf859Salvu, abys Strážce sejmul. item.copper.description = Používá se ve všech typech bloků a munice. item.copper.details = Měď. Nezvykle nadpočetný kov na Serpulu. Konstrukčně slabý, pokud není rafinovaná. From 51790e0bf90b31ab61e679d8a61b6c87bea31f9b Mon Sep 17 00:00:00 2001 From: Wiki Updater <57631841+Catchears@users.noreply.github.com> Date: Wed, 25 Nov 2020 19:52:36 +0100 Subject: [PATCH 067/162] fix ai schematics with power weapons and steam gens --- core/assets/baseparts/1591385293703.msch | Bin 122 -> 140 bytes core/assets/baseparts/1591385372367.msch | Bin 239 -> 252 bytes core/assets/baseparts/1599594352859.msch | Bin 389 -> 404 bytes core/assets/baseparts/1603215272794.msch | Bin 258 -> 277 bytes core/assets/baseparts/1603215415778.msch | 5 +++-- core/assets/baseparts/1603219511695.msch | Bin 104 -> 117 bytes core/assets/baseparts/1603222833941.msch | Bin 251 -> 263 bytes core/assets/baseparts/1605279968000.msch | Bin 237 -> 252 bytes core/assets/baseparts/1605281215706.msch | Bin 341 -> 340 bytes core/assets/baseparts/1605284013998.msch | Bin 313 -> 349 bytes core/assets/baseparts/752921320802746461.msch | Bin 401 -> 455 bytes core/assets/baseparts/753646105383927950.msch | Bin 177 -> 230 bytes core/assets/baseparts/753938078997151744.msch | Bin 180 -> 201 bytes core/assets/baseparts/773974064850272309.msch | Bin 279 -> 312 bytes core/assets/baseparts/774013552553754635.msch | Bin 534 -> 546 bytes 15 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/assets/baseparts/1591385293703.msch b/core/assets/baseparts/1591385293703.msch index d48006b7be1a024ec549e8beeb3b92213d65fcd5..a4e028a60bf63a5c689a5320203151a22e67f552 100644 GIT binary patch literal 140 zcmc~TPR?Mgn4{Wzk?XJmk8A!_LrKwB?LPuBy6L%8l*w6O8sM zzw7KX4K%tC5?}G=sc`m*)YLCaKKFd(uAkDIbwl&GZozaVhU4O5Sxs$QSH;@gV_2J@ x@@zuC7^_lY{?&k6M<=EFo;2ov)v`@qdRKi^%emyn*W6aGw|e|xPgo_h7XUYbLdF09 literal 122 zcmc~TPR?Mgn4{X`$aUC&hebWi`>vBhU59+C&|~i`_U9LlPoLz)>5)_(rqgIpu=?fP z$|+m)RYe_x=2zyvom{;p_hif7wJVS7Uftsss>F_u&(B=*oBzTi$y5Mkg*Scx diff --git a/core/assets/baseparts/1591385372367.msch b/core/assets/baseparts/1591385372367.msch index a45bad9e2dd44d8d149751aba79ee91caedc2055..c49595751cbc927b72fc9f3664eb672b85add973 100644 GIT binary patch literal 252 zcmc~TPR?Mgn4{a5o!4w2&~n@+$77aS`-^z_Q?0oUOwy9eJK3+I0VAqXHfgrC37IHqZeDWBx5sIUXuoWz+uVi5K5mmQF1piv^JInkCjXey!}i;*%Z23E z|1q19tG#5Y(9SlEtgr97?{LbjQrYmd|0w%SljhT$JLV+5ncHs@a#&*lkKL0Mg{MwU M*7(mTbJ2Vk0R69c2><{9 literal 239 zcmc~TPR?Mgn4{bG(67Znpk=v(_s-8YwQTj@7iz6x=iIVH#DD(X8O76oE&iRVzWMS& zV?Qq658MZPZXY-36WiARaPq$7L#4c1^zHojN?$TLzoPcl$4$qqRmC4U zoLnZs=9O?XNZh+v#!#!!%!bc|b=LurEv(xXIM=d#R()(Acw6e(M{b)sm8Fw7POHUw x9(=rd+X1nXrml;g=RD2MJ}_g-OO|jyY0Q7sNK2zxUC>nTXrx|yJ)e2K+EiQ2b-KZcZ)x$yPxpgvY^OA(B));db)q;9$O#L51C8e zUGsRrugCf6Xl>ODMVJ4-nw0!rTUGDLx%_Ne=KnYC8}9rq@31)f_E!AgM~iPql<{x> zdE@tb-Cd4qey{EB?|E^&_SOuMGOh&sZ>cwyZFrEsFW~ z{IdscR(jbL29=zP-=~YOm)lx${r{Jnv7)zdN@tKW`uVjjOKa=ihNZ&9z`+ z+{4J}mBMKhvBYMTLaQSeN0Fe!%rhNc7dtiuFrV#;Ie2o;iU}N9u8T87)sIFlT6;s) z{`x5o{b>)`CG>7btkrT|n=#>Jp8K+?27*&Axv2VvxFk1BIz3g#d6z@j<@kute=7gk z)lc|ndOrRp|FmmSYj~$_-4g6wZiZ_^68gPiu87D QSnQG@qB`ln#jU7p00q0qCjbBd literal 389 zcmc~TPR?Mgn4>x&F|XNxr!~I8p&@A3TbVyMdCR77Eb8kN5@C9KE-rI!Z|j52YoDhl z?|Hmv!r5=n7F5gMdCpoXF+H`YqC0uZ=N)%<-8;Yg_g6;Wj_dDUrHSV(*|PWc3#aFD zhBxMMpWWoUI{EL0-idSmxG~L`pZo6di}acwcUu*EcE6tXp#ILq)NPfY$`l@^ek?bd z^Y_87lWnV=k9wEB-pBQCC z@^8XK2W3VHNp2JIU?d=69u<_F_vQ7^U)8n~FRhNRx8Z0LTfbwg zQtDAR(c49L8WwfMcm#D<_X_WPy=2*n#E+diL2hannqnOGAMloXD;Js<-b6Rc#gPbN5e$M(y-E9iCaZuvf&Hn`=e=(!1fd0J*oo AZU6uP diff --git a/core/assets/baseparts/1603215272794.msch b/core/assets/baseparts/1603215272794.msch index b2351a38574f4c924aef5dddeceb5d3940902246..1e953643c8d496975d0b997f215197e6522b7b31 100644 GIT binary patch literal 277 zcmc~TPR?MgnBzO~ZeELmKr4Gd%JsC}zXkR_S-9d7Z)cNZ&TjvGA zR?-h#JUnuoOY4&|obUcyyhB>@%>%y5ng<1uh9#{JOLecC%;WYvDJu5jm4A5su3wk0 m&R=KMd-0XQA*RDG8ulGEIeL_vv)P_`yShu;6aD$;oQ(ksDTzk_ literal 258 zcmc~TPR?MgnBzOaJMV~sfD3nz;l{-$&q!{17H~pMS%pVz+h@zlvY92$Vvz@4$6r+a z(6hS5EAQ)!d*|-vuRHR>&QP~*zW0s33Bn&*GVM>_y{%mT!^yL6-Ho%V@`cui9tK&2 zTR;EuZhz6i)6@R!+@*Y`OjFS<#{AmNDdPE_mEU*#t$wuLr1kLnvh(RPZAE4`Dq64m z#TfT8!Q=%Ci>oNp+$Y=#E2e$r-IbWJ!phT1@zt6MESE}IgbXr*1l^pU9yf10&cAns zmE3CXklEof1|`i8S#7^pX~in2mPag@t$bJJ]6!N0,)܇&ٲbKq~$+Vh }U +wZ';$ ]U]P,(kŶ,e \ No newline at end of file diff --git a/core/assets/baseparts/1603219511695.msch b/core/assets/baseparts/1603219511695.msch index ad1b2081190d43f46eec12e1de164b38c6b6d725..743c38b4012e7500b5fde78e792b1e4e9eb45b64 100644 GIT binary patch literal 117 zcmc~TPR?Mgn4{|(&DCrmAhTGp%l?~!<&`jT!6YHG#!I`!A5SZLmM&+&+f*BC#_?-H=@Qz`nSU-<2#eHQY#+^PExZAe)8cxL$|z@tij^U Y`DH7&U9e8QzPcnJeg8YQ9bxin0Pn;yRR910 literal 104 zcmc~TPR?Mgn4{Yj$kl8h!m`|O(W8D_55BJ*{DMhBLI+Pzzcr<-zU)RMn_6>kk;YK|DCeDDyJayqnaiAd@BJhLCX8oZUpb7z{n zcAGiBdwX`_){XHwTR!LPPnNoWktgr%<1I@xD;6A^y8Z5pJ>6!l9Y$@sJ3FqMsJ>qQ z_S)Bj^}DRSXKC%xd3gHhx%Pvln|l{Ke_h}Hb3^Cma+Bl=msrgMD{8tf*{*YKO7ex}oFL8s3zjhjxjk_W~BnDQj&0C|%t&bLK;l@1Z8rE1Di;_q-8I Y?seOw{%T5tuDFeI`o$ITv3kxr072@6;s5{u literal 251 zcmc~TPR?Mgm}5F2JFitiptb+O>RZwI;ulnZEcRBiGE|8%=%`(@H}j2SFvrhlh0lDL z*m$^>n)4q_c(i3!#vJ2#L*4f;(r+%yxSrC?KCd9TH0Fr6iKfdH!#AEvag%+I-TrIn zcd-71dGxHX9qS(kKYDRkXR&di;Fka2UTi;bX@`_P-(F+s*5WOFoxYzWwr@D@$*||4 z&8h~glhF>VjV%`HPZ3|m{k8R()9i(uQ%hTx@m)xrwp};-)ep%4%7*rLZAR*70zjx61i9DRKoC zk|vsGSa$1~h%5`=G4WdC@})kOjC^IBGD$q~7KJ;1X{$a8FnYY_nZyl!#lSB`v7FD1 zrcPLv`_0);zGQO9fBT-tlk7WdPbn{~=Uyss|3cxtCk@?+qQy@%-S(WB;w{@r?OiJaZ?viEj9{Ik#OQriyI4Zj{UT4~S@nU;z L$S-E*)1FcQ2d#D_ literal 237 zcmc~TPR?Mgn4{ZsHm}8ir-hwK(R<6(Zx@cASlBPp*c#NzGV{Xx@b$NX(zo07*nX>N zJG#|%`X4WY-)_N)RgH5q=Ue2cK4IxGn4K=a`2T^aryq%V9od(1Ecg7y&9`e7y-11T z*e=xN|1je2l*`h!URgitdkRm#Kce?^<^oIkRtd9Tv1P{X5+An&&ANN+XDEYWuEv&K zw(>TD4e57Q=ek&}5aaEM$P`;UX`%b=lS>^JFIe?@Y3Abd@mrqvXYiIjH~(_Co-^dL wSN9i(QmIvwgd|*i{w`Tyo^C65d;>mzwjR_5Ehc;(CH@ss5=)7PDq=>NOL; z`sGrb=&Jo3eC97J!seelbxpGS@RKPrvsPa^+W`AklHMu(XY{5Kr z`(yiic1;(~j>|b7`Rd%tg)`6OM3+f#oyGogS6Qa(_O}F+uRN!oc6Kdqd6ZJQF0)i)Q*+0)Rfi@APSoKJirTWa zWa;AttD3W(hra&4b!${u)%#GTGpaSy+I1=_8@8_g5F31M8jFU45!Z{SEjkWzO;5P; zA{%4^`zC3A@v4`VtB|$xNIkhfW_3th&_?OiSH7&8a$Tv6XTrVDg-;IfdmhTU2>{k| Br;-2w literal 341 zcmc~TPR?MgnByB1o!4w25R((vXtQ+Qg8zTMxbZ~@3f(v{W691cq0V!+0;3hHuWjDE zJDJ<+Qd~gRl@*$y>;5jyM=TbU0(}-6gGUUyk%wbW!;l1J`*(+G@tHj zOXD=))D#pg4aqrO6Ki>V*Von$f>FiM)80ntE)G9=m8a51RPa#B$;q1^L_RyQM9^!} zo~MFb5{r2MJlOK^w&4TQ87)Q4rx&ebaR^#ysCLC7w4%W$&rxCT;r)REe;Jb2mox$Z D)d8w+ diff --git a/core/assets/baseparts/1605284013998.msch b/core/assets/baseparts/1605284013998.msch index 31c282985c3b8371e85cc44cb593b393f0dbcefb..f08053df8747ad6968acbc4b2675ec904b17465e 100644 GIT binary patch literal 349 zcmc~TPR?Mgn4=qTJFLY(z**GzYG;CdOw|4oFUC znQ0u}efTQhvd;(iEqM2KE%##?_xBCLUAJ>~OXzfk3oqu4w`jB2(p+jb;{~%{`0HO~ zeE)h&ZC*bRzqT;u&J$n#i#bg*)jl5xmRVf*xG2~9z1>^!)B2nD-@agV|8|*C;)aYP z927opF}PiLwV1#q^DCJEmP`@w+l%SrwP2Qv6^3nBtF?n;g28S1$e)Sht*E KrTu!Ah;{%}PpGQ^ literal 313 zcmc~TPR?Mgn4=pQUDRyA6Vs7Auks7m-|znUPZ;@~y>qgBCd=(xsvV@VM>}%!BnI)A zVvYQKzN=?>w{c(GyYS`ROGgX+l0O{aJZiLC&$T_+r&)4N`Nd@dh5Ib;&$etUk2Ahz zxaOqml-2W_-nO1KyOp_#f6o%bNc(l>ms$Tm-4|Im_wZfU$IkE1q&$9b!K?o9^}M3j zOtz8t1D_Oa4>5f=anar1CYOKg?AyEW0ejb$H8BY+AGlI7CZwM5e8DdDlX0m_m+F%) z$z6v8ZA7w?4mvDkHSz3=dE^}F{q~!;-m-1-8T(X?mulonzt^58`nXB`Z^z~>m(GVp zv1xMTY8pRHX57;x81H7i##Kxrx8iNGo3$;$rvvfbf%p z`iIn|*V*k@XZ!o()w@eu>q{S|e%SskY4KshZx{Ri7X1ysIET&p_%`mp1_70ewmt~Z zd;B2R{cP9Ni{DH-5BEwfEX_B(QQA=T$y}~yUvb8-7wg`h5w|d&A#RnocuAn2*^R^v z`3!c6f459xb(^62#9)?&u$BgME1O#K7VjJ0ej8mlwJbw4m#b`VymLkB)9e_r1qwzl zCfzvTal}nX)IjuLooS%w+GP@RXFfTjlCBnOux80z9@7xE!ekb&qM1+3{%CHTS~Npe zIq#c`Vs3FKUra{%=_0wVB;|G9JJqFLYb@>gHHEUGN}G%k0Zxho>`zS=*E5vgJo-O*_-G?Rk#HoRxw-)%^$K zo~=u(UzYr7t@B-X^I5I4=Vj<&?-`o9q@9t^ueA3jk zc4=w)AN5*!Vo{XPg7ujnFAD55nKb#%hpYwJ%Pwn5Z9Nm|aktTT@}e7cZ=?U)ZgSc7 z_ujs3=ihpZ1^q6VqLsQJTC$&kt@#Hm4{n|IYYD?aT*dFk6FkamivOvk@uHOA?dis-F z>v`_y^OW7tobiJB;p5#C_}#na$6q!nmB`;0Q1&Hy(|qq!65)(@W-6uXv%mLV_~6=> zr!z0itx5dH|Jd}BSWRTw_sP>wv;MYhy}WIj>e2ttN>8U3sovFKw)oK0D6}zvYu0MF zBa1HTICF2=)z~uWO1R{asXOE#n0FT`d@ifl5R{00wJUJYkx6f!e{=dgpow@$yT~S`C z);rPe7WOmOR8QD{clSE&i+R&DrG6D`VQ%lZeB{X)p=%Zbe0x(T?$5YCFD$)M>WsGE z=bqOBG5hswSo7UJiM*AIyJj)z;f6q#f{AX7YbPw!OF3(l(dZTOcV*k96RcK&oO8d$ ko}N7IQ&7~DyFqH)DKZPWKBkIpvGM0T;d{nDTvojW0QZ1S*8l(j diff --git a/core/assets/baseparts/753938078997151744.msch b/core/assets/baseparts/753938078997151744.msch index 6a666a246c8b74b23bfff80cb6cb1ab3e3f7ef47..cba3746e5b7d988a23fe6b1f0a54fa4a699df899 100644 GIT binary patch literal 201 zcmc~TPR?Mgn4{Vgopsni!1eu!Ps*G}FVu2;n(Q!rv6gUhfr{~@$0Z+^PMz{|#^Kt6 zLI?K?_v|F(r7iErB=B{&*GAO6%c-j&-RK#{r-R}$r@jon0O_B^@@Gr Jmy0%z0050WTsQy# literal 180 zcmc~TPR?Mgn4{YBm+O!L&k_CT?+cZxCms41_@OYX*J#G;6ISN(aa(4#e0Z!^evnV~ zAkVv#7ID`;$IkH2wblz-{3&tA*;tp&J5D53_CBiNX*$M!J^H-!ly`Ra6788hhss3e zslEAo=lHv)CY3YNDmU~dCWDMo|3rk$vVkRmtXIbpF%uIF0+3?(L nCwaP-bOdC%PgG*nN-?dqUm3FKT62>_Xw%Qd41XDX^L6C_lATvL diff --git a/core/assets/baseparts/773974064850272309.msch b/core/assets/baseparts/773974064850272309.msch index b9109ca782ce11fe85fd9316de7b65e14f8375c6..8455943a23099ac36fbbcca14059d8b6d3490bd1 100644 GIT binary patch literal 312 zcmc~TPR?MgnBzL(bzX~tK&yLT;`O~ZZ!hD2c;3$cu$HMx7u&{{W-l*)vCU4O5$Eu! za>n5^3^s=}ThF{a=#Xmt{m-T|$9!+S-giAeU|U+=p1Do3vIp3nxV9(!5nWaJX6t(O zw?6TYZ$@4f3dzfaWd+`5i6F1CnPKvCwR0ahW62T(ck9dQtT2^dZqEURLZ)3WQg!{41K*KzV?JS)qiuS#f&DGekd>QwV WexW6D5pyle{)I~XW;^`M_ZR?$c9aSL literal 279 zcmc~TPR?MgnB&^lo!6ou;JThE>w0PV+w9BrEAC$jNagKZ2Du=VQf4+ z_q5H2hG3qTCHVojuGz*;JGmpU`flkj(aPjyw{911Yi2f@a`{4LeDAH9>lTG)D>$?D zoxf+ccIB&sduMDvsQi2N#4pE8k1d|_cFo+_U;q7g&h?G=J^UzJ%g}1`m#S^0S1WFp zGRQS@RPIocdEvk&>b$_?dgcusQ>^f~%W{E(2!$qOoT?v^iW zrI3zuGX?Yda;`&p;zUN_(TZkMp}`?8haw!Lk(j_DKIT+aJ^S>~VMt8;S>+eMVD zE3Cf%&wowT_1V{A{X{qSfAjoh%MvdCHhNKw_Z9K$mrpOP+;Xt?`OiJOS-ke{IDF`% z%ZuFDQag|DA5TxoOh2zSDcH@9qayf>q7@9PJ%*jAT&9hHse`OwL2%(Gu6O3>BpnekI8=j5iA z`cAhgrXpS{oQG9~R>q|(uefbo@Y`3nb>H8qSt}2)1vTo1oVq(#B~)fv%8UgPzm9py zn#!8$&a!x*V0h55sql!3QuhqEGfG7(dNkBNMqQ{nRbaRCZl3M+^^Usnhv#PRpUZtbPoL-{Nf~yZs4P|WP@Zw8Q(dERQi|hZ=1D7-20nhiWAbc9rn-;(5r$qY Mnv?3QY&Mnw0RJ!+DF6Tf literal 534 zcmc~TPR?MgnBzOKwrIA2z|r{($p#YjyI(5qa9V#Uu;)=0n{s%300pI4$yCvhz z))~#Pj-LK3`uW#|#d6)vmrE-Re4oEP{4~R0@AcU9KgwzErOuVc?moWBcIGTgov7&B z&DsCBSD!1}wQ+i|=hrN`r62chzj|>G=h4{#u{rL+(|={{`FrkjWc5d%(j;N-)580V zLvLE?-+eq?Gc)_#t=9*?`36^(_wRf>v;EfHQ_992@qOnkm(!K4u#RO(ymSnvN8frIcPW=3B&0wJaONq<-!PZij`{k`w;=j;<=>mT}?ChwS_IML^PhfSczultVYY7H4D zC7ippMYnS`Pd_`amB>>M+V?Q8y}smBJjUeN56y2y#tsM8|6$a2Td3glgTJt2rz8N1stG~> From a69328986797387623eabc79bb0b730f80202d2b Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 20:57:32 +0100 Subject: [PATCH 068/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 126 ++++++++++++++++++----- 1 file changed, 99 insertions(+), 27 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 1010be4d40..e923fd30a9 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -226,10 +226,11 @@ joingame.ip = IP: disconnect = Desconectado. disconnect.error = Error en la conexión. disconnect.closed = Conexión cerrada. -disconnect.timeout = Desconectado. +disconnect.timeout = Tiempo de espera agotado. disconnect.data = ¡Hubo un fallo con la carga de datos! cantconnect = No es posible unirse a la partida ([accent]{0}[]). connecting = [accent]Conectando... +reconnecting = [accent]Reconectando... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! @@ -251,7 +252,7 @@ save.newslot = Nombre del Punto de Guardado: save.rename = Renombrar save.rename.text = Nuevo nombre: selectslot = Selecciona un Punto de Guardado. -slot = [accent]Casilla {0} +slot = [accent]Hueco {0} editmessage = Editar mensaje save.corrupted = [accent]¡El punto de guardado está corrupto o es inválido!\nSi acabas de actualizar el juego, probablemente se deba a un cambio en el formato de guardado y[scarlet] no[] un a error. empty = @@ -284,7 +285,7 @@ data.openfolder = Abrir Carpeta de Datos data.exported = Datos exportados. data.invalid = Esta data del juego no es valida. data.import.confirm = Importando los datos externos borrará[scarlet] todo[] tu progreso.\n[accent]Esto no se puede rehacer![]\n\nUna vez que los datos hayan sido importados, el juego saldrá automaticamente. -quit.confirm = ¿Estás seguro de querer salir de la partida? +quit.confirm = ¿Quieres salir de la partida? quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe puede hacer el tutorial de nuevo en[accent] Ajustes->Juego->Volver a hacer tutorial.[] loading = [accent]Cargando... reloading = [accent]Recargando mods... @@ -1276,28 +1277,36 @@ hint.waveFire = Cuando las torretas [accent]Wave[] usan agua como munición, apa hint.generator = Los \uf879[accent]Generadores de combustión[] querman carbón para transmitir energía a bloques adyacentes.\n\nEl alcance de transmisión de energía se puede extender usando \uf87f[accent]Nodos de energía[]. hint.guardian = Los [accent]Guardianes[] poseen una robusta armadura. Municiones débiles como el [accent]Cobre[] o el [accent]Plomo[] no son [scarlet]effectivas[] contra él.\n\nUsa torretas de mayor categoría o por ejemplo, munición de \uf835[accent]Grafito[] \uf861Duo/\uf859 en torretas Salvo para derribar a los Guardianes. -item.copper.description = Un útil material de estructura. Usado extensivamente en todo tipo de bloques. -item.lead.description = Un material básico. Usado en electrónicos y bloques de transferencia de líquidos. -item.metaglass.description = Un compuesto muy duro de cristal. Usado extensivamente para almacenamiento y distribución de líquidos. -item.graphite.description = Carbón mineralizado, usado para munición y aislamiento eléctrico. -item.sand.description = Un material común que es usado sobre todo en la fundición, o para aleaciones. -item.coal.description = Un combustible común y preparado para ser quemado. -item.titanium.description = Un metal raro usado extensivamente en transporte de liquidos, taladros y aeronaves. -item.thorium.description = Un metal radioactivo, muy denso y usado en soporte de estructuras y combustible nuclear. -item.scrap.description = Restos de estructuras y unidades antiguas. Contiene pequeñas cantidades de muchos metales diferentes. -item.silicon.description = Un semiconductor muy útil, se usa para paneles solares y muchos electrónicos complejos. -item.plastanium.description = Un material dúctil y ligero usado en aeronaves y proyectiles de fragmentación. -item.phase-fabric.description = Una sustancia muy ligera usada en electrónica avanzada y en tecnología autoreparadora. -item.surge-alloy.description = Una aleación avanzada con propiedades eléctricas únicas. -item.spore-pod.description = Utilizado para ser convertido en petróleo, explosivos y combustible. -item.blast-compound.description = Un compuesto volátil usado en bombas y explosivos. Se puede quemar como combustible, pero no es recomendable. -item.pyratite.description = Un compuesto extremadamente inflamable usada en armas incendiarias. +item.copper.description = Un útil material de estructura. Usado en todo tipo de bloques. +item.copper.details = Cobre. Metal anormalmente abundante en Serpulo. Estructuralmente débil a menos que sea reforzado. +item.lead.description = Un material básico. Usado en electrónicos y transferencia de líquidos. +item.lead.details = Denso. Inerte. Extensamente usado en baterías.\nNota: Suele ser tóxico para la mayoría de formas de vida biológicas. Aunque ya no quedan muchas de esas por aquí. +item.metaglass.description = Usado en almacenamiento y distribución de líquidos. +item.graphite.description = Carbón mineralizado, usado como munición y en componentes eléctricos. +item.sand.description = Es usada sobre todo para producir otros minerales refinados. +item.coal.description = Se usa como combustible y también en la producción de materiales refinados. +item.coal.details = Parece ser materia vegetal fosilizada, formada hace mucho tiempo. +item.titanium.description = Usado en transporte de liquidos, taladros y aeronaves. +item.thorium.description = Usado en estructuras robustas y como combustible nuclear. +item.scrap.description = Usado en fundidores y pulverizadores para refinarlo en otros materiales. +item.scrap.details = Restos de antiguas estructuras y unidades caídas. +item.silicon.description = Usado en paneles solares, electrónicos complejos y munición inteligente. +item.plastanium.description = Usado en unidades avanzadas, aislamiento y munición de fragmentación. +item.phase-fabric.description = Usado en electrónicos avanzados y estructuras autoreparadoras. +item.surge-alloy.description = Usado en armamento avanzado y estructuras de defensa reactiva. +item.spore-pod.description = Se puede usar como combustible, o para obtener petróleo y explosivos. +item.spore-pod.details = Esporas. Es algo parecido a una forma de vida sintética. Emiten gases tóxicos para el resto de vida biológica. Extremadamente invasivo. Altamente inflamable bajo determinadas condiciones. +item.blast-compound.description = Usado en bombas y munición explosiva. +item.pyratite.description = Usado en armas incendiarias y generadores de combustión. liquid.water.description = Usada comúnmente para enfriar máquinas y para procesar residuos. liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o expulsado a unidades enemigas como arma. liquid.oil.description = Puede ser quemado, explotado o usado como un enfriador. liquid.cryofluid.description = El líquido más eficiente para enfriar cosas. +block.resupply-point.description = Reabastece unidades cercanas con munición de cobre. No es compatible con unidades que requieren energía. +block.armored-conveyor.description = Mueve objetos. No acepta objetos si entran por los lados. +block.illuminator.description = Emite luz. block.message.description = Almacena un mensaje. Puedes usarlo para comunicarte con aliados o dejar recordatorios. block.graphite-press.description = Comprime carbón en piezas de grafito puro. block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente. @@ -1349,6 +1358,7 @@ block.phase-conveyor.description = Bloque de transporte avanzado. Usa energía p block.sorter.description = Clasifica objetos. Si un objeto es igual al seleccionado, pasará al frente. Si no, el objeto saldrá por la izquierda y la derecha. block.inverted-sorter.description = Procesa elementos como un clasificador estándar, pero en su lugar pasa elementos seleccionados a los lados. block.router.description = Acepta objetos de una dirección luego los deja equitativamente en hasta 3 direcciones diferentes. Útil para dividir los materiales de una fuente de recursos a múltiples objetivos. \n\n[scarlet]Nunca usar como entrada de producción porque puede tapar con los objetos de salida.[] +block.router.details = Un mal necesario... No se recomienda usarlo junto a estructuras de producción ya que puede atascar una cadena de transporte. block.distributor.description = Un enrutador avanzado que distribuye objetos equitativamente en hasta otras 7 direcciones. block.overflow-gate.description = Un enrutador que solo saca por la izquierda y la derecha si la cinta del frente está llena. block.underflow-gate.description = El opuesto de la compuerda de desborde. Solo dispensa hacia el frente si los lados están bloqueados. @@ -1385,15 +1395,18 @@ block.laser-drill.description = Su tecnología láser le permite obtener mineral block.blast-drill.description = El mejor taladro. Requiere grandes cantidades de energía y refrigeración. block.water-extractor.description = Extrae agua de la tierra. Úsalo cuando no haya lagos cercanos. block.cultivator.description = Cultiva concentraciones de esporas en la atmosfera a vainas. +block.cultivator.details = Tecnología recuperada. Usada para producir cantidades masivas de biomasa. Parecido al primer incubador de esporas, que ahora cubren Serpulo. block.oil-extractor.description = Usa grandes cantidades de energía, arena y agua para obtener petróleo. Úsalo cuando no hay fuentes directas de petróleo cerca. -block.core-shard.description = La primera iteración de la cápsula del núcleo. Una vez destruido, todo el contacto con la región es perdido. No permitas que esto ocurra. -block.core-foundation.description = La segunda versión del núcleo. Mejor blindado. Almacena más recursos. -block.core-nucleus.description = La tercera y última iteración de la cápsula del núcleo. Muy bien blindado. Almacena cantidades masivas de recursos. +block.core-shard.description = El núcleo de la base. Compacto. Puede auto-replicarse. Equipado con propulsores de uso único. +block.core-shard.details = La primera iteración. Si es destruido, todo contacto con el sector está perdido. No designado para viajes interplanetarios. +block.core-foundation.description = El núcleo de la base. Mejor blindado. Almacena más recursos que el modelo Fragmento. +block.core-foundation.details = La segunda iteración. +block.core-nucleus.description = El núcleo de la base. Extremadamente bien armado. Almacena cantidades masivas de recursos. +block.core-nucleus.details = La tercera y última iteración. block.vault.description = Almacena una gran cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] descargador[] puede usarse para obtener los objetos almacenados. block.container.description = Almacena una pequeña cantidad de objetos. Úsalo para crear almacenes cuando no hay una demanda constante de materales. Un [lightgray] descargador[] puede usarse para obtener objetos del contenedor. block.unloader.description = Descarga objetos de un contenedor, almacén o el núcleo a un transportador o directamente a un bloque adyacente. El tipo de objeto descargado puede ser cambiado tocando el descagador. -block.launch-pad.description = Lanza paquetes de recursos sin necesitar lanzar con el núcleo. -block.launch-pad-large.description = Una versión mejorada del pad de lanzamiento. Almacena más recursos y los lanza con mayor frecuencia. +block.launch-pad.description = Lanza paquetes de recursos a los sectores seleccionados. block.duo.description = Una torre pequeña y barata. Útil contra enemigos terrestres no demasiado fuertes. block.scatter.description = Una torreta antiaérea de tamaño medio. Dispara proyectiles de plomo o chatarra a las unidades enemigas. block.scorch.description = Quema a cualquier enemigo terrestre cercano a él. Altamente efectivo a corto alcance. @@ -1407,6 +1420,65 @@ block.fuse.description = Una torre grande de energía de corto alcance. Dispara block.ripple.description = Una torre extramadamente poderosa. Dispara conjuntos de balas a los enemigos desde grandes distancias. block.cyclone.description = Una torre grande anti-aérea y anti-terrestre. Dispara conjuntos fragmentados explosivos a enemigos cercanos. block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perforantes a objetivos de aire y tierra. -block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. -block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. -block.segment.description = Daña y destruye proyectiles enemigos. No apunta a láseres. +block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser continuo a enemigos cercanos. Requiere enfriamiento para operar. +block.foreshadow.description = Dispara un rayo de un solo objetivo a grandes distancias. +block.repair-point.description = Repara constantemente la unidad dañada más cercana dentro de su área. +block.segment.description = Daña y destruye proyectiles que se acerquen. No afecta a los láseres. +block.parallax.description = Dispara un rayo tractor que atrae enemigos aéreos, dañándolos en el proceso. +block.tsunami.description = Dispara poderosos torrentes de líquido a los enemigos. También apaga fuegos automáticamente si se lo abastece con agua. +block.silicon-crucible.description = Refina silicio a partir de arena y carbón, usando pirotita como una fuente de calor adicional. Es más eficiente en lugares cálidos. +block.disassembler.description = Separa magma cantidades moderadas de componentes minerales exóticos con baja eficiencia. Puede producir Torio. +block.overdrive-dome.description = Incrementa la velocidad de estructuras cercanas. Requiere Tejido de Fase, y Silicio para operar. +block.payload-conveyor.description = Mueve tanto grandes cargas, como unidades recién ensambladas de sus fábricas. +block.payload-router.description = Divide las cargas entrantes en 3 direcciones de salida. +block.command-center.description = Controla el comportamiento de las unidades con diferentes órdenes. +block.ground-factory.description = Produce unidades terrestres. Las unidades resultantes se pueden usar directamente, o se pueden llevar a reconstructores para mejorarlas. +block.air-factory.description = Produce unidades aéreas. Las unidades resultantes se pueden usar directamente, o se pueden llevar a reconstructores para mejorarlas. +block.naval-factory.description = Produce unidades navales. Las unidades resultantes se pueden usar directamente, o se pueden llevar a reconstructores para mejorarlas. +block.additive-reconstructor.description = Mejora unidades a segunda categoría. +block.multiplicative-reconstructor.description = Mejora unidades a tercera categoría. +block.exponential-reconstructor.description = Mejora unidades a cuarta categoría. +block.tetrative-reconstructor.description = Mejora unidades a la quinta y última categoría. +block.switch.description = Un interruptor alternable. Su estado puede ser detectado y controlado por procesadores lógicos. +block.micro-processor.description = Ejecuta una secuencia de instrucciones lógicas en bucle. Se puede usar para controlar unidades y estructuras. +block.logic-processor.description = Ejecuta una secuencia de instrucciones lógicas en bucle. Se puede usar para controlar unidades y estructuras. Es más rápido que el microprocesador. +block.hyper-processor.description = Ejecuta una secuencia de instrucciones lógicas en bucle. Se puede usar para controlar unidades y estructuras. Es más rápido que el procesador lógico. +block.memory-cell.description = Almacena información para los procesadores lógicos. +block.memory-bank.description = Almacena información para los procesadores lógicos. Alta capacidad. +block.logic-display.description = Muestra gráficos arbitrarios desde un procesador lógico. +block.large-logic-display.description = También muestra gráficos arbitrarios desde un procesador lógico. +block.interplanetary-accelerator.description = Una torre de proyección electromagnética masiva. Puede acelerar los núcleos hasta la velocidad necesaria para su desplegación interplanetaria. + +unit.dagger.description = Dispara proyectiles básicos a enemigos cercanos. +unit.mace.description = Lanza torrentes de llamas a enemigos cercanos. +unit.fortress.description = Utiliza artillería de largo alcance contra enemigos terrestres. +unit.scepter.description = Bombardea enemigos cercanos con proyectiles cargados. +unit.reign.description = Bombardea enemigos con proyectiles penetrantes. +unit.nova.description = Dispara rayos láser que dañan enemigos y reparan estructuras aliadas. Puede volar. +unit.pulsar.description = Dispara arcos eléctricos que dañan enemigos y reparan estructuras aliadas. Puede volar. +unit.quasar.description = Dispara rayos láser perforantes que dañan enemigos, pueden provocar incendios y reparan estructuras aliadas. Puede volar. Posee escudo. +unit.vela.description = Dispara un rayo láser continuo que daña enemigos, provoca incendios y reparan estructuras aliadas. Puede volar. +unit.corvus.description = Dispara poderosos láseres que dañan enemigos, y reparan estructuras aliadas. Puede pisar sobre la mayoría de terreno. +unit.crawler.description = Corre hacia enemigos y se autodestruye, provocando una gran explosión. +unit.atrax.description = Dispara orbes de magma debilitantes a enemigos terrestres. Puede pisar sobre la mayoría de terreno. +unit.spiroct.description = Dispara láseres que debilitan al enemigo, reparándose en el proceso. Puede pisar sobre la mayoría de terreno. +unit.arkyid.description = Dispara grandes rayos láser que debilitan al enemigo, repairing itself in the process. Puede pisar sobre la mayoría de terreno. +unit.toxopid.description = Dispara grandes fragmentos electrizados y láseres perforantes. Puede pisar sobre la mayoría de terreno. +unit.flare.description = Dispara proyectiles básicos a enemigos cercanos. +unit.horizon.description = Suelta fragmentos explosivos sobre objetivos terrestres. +unit.zenith.description = Dispara ráfagas de misiles a enemigos cercanos. +unit.antumbra.description = Dispara un enjambre de balas a cualquer enemigo cercano. +unit.eclipse.description = Dispara dos láseres perforantes y un enjambre de balas de fragmentación. +unit.mono.description = Extrae cobre y plomo, y los deposita en el núcleo. +unit.poly.description = Recosntruye automáticamente estructuras dañadas y asiste a otros unidades en la construcción. +unit.mega.description = Repara automáticamente estructuras dañadas. Puede llevar estructuras y unidades terrestres pequeñas. +unit.quad.description = Suelta grandes bombas sobre objetivos terrestres, repara estructuras aliadas y daña enemigos. Puede cargar con unidades terrestres de tamaño medio. +unit.oct.description = Protege aliados con su escudo. Puede cargar con la mayoría de unidades terrestres. +unit.risso.description = Dispara un enjambre de misiles y proyectiles a enemigos cercanos. +unit.minke.description = Dispara proyectiles variados a enemigos terrestres. +unit.bryde.description = Dispara misiles de largo alcance a enemigos. +unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos. +########unit.omura.description = . Constructs flare units. +unit.alpha.description = Defends the Shard core from enemies. Builds structures. +unit.beta.description = Defends the Foundation core from enemies. Builds structures. +unit.gamma.description = Defends the Nucleus core from enemies. Builds structures. From 4ac26d86f5f761519c9a6ef3630c8a041bdae3e1 Mon Sep 17 00:00:00 2001 From: Antsiferov Andrew Date: Wed, 25 Nov 2020 20:04:32 +0000 Subject: [PATCH 069/162] Remove unused imports --- core/src/mindustry/content/Blocks.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 8fa2510a57..3f7652b00d 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -14,8 +14,6 @@ import mindustry.world.blocks.*; import mindustry.world.blocks.campaign.*; import mindustry.world.blocks.defense.*; import mindustry.world.blocks.defense.turrets.*; -import mindustry.world.blocks.defense.turrets.PointDefenseTurret; -import mindustry.world.blocks.defense.turrets.TractorBeamTurret; import mindustry.world.blocks.distribution.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.experimental.*; From 1cc73a4077c326d1bab3681fe0fb72458bc268ce Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 21:26:24 +0100 Subject: [PATCH 070/162] Finished Spanish Translation, for now... --- core/assets/bundles/bundle_es.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index e923fd30a9..5835dcc3fb 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1478,7 +1478,7 @@ unit.risso.description = Dispara un enjambre de misiles y proyectiles a enemigos unit.minke.description = Dispara proyectiles variados a enemigos terrestres. unit.bryde.description = Dispara misiles de largo alcance a enemigos. unit.sei.description = Dispara un enjambre de misiles y proyectiles perforantes a enemigos. -########unit.omura.description = . Constructs flare units. -unit.alpha.description = Defends the Shard core from enemies. Builds structures. -unit.beta.description = Defends the Foundation core from enemies. Builds structures. -unit.gamma.description = Defends the Nucleus core from enemies. Builds structures. +unit.omura.description = Dispara rayos contínuos perforantes. Construye unidades Flare. +unit.alpha.description = Defiende el núcleo Fragmento de los enemigos. Construye estructuras. +unit.beta.description = Defiende el núcleo Foundation de los enemigos. Construye estructuras. +unit.gamma.description = Defiende el núcleo Nucleus de los enemigos. Construye estructuras. From 91b05e47891738820c1996dd88b4badc4309591f Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Wed, 25 Nov 2020 22:29:32 +0200 Subject: [PATCH 071/162] Reconnecting --- core/assets/bundles/bundle_ro.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 92efbac76a..8b3932269a 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -230,6 +230,7 @@ disconnect.timeout = Întârzie să răspundă. disconnect.data = Nu s-au putut încărca datele lumii! cantconnect = Nu te-ai putut alătura jocului ([accent]{0}[]). connecting = [accent]Conectare... +reconnecting = [accent]Reconectare... connecting.data = [accent]Se încarcă datele hărții... server.port = Port: server.addressinuse = Adresa este deja în uz! From c874089f27b264123f17735f9ce8d6f471ddd02a Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 15:42:51 -0500 Subject: [PATCH 072/162] Bugfixes --- core/src/mindustry/content/Blocks.java | 6 +++--- core/src/mindustry/ctype/UnlockableContent.java | 2 +- desktop/src/mindustry/desktop/steam/SAchievement.java | 3 +-- gradle.properties | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 8fa2510a57..b48fccd272 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1221,13 +1221,13 @@ public class Blocks implements ContentList{ solarPanel = new SolarGenerator("solar-panel"){{ requirements(Category.power, with(Items.lead, 10, Items.silicon, 15)); - powerProduction = 0.08f; + powerProduction = 0.1f; }}; largeSolarPanel = new SolarGenerator("solar-panel-large"){{ - requirements(Category.power, with(Items.lead, 100, Items.silicon, 145, Items.phaseFabric, 15)); + requirements(Category.power, with(Items.lead, 80, Items.silicon, 110, Items.phaseFabric, 15)); size = 3; - powerProduction = 1f; + powerProduction = 1.3f; }}; thoriumReactor = new NuclearReactor("thorium-reactor"){{ diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index 7848882206..9a87e622b4 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -110,7 +110,7 @@ public abstract class UnlockableContent extends MappableContent{ /** Makes this piece of content unlocked; if it already unlocked, nothing happens. */ public void unlock(){ - if(!unlocked()){ + if(!net.client() && !unlocked()){ unlocked = true; Core.settings.put(name + "-unlocked", true); diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 092f486249..af83f545ce 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -3,8 +3,7 @@ package mindustry.desktop.steam; public enum SAchievement{ kill1kEnemies(SStat.unitsDestroyed, 1000), kill100kEnemies(SStat.unitsDestroyed, 100_000), - launch10kItems(SStat.itemsLaunched, 10_000), - launch1milItems(SStat.itemsLaunched, 1_000_000), + launch100kItems(SStat.itemsLaunched, 100_000), produce1kMin(SStat.maxProduction, 1000), produce20kMin(SStat.maxProduction, 20_000), diff --git a/gradle.properties b/gradle.properties index 151ff7ea34..e5c7e5fe4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=6742c2b110eeecd1934c42b5b1c87b00c911ecc4 +archash=7a2a357f6cfdc3725ce581093a0ced91f4474222 From aabc094dd93f5ba9d04acfe4a9f00daf21a249bb Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 15:47:44 -0500 Subject: [PATCH 073/162] Testing BE builds --- desktop/src/mindustry/desktop/steam/SAchievement.java | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index af83f545ce..8f7ad64330 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,6 +61,7 @@ public enum SAchievement{ enablePixelation, openWiki, useAccelerator, + ; private final SStat stat; From 709f43b83ca9ff0e121a296bf9d78e2331113205 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 16:00:35 -0500 Subject: [PATCH 074/162] Testing BE builds --- desktop/src/mindustry/desktop/steam/SAchievement.java | 1 - 1 file changed, 1 deletion(-) diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 8f7ad64330..af83f545ce 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,7 +61,6 @@ public enum SAchievement{ enablePixelation, openWiki, useAccelerator, - ; private final SStat stat; From b841af3a488f1e929737a3375a9472b7e18f5fb5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 16:09:11 -0500 Subject: [PATCH 075/162] Testing BE builds --- desktop/src/mindustry/desktop/steam/SAchievement.java | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index af83f545ce..8f7ad64330 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,6 +61,7 @@ public enum SAchievement{ enablePixelation, openWiki, useAccelerator, + ; private final SStat stat; From 25cb2b0abf6f798145ecc0270113e57d0f59e4ca Mon Sep 17 00:00:00 2001 From: Antsiferov Andrew Date: Thu, 26 Nov 2020 00:09:17 +0300 Subject: [PATCH 076/162] Add workflow_dispatch event --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index cf01e4bc68..56d3fe6dd7 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -1,6 +1,6 @@ name: Tests -on: [push] +on: [push, workflow_dispatch] jobs: buildJava14: From 93313664f0bbb0ccb86d06973cb832a5fda36672 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 16:14:39 -0500 Subject: [PATCH 077/162] Testing BE builds --- desktop/src/mindustry/desktop/steam/SAchievement.java | 1 - 1 file changed, 1 deletion(-) diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 8f7ad64330..af83f545ce 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,7 +61,6 @@ public enum SAchievement{ enablePixelation, openWiki, useAccelerator, - ; private final SStat stat; From 977b55bf3246bc6601a72bb06fb0685dda6fadcf Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 16:25:39 -0500 Subject: [PATCH 078/162] Testing BE builds --- desktop/src/mindustry/desktop/steam/SAchievement.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index af83f545ce..845334a539 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -13,11 +13,7 @@ public enum SAchievement{ launch30Times(SStat.timesLaunched, 30), captureBackground, survive100Waves(SStat.maxWavesSurvived, 100), - //this seems near-impossible? - //survive500Waves(SStat.maxWavesSurvived, 500), researchAll, - //TODO - //useAllUnits, shockWetEnemy, killEnemyPhaseWall, researchRouter, @@ -61,6 +57,7 @@ public enum SAchievement{ enablePixelation, openWiki, useAccelerator, + ; private final SStat stat; From 2b8c11c45126120a0133d3c3a004714f1de33263 Mon Sep 17 00:00:00 2001 From: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com> Date: Wed, 25 Nov 2020 14:19:56 -0800 Subject: [PATCH 079/162] projectors blockgroup --- core/src/mindustry/world/blocks/defense/ForceProjector.java | 1 + core/src/mindustry/world/blocks/defense/MendProjector.java | 1 + core/src/mindustry/world/blocks/defense/OverdriveProjector.java | 1 + core/src/mindustry/world/meta/BlockGroup.java | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 078bc02807..f17ac79b96 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -48,6 +48,7 @@ public class ForceProjector extends Block{ super(name); update = true; solid = true; + group = BlockGroup.projectors; hasPower = true; hasLiquids = true; hasItems = true; diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 1c171edfdc..1c0231f434 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -31,6 +31,7 @@ public class MendProjector extends Block{ super(name); solid = true; update = true; + group = BlockGroup.projectors; hasPower = true; hasItems = true; } diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index 7e645e5a2e..cc2c60288e 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -32,6 +32,7 @@ public class OverdriveProjector extends Block{ super(name); solid = true; update = true; + group = BlockGroup.projectors; hasPower = true; hasItems = true; canOverdrive = false; diff --git a/core/src/mindustry/world/meta/BlockGroup.java b/core/src/mindustry/world/meta/BlockGroup.java index 240e164ab3..8b73938ec8 100644 --- a/core/src/mindustry/world/meta/BlockGroup.java +++ b/core/src/mindustry/world/meta/BlockGroup.java @@ -1,5 +1,5 @@ package mindustry.world.meta; public enum BlockGroup{ - none, walls, turrets, transportation, power, liquids, drills, storage, units, logic + none, walls, projectors, turrets, transportation, power, liquids, drills, storage, units, logic } From 245e5d515a236c538a46e612f57562cfe7d68766 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Wed, 25 Nov 2020 23:22:17 +0100 Subject: [PATCH 080/162] Update contributors --- core/assets/contributors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index 52af1f0445..3af0a9eee0 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -102,4 +102,4 @@ newlocknew (freesound.org) dsmolenaers (freesound.org) Headphaze (freesound.org) VolasYouKnow -Angel-24 \ No newline at end of file +Ángel Rodríguez Aguilera From 488147759a88ed2a28cf85de216bc46129e6da32 Mon Sep 17 00:00:00 2001 From: Skat <55407440+skykatik@users.noreply.github.com> Date: Thu, 26 Nov 2020 02:04:08 +0300 Subject: [PATCH 081/162] Some typos --- core/src/mindustry/core/NetClient.java | 4 ++-- core/src/mindustry/core/NetServer.java | 2 +- core/src/mindustry/ctype/Content.java | 2 +- core/src/mindustry/mod/Mods.java | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 841e7e42a7..2627180d0c 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -41,7 +41,7 @@ public class NetClient implements ApplicationListener{ private boolean connecting = false; /** If true, no message will be shown on disconnect. */ private boolean quiet = false; - /** Whether to supress disconnect events completely.*/ + /** Whether to suppress disconnect events completely.*/ private boolean quietReset = false; /** Counter for data timeout. */ private float timeoutTime = 0f; @@ -340,7 +340,7 @@ public class NetClient implements ApplicationListener{ ui.showInfoToast(message, duration); } - + @Remote(variants = Variant.both) public static void warningToast(int unicode, String text){ if(text == null || Fonts.icon.getData().getGlyph((char)unicode) == null) return; diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 959874e82d..c7f3e8d72d 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -422,7 +422,7 @@ public class NetServer implements ApplicationListener{ currentlyKicking[0] = session; } }else{ - player.sendMessage("[scarlet]No player[orange]'" + args[0] + "'[scarlet] found."); + player.sendMessage("[scarlet]No player [orange]'" + args[0] + "'[scarlet] found."); } } }); diff --git a/core/src/mindustry/ctype/Content.java b/core/src/mindustry/ctype/Content.java index c56f465824..71bf965e3f 100644 --- a/core/src/mindustry/ctype/Content.java +++ b/core/src/mindustry/ctype/Content.java @@ -31,7 +31,7 @@ public abstract class Content implements Comparable, Disposable{ */ public void load(){} - /** @return whether an error ocurred during mod loading. */ + /** @return whether an error occurred during mod loading. */ public boolean hasErrored(){ return minfo.error != null; } diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 706815d3b3..8e80777d18 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -677,7 +677,7 @@ public class Mods implements Loadable{ public Seq missingDependencies = new Seq<>(); /** Script files to run. */ public Seq scripts = new Seq<>(); - /** Content with intialization code. */ + /** Content with initialization code. */ public ObjectSet erroredContent = new ObjectSet<>(); /** Current state of this mod. */ public ModState state = ModState.enabled; @@ -708,7 +708,7 @@ public class Mods implements Loadable{ return !erroredContent.isEmpty(); } - /** @return whether this mod is supported by the game verison */ + /** @return whether this mod is supported by the game version */ public boolean isSupported(){ if(isOutdated()) return false; From a70e29127b120405b5d03a319bfa4ffa9b9a6074 Mon Sep 17 00:00:00 2001 From: Sunny Kim <58885089+sk7725@users.noreply.github.com> Date: Thu, 26 Nov 2020 09:59:07 +0900 Subject: [PATCH 082/162] [KO]quick patch --- core/assets/bundles/bundle_ko.properties | 186 +++++++++++------------ 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 0cc0f1d3b7..8ac9086c9e 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -19,8 +19,8 @@ screenshot.invalid = 맵이 너무 커서 스크린샷에 사용될 메모리가 gameover = 게임 오버 gameover.pvp = [accent]{0}[] 팀이 승리했습니다! highscore = [accent]새로운 최고 점수! -copied = 복사됨. -indev.popup = 현재 [accent]v6[] 버전은 [accent]알파[] 단계입니다.\n[lightgray]이 말은:[]\n- [scarlet]캠페인이 아직 완전히 개발되지 않음[]\n- 몇몇 컨텐츠가 빠짐\n- 대부분의 [scarlet]유닛 AI[]가 작동하지 않음\n- 많은 유닛들이 아직 미완성\n- 보이는 것은 모두 바뀌거나 제거될 수 있음\n\n[accent]Github[] 에서 버그 또는 강제종료 오류를 신고 해 주세요. +copied = 복사 +indev.popup = 현재 [accent]v6[] 버전은 [accent]베타[] 단계입니다.\n\n[accent]Github[] 에서 버그 또는 강제종료 오류를 신고 해 주세요. indev.notready = 이 부분은 아직 준비가 되지 않았습니다. load.sound = 소리 @@ -71,15 +71,15 @@ map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? level.highscore = 최고 점수: [accent]{0} level.select = 맵 선택 level.mode = 게임 모드: -coreattack = < 코어가 공격 받고 있습니다! > -nearpoint = [[ [scarlet]즉시 스폰지점에서 떠나세요[] ]\n전멸 임박 +coreattack = < 코어가 공격을 받고 있습니다! > +nearpoint = [[ [scarlet]즉시 스폰지점에서 떠나세요[] ]\n인근 건물들과 유닛들은 초토화됩니다! database = 코어 데이터베이스 savegame = 게임 저장 loadgame = 게임 불러오기 joingame = 게임 참여 customgame = 사용자 지정 게임 newgame = 새 게임 -none = <없음> +none = < 없음 > minimap = 미니맵 position = 위치 close = 닫기 @@ -291,8 +291,8 @@ waiting = [lightgray]대기중... waiting.players = 상대 플레이어를 기다리는 중... wave.enemies = [lightgray]적 유닛 {0}명 남음 wave.enemy = [lightgray]{0}명 남음 -wave.guardianwarn = [accent]{0}[] 단계 후에 가디언이 접근합니다. -wave.guardianwarn.one = [accent]{0}[] 단계 후에 가디언이 접근합니다. +wave.guardianwarn = [accent]{0}[] 단계 후에 수호자가 접근합니다. +wave.guardianwarn.one = [accent]{0}[] 단계 후에 수호자가 접근합니다. loadimage = 사진 불러오기 saveimage = 사진 저장 unknown = 알 수 없음 @@ -335,13 +335,13 @@ editor.center = 중앙 workshop = 창작마당 waves.title = 단계 waves.remove = 삭제 -waves.never = 여기까지 유닛생성 +waves.never = 여기까지 유닛 생성 waves.every = 매 waves.waves = 단계마다 waves.perspawn = 마리 생성 -waves.shields = 보호막/단계 +waves.shields = 방어막/단계 waves.to = 부터 -waves.guardian = 가디언 +waves.guardian = 수호자 waves.preview = 미리보기 waves.edit = 편집 waves.copy = 클립보드로 복사 @@ -495,7 +495,7 @@ zone.objective = [lightgray]목표: [accent]{0} zone.objective.survival = 생존 zone.objective.attack = 적 코어 파괴 add = 추가... -boss.health = 보스 체력 +boss.health = 수호자 체력 connectfail = [scarlet]연결 오류:\n\n[accent]{0} error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? @@ -525,8 +525,8 @@ sectors.nonelaunch = [lightgray]없음 (sun) sectors.rename = Rename Sector sector.missingresources = [scarlet]Insufficient Core Resources -planet.serpulo.name = Serpulo -planet.sun.name = Sun +planet.serpulo.name = 세르플 +planet.sun.name = 태양 sector.groundZero.name = 전초기지 sector.craters.name = 크레이터 @@ -561,26 +561,26 @@ settings.controls = 조작 settings.game = 게임 settings.sound = 소리 settings.graphics = 그래픽 -settings.cleardata = 게임 데이터 초기화... -settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n완료된 작업은 취소할 수 없습니다! +settings.cleardata = 게임 데이터 초기화 +settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다! settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. -settings.clearsaves.confirm = 정말로 모든 저장을 삭제 하시겠습니까? +settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까? settings.clearsaves = 저장 초기화 -settings.clearresearch = Clear Research -settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? -settings.clearcampaignsaves = Clear Campaign Saves -settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? +settings.clearresearch = 연구 초기화 +settings.clearresearch.confirm = 정말로 모든 연구를 삭제하시겠습니까? +settings.clearcampaignsaves = 캠페인 맵 초기화 +settings.clearcampaignsaves.confirm = 정말로 캠페인을 초기화하시겠습니까? paused = [accent]< 일시정지 > clear = 초기화 banned = [scarlet]차단됨 -unplaceable.sectorcaptured = [scarlet]점령된 구역이 필요합니다 +unplaceable.sectorcaptured = [scarlet]구역 점령 필요 yes = 예 no = 아니오 info.title = 정보 error.title = [scarlet]오류가 발생했습니다. error.crashtitle = 오류가 발생했습니다 -unit.nobuild = [scarlet]이 유닛은 건설할 수 없습니다. -lastaccessed = [lightgray]마지막 접근: {0} +unit.nobuild = [scarlet]건설 불가 +lastaccessed = [lightgray]마지막 조작: {0} block.unknown = [lightgray]??? stat.input = 입력 @@ -588,70 +588,70 @@ stat.output = 출력 stat.booster = 가속 stat.tiles = 필요한 타일 stat.affinities = 친화력 -stat.powercapacity = Power Capacity -stat.powershot = Power/Shot -stat.damage = Damage -stat.targetsair = Targets Air -stat.targetsground = Targets Ground -stat.itemsmoved = Move Speed -stat.launchtime = Time Between Launches -stat.shootrange = Range -stat.size = Size -stat.displaysize = Display Size -stat.liquidcapacity = Liquid Capacity -stat.powerrange = Power Range -stat.linkrange = Link Range -stat.instructions = Instructions -stat.powerconnections = Max Connections -stat.poweruse = Power Use -stat.powerdamage = Power/Damage -stat.itemcapacity = Item Capacity -stat.memorycapacity = Memory Capacity -stat.basepowergeneration = Base Power Generation -stat.productiontime = Production Time -stat.repairtime = Block Full Repair Time -stat.speedincrease = Speed Increase -stat.range = Range -stat.drilltier = Drillables -stat.drillspeed = Base Drill Speed -stat.boosteffect = Boost Effect -stat.maxunits = Max Active Units -stat.health = Health -stat.buildtime = Build Time -stat.maxconsecutive = Max Consecutive -stat.buildcost = Build Cost -stat.inaccuracy = Inaccuracy -stat.shots = Shots -stat.reload = Shots/Second -stat.ammo = Ammo -stat.shieldhealth = Shield Health -stat.cooldowntime = Cooldown Time -stat.explosiveness = Explosiveness -stat.basedeflectchance = Base Deflect Chance -stat.lightningchance = Lightning Chance -stat.lightningdamage = Lightning Damage -stat.flammability = Flammability -stat.radioactivity = Radioactivity -stat.heatcapacity = HeatCapacity -stat.viscosity = Viscosity -stat.temperature = Temperature -stat.speed = Speed -stat.buildspeed = Build Speed -stat.minespeed = Mine Speed -stat.minetier = Mine Tier -stat.payloadcapacity = Payload Capacity -stat.commandlimit = Command Limit -stat.abilities = Abilities +stat.powercapacity = 전력량 +stat.powershot = 전력량/발 +stat.damage = 공격력 +stat.targetsair = 공중 공격 +stat.targetsground = 지상 공격 +stat.itemsmoved = 이동 속도 +stat.launchtime = 발사 간격 +stat.shootrange = 사거리 +stat.size = 크기 +stat.displaysize = 화면 크기 +stat.liquidcapacity = 액체 수용량 +stat.powerrange = 전선 길이 +stat.linkrange = 감지 길이 +stat.instructions = 최대 명령어 수 +stat.powerconnections = 최대 연결 개수 +stat.poweruse = 전력 요구량 +stat.powerdamage = 전력량/피해량 +stat.itemcapacity = 자원 수용량 +stat.memorycapacity = 변수 개수 +stat.basepowergeneration = 기본 발전량 +stat.productiontime = 소요 시간 +stat.repairtime = 건물 완전 복구 시간 +stat.speedincrease = 속도 증가 +stat.range = 사거리 +stat.drilltier = 채굴 가능 자원 +stat.drillspeed = 기본 채굴 속도 +stat.boosteffect = 버프 효과 +stat.maxunits = 최대 유닛 수 +stat.health = 체력 +stat.buildtime = 건설 시간 +stat.maxconsecutive = 최대 체인 길이 +stat.buildcost = 건설 비용 +stat.inaccuracy = 오차각 +stat.shots = 발사 당 탄 +stat.reload = 발/초 +stat.ammo = 탄약 +stat.shieldhealth = 보호막 체력 +stat.cooldowntime = 쿨타임 +stat.explosiveness = 폭발성 +stat.basedeflectchance = 기본 반사 확률 +stat.lightningchance = 전격 확률 +stat.lightningdamage = 전격 공격량 +stat.flammability = 휘발성 +stat.radioactivity = 방사성 +stat.heatcapacity = 열용량 +stat.viscosity = 점성 +stat.temperature = 온도 +stat.speed = 속도 +stat.buildspeed = 건설 속도 +stat.minespeed = 채굴 속도 +stat.minetier = 채굴 티어 +stat.payloadcapacity = 화물 수용량 +stat.commandlimit = 지휘 한계 +stat.abilities = 능력 -ability.forcefield = Force Field -ability.repairfield = Repair Field -ability.statusfield = Status Field -ability.unitspawn = {0} Factory -ability.shieldregenfield = Shield Regen Field +ability.forcefield = 보호막 +ability.repairfield = 수리장 +ability.statusfield = 버프장 +ability.unitspawn = {0} 공장 +ability.shieldregenfield = 방어막 복구장 bar.drilltierreq = 더 좋은 드릴이 필요 bar.noresources = 자원 부족 -bar.corereq = 코어 기지 필요 +bar.corereq = 코어 필요 bar.drillspeed = 드릴 속도: {0}/s bar.pumpspeed = 펌프 속도: {0}/s bar.efficiency = 효율: {0}% @@ -688,7 +688,7 @@ bullet.multiplier = [stat]{0}[lightgray]x 탄약 배수 bullet.reload = [stat]{0}[lightgray]x 발사 속도 unit.blocks = 블록 -unit.blockssquared = blocks² +unit.blockssquared = 블록² unit.powersecond = 전력/초 unit.liquidsecond = 액체/초 unit.itemssecond = 개/초 @@ -701,7 +701,7 @@ unit.persecond = /초 unit.perminute = /분 unit.timesspeed = x 배 unit.percent = % -unit.shieldhealth = 보호막 체력 +unit.shieldhealth = 방어막 체력 unit.items = 자원 unit.thousands = 천 unit.millions = 백만 @@ -711,7 +711,7 @@ category.power = 전력 category.liquids = 액체 category.items = 자원 category.crafting = 입력/출력 -category.function = Function +category.function = 기능 category.optional = 보조 자원 setting.landscape.name = 가로화면 잠금 setting.shadows.name = 그림자 @@ -722,7 +722,7 @@ setting.flow.name = 자원 흐름량 표시 setting.buildautopause.name = 건설 자동 일시정지 setting.animatedwater.name = 액체 애니메이션 효과 setting.animatedshields.name = 보호막 애니메이션 효과 -setting.antialias.name = 안티 에일리어싱[lightgray] (재시작 필요)[] +setting.antialias.name = 위신호 제거 필터[lightgray] (재시작 필요)[] setting.playerindicators.name = 플레이어 위치 표시기 setting.indicators.name = 적 위치 표시기 setting.autotarget.name = 자동 조준 @@ -734,10 +734,10 @@ setting.fpscap.text = {0} FPS setting.uiscale.name = UI 스케일링[lightgray] (재시작 필요)[] setting.swapdiagonal.name = 항상 대각선 배치 setting.difficulty.training = 훈련 -setting.difficulty.easy = 쉬움 +setting.difficulty.easy = 무난 setting.difficulty.normal = 보통 -setting.difficulty.hard = 어려움 -setting.difficulty.insane = 미침 +setting.difficulty.hard = 혼돈 +setting.difficulty.insane = 박멸 setting.difficulty.name = 난이도: setting.screenshake.name = 화면 흔들림 setting.effects.name = 효과 보임 @@ -769,7 +769,7 @@ setting.savecreate.name = 자동 저장 활성화 setting.publichost.name = 멀티플레이 공용 서버로 표시 setting.playerlimit.name = 플레이어 제한 setting.chatopacity.name = 채팅창 투명도 -setting.lasersopacity.name = 전력 레이저 투명도 +setting.lasersopacity.name = 전선 투명도 setting.bridgeopacity.name = 터널 투명도 setting.playerchat.name = 채팅 말풍선 표시 public.confirm = 게임을 모두에게 공개하시겠습니까?\n[accent]모든 플레이어가 게임에 참여할 수 있습니다.\n[lightgray]설정->게임->멀티플레이 공용 서버로 표시에서 나중에 변경할 수 있습니다.\n\n[sky]번역자 추가[]\n[accent]친구끼리 하려고 이 기능을 활성화 한 뒤에, 친구 외에 다른 플레이어가 들어왔을 때\n해당 플레이어를 차단하는 행위는 비매너를 넘어서는 얌체 행위 그 자체입니다.\n정말로 [scarlet]많은 다른 플레이어들이 오길 원한다[]면 확인하세요. @@ -794,8 +794,8 @@ keybind.clear_building.name = 설계도 초기화 keybind.press = 키를 누르세요... keybind.press.axis = 마우스 휠 또는 키를 누르세요... keybind.screenshot.name = 맵 스크린샷 -keybind.toggle_power_lines.name = 전력 레이저 토글 -keybind.toggle_block_status.name = 블록 상태 토글 +keybind.toggle_power_lines.name = 전선 가시도 설정 +keybind.toggle_block_status.name = 블록 상태 가시도 keybind.move_x.name = X축 이동 keybind.move_y.name = Y축 이동 keybind.mouse_move.name = 커서를 따라서 이동 From dd9c3fc8d6ffc441f4c35b38feaa4aa942451191 Mon Sep 17 00:00:00 2001 From: Sunny Kim <58885089+sk7725@users.noreply.github.com> Date: Thu, 26 Nov 2020 10:01:15 +0900 Subject: [PATCH 083/162] Update bundle_ko.properties --- core/assets/bundles/bundle_ko.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 8ac9086c9e..975aa49558 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -522,8 +522,8 @@ sectors.resume = 재개 sectors.launch = 출격 sectors.select = 선택 sectors.nonelaunch = [lightgray]없음 (sun) -sectors.rename = Rename Sector -sector.missingresources = [scarlet]Insufficient Core Resources +sectors.rename = 구역 명명 +sector.missingresources = [scarlet]자원 부족 planet.serpulo.name = 세르플 planet.sun.name = 태양 From 38471d68d75d218bf70eb2bec391856db8967b55 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 20:23:17 -0500 Subject: [PATCH 084/162] Fixed Salt Flats being deadlocked --- core/assets-raw/fontgen/extra/planet.svg | 55 ++++++++++++++++++ core/assets-raw/icons/planet.png | Bin 0 -> 578 bytes core/src/mindustry/content/TechTree.java | 3 +- .../mindustry/desktop/steam/SAchievement.java | 3 +- .../src/mindustry/desktop/steam/SStats.java | 9 +-- 5 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 core/assets-raw/fontgen/extra/planet.svg create mode 100644 core/assets-raw/icons/planet.png diff --git a/core/assets-raw/fontgen/extra/planet.svg b/core/assets-raw/fontgen/extra/planet.svg new file mode 100644 index 0000000000..17cd9fc3cd --- /dev/null +++ b/core/assets-raw/fontgen/extra/planet.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/core/assets-raw/icons/planet.png b/core/assets-raw/icons/planet.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5c136add32189c84ea9a0884da3a44a05484d6 GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7TQZ%U13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(LE%(p0`O0l_l?b9FkpEV4wq0u--st+kpF^Gner(<3NGhV^<= zvwU|byLfu6Yz(X82j(M3uX~WM1{$IAPh}mj3z!U%j6M zo!H9g)>j#_z_IM_gZdA>tK6tcisb=+or+gRwr<_>!#>;V*(?W(l^Dmk|ZP*vRApPp=wLAMS zvnx2qF3oFbc1~F0aWmWQ{ky#PZ|@tQ{a45ETcN0&>v;Gr1_p*oPZ!4!i{7chj(i6c zIHFJf`~UPEOJM{{wNqwxGh;u4=c;Ok8}GCf8GL#c6>O?RmggMMptRqp09av z(~VcMnKF9ro0~ZO%(Z5(%c@&6FIvw0{`;8pkq_3*S!^nt49jK-Z@gZnH1Ehd&FPxU jPjriwiU-bI`-8zkF#T87N{%)L1_lOCS3j3^P6sDB literal 0 HcmV?d00001 diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index cf77c5819b..98ff7fd6e8 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -512,8 +512,7 @@ public class TechTree implements ContentList{ new Research(groundFactory), new Research(additiveReconstructor), new Research(airFactory), - new Research(door), - new Research(waterExtractor) + new Research(door) ), () -> { }); diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 845334a539..71e04a2c3c 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -38,13 +38,12 @@ public enum SAchievement{ buildAllUnits(SStat.unitTypesBuilt, 30), buildT5, pickupT5, - activeAllT5, active10Polys, dieExclusion, drown, fillCoreAllCampaign, hostServer10(SStat.maxPlayersServer, 10), - buildMeltdownSpectreForeshadow, + buildMeltdownSpectre, //technically inaccurate launchItemPad, chainRouters, circleConveyor, diff --git a/desktop/src/mindustry/desktop/steam/SStats.java b/desktop/src/mindustry/desktop/steam/SStats.java index 822efe33cc..49bed6a511 100644 --- a/desktop/src/mindustry/desktop/steam/SStats.java +++ b/desktop/src/mindustry/desktop/steam/SStats.java @@ -65,13 +65,6 @@ public class SStats implements SteamUserStatsCallback{ active10Polys.complete(); } - tmpSet.clear(); - tmpSet.addAll(t5s); - Groups.unit.each(u -> tmpSet.remove(u.type)); - if(tmpSet.size == 0){ - activeAllT5.complete(); - } - for(Building entity : player.team().cores()){ if(!content.items().contains(i -> entity.items.get(i) < entity.block.itemCapacity)){ fillCoreAllCampaign.complete(); @@ -141,7 +134,7 @@ public class SStats implements SteamUserStatsCallback{ if(blocksBuilt.add(e.tile.block().name)){ if(blocksBuilt.contains("meltdown") && blocksBuilt.contains("spectre") && blocksBuilt.contains("foreshadow")){ - buildMeltdownSpectreForeshadow.complete(); + buildMeltdownSpectre.complete(); } save(); From e1ddf115e063329f89cf36980706e9d6d0643769 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 20:41:38 -0500 Subject: [PATCH 085/162] Merged turret types --- core/src/mindustry/content/Blocks.java | 2 +- .../blocks/defense/turrets/ChargeTurret.java | 63 ------------------- .../world/blocks/defense/turrets/Turret.java | 51 +++++++++++++-- 3 files changed, 46 insertions(+), 70 deletions(-) delete mode 100644 core/src/mindustry/world/blocks/defense/turrets/ChargeTurret.java diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 2625e478d5..363256dc83 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1513,7 +1513,7 @@ public class Blocks implements ContentList{ flags = EnumSet.of(BlockFlag.turret, BlockFlag.extinguisher); }}; - lancer = new ChargeTurret("lancer"){{ + lancer = new PowerTurret("lancer"){{ requirements(Category.turret, with(Items.copper, 25, Items.lead, 50, Items.silicon, 45)); range = 165f; chargeTime = 40f; diff --git a/core/src/mindustry/world/blocks/defense/turrets/ChargeTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ChargeTurret.java deleted file mode 100644 index 15feaf0379..0000000000 --- a/core/src/mindustry/world/blocks/defense/turrets/ChargeTurret.java +++ /dev/null @@ -1,63 +0,0 @@ -package mindustry.world.blocks.defense.turrets; - -import arc.audio.*; -import arc.math.*; -import arc.util.*; -import mindustry.content.*; -import mindustry.entities.*; -import mindustry.entities.bullet.*; -import mindustry.type.*; -import mindustry.gen.*; - -import static mindustry.Vars.*; - -public class ChargeTurret extends PowerTurret{ - public float chargeTime = 30f; - public int chargeEffects = 5; - public float chargeMaxDelay = 10f; - public Effect chargeEffect = Fx.none; - public Effect chargeBeginEffect = Fx.none; - public Sound chargeSound = Sounds.none; - - public ChargeTurret(String name){ - super(name); - } - - public class ChargeTurretBuild extends PowerTurretBuild{ - public boolean shooting; - - @Override - public void shoot(BulletType ammo){ - useAmmo(); - - tr.trns(rotation, size * tilesize / 2f); - chargeBeginEffect.at(x + tr.x, y + tr.y, rotation); - chargeSound.at(x + tr.x, y + tr.y, 1); - - for(int i = 0; i < chargeEffects; i++){ - Time.run(Mathf.random(chargeMaxDelay), () -> { - if(!isValid()) return; - tr.trns(rotation, size * tilesize / 2f); - chargeEffect.at(x + tr.x, y + tr.y, rotation); - }); - } - - shooting = true; - - Time.run(chargeTime, () -> { - if(!isValid()) return; - tr.trns(rotation, size * tilesize / 2f); - recoil = recoilAmount; - heat = 1f; - bullet(ammo, rotation + Mathf.range(inaccuracy)); - effects(); - shooting = false; - }); - } - - @Override - public boolean shouldTurn(){ - return !shooting; - } - } -} diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 3d1af1e5ce..9e41023c01 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -40,6 +40,7 @@ public abstract class Turret extends ReloadTurret{ public Effect ammoUseEffect = Fx.none; public Sound shootSound = Sounds.shoot; + //general info public int maxAmmo = 30; public int ammoPerShot = 1; public float ammoEjectBack = 1f; @@ -61,6 +62,14 @@ public abstract class Turret extends ReloadTurret{ public boolean targetAir = true; public boolean targetGround = true; + //charging + public float chargeTime = -1f; + public int chargeEffects = 5; + public float chargeMaxDelay = 10f; + public Effect chargeEffect = Fx.none; + public Effect chargeBeginEffect = Fx.none; + public Sound chargeSound = Sounds.none; + public Sortf unitSort = Unit::dst2; protected Vec2 tr = new Vec2(); @@ -136,7 +145,7 @@ public abstract class Turret extends ReloadTurret{ public @Nullable Posc target; public Vec2 targetPos = new Vec2(); public BlockUnitc unit = Nulls.blockUnit; - public boolean wasShooting; + public boolean wasShooting, charging; @Override public void created(){ @@ -313,7 +322,7 @@ public abstract class Turret extends ReloadTurret{ } public boolean shouldTurn(){ - return true; + return !charging; } /** Consume ammo and return a type. */ @@ -352,11 +361,37 @@ public abstract class Turret extends ReloadTurret{ } protected void shoot(BulletType type){ - recoil = recoilAmount; - heat = 1f; - //when burst spacing is enabled, use the burst pattern - if(burstSpacing > 0.0001f){ + //when charging is enabled, use the charge shoot pattern + if(chargeTime > 0){ + useAmmo(); + + tr.trns(rotation, size * tilesize / 2f); + chargeBeginEffect.at(x + tr.x, y + tr.y, rotation); + chargeSound.at(x + tr.x, y + tr.y, 1); + + for(int i = 0; i < chargeEffects; i++){ + Time.run(Mathf.random(chargeMaxDelay), () -> { + if(!isValid()) return; + tr.trns(rotation, size * tilesize / 2f); + chargeEffect.at(x + tr.x, y + tr.y, rotation); + }); + } + + charging = true; + + Time.run(chargeTime, () -> { + if(!isValid()) return; + tr.trns(rotation, size * tilesize / 2f); + recoil = recoilAmount; + heat = 1f; + bullet(type, rotation + Mathf.range(inaccuracy)); + effects(); + charging = false; + }); + + //when burst spacing is enabled, use the burst pattern + }else if(burstSpacing > 0.0001f){ for(int i = 0; i < shots; i++){ Time.run(burstSpacing * i, () -> { if(!isValid() || !hasAmmo()) return; @@ -367,6 +402,8 @@ public abstract class Turret extends ReloadTurret{ bullet(type, rotation + Mathf.range(inaccuracy)); effects(); useAmmo(); + recoil = recoilAmount; + heat = 1f; }); } @@ -388,6 +425,8 @@ public abstract class Turret extends ReloadTurret{ shotCounter++; + recoil = recoilAmount; + heat = 1f; effects(); useAmmo(); } From 7f214f1343a69310197a08433ebdf8de2e7ee6a8 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 26 Nov 2020 08:47:11 +0100 Subject: [PATCH 086/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 9a0255191b..e4d23efd0f 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -9,7 +9,7 @@ link.changelog.description = Lista de actualizaciones link.dev-builds.description = Versiones en desarrollo inestables link.trello.description = Tablón de Trello oficial para las características planificadas link.itch.io.description = Página de itch.io, donde puedes descargar las versiones para PC -link.google-play.description = Ficha en la Google Play Store +link.google-play.description = Ver en Google Play Store link.f-droid.description = Página de F-Droid del juego link.wiki.description = Wiki oficial de Mindustry link.suggestions.description = Sugerir nuevas funciones From 0d4add667faec9acfa1430abc0861448d69fe26c Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 26 Nov 2020 08:49:44 +0100 Subject: [PATCH 087/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 5835dcc3fb..6cef02c4e8 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -9,7 +9,7 @@ link.changelog.description = Lista de actualizaciones link.dev-builds.description = Versiones en desarrollo inestables link.trello.description = Tablero de Trello oficial para las características planificadas link.itch.io.description = itch.io es la página donde puedes descargar las versiones para PC y Servidor -link.google-play.description = Ficha en la Google Play Store +link.google-play.description = Ver en Google Play Store link.f-droid.description = Página de F-Droid del juego link.wiki.description = Wiki oficial de Mindustry link.suggestions.description = Sugerir nuevas funciones From fa3a19d766ac9da4c2787c07ec2e4a0b6e7cd0c8 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Thu, 26 Nov 2020 08:52:46 +0100 Subject: [PATCH 088/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6cef02c4e8..d53922f86b 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -230,7 +230,6 @@ disconnect.timeout = Tiempo de espera agotado. disconnect.data = ¡Hubo un fallo con la carga de datos! cantconnect = No es posible unirse a la partida ([accent]{0}[]). connecting = [accent]Conectando... -reconnecting = [accent]Reconectando... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! From 465219540c8c17639cecd5a3e13b116ff4fa0d9b Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 10:22:01 -0500 Subject: [PATCH 089/162] Added prompt for loading legacy research data --- core/assets/bundles/bundle.properties | 5 ++++- core/src/mindustry/content/TechTree.java | 2 +- core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/game/Universe.java | 8 -------- core/src/mindustry/ui/dialogs/PlanetDialog.java | 8 ++++++++ .../world/blocks/defense/turrets/LaserTurret.java | 3 ++- .../mindustry/world/blocks/defense/turrets/Turret.java | 2 +- 8 files changed, 19 insertions(+), 15 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 068068ff94..a5303bc3d6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -23,7 +23,7 @@ gameover.waiting = [accent]Waiting for next map... highscore = [accent]New highscore! copied = Copied. indev.notready = This part of the game isn't ready yet -indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates. +indev.campaign = [accent]Congratulations! You've reached the end of the campaign![]\n\nThis is as far as the content goes right now. Interplanetary travel will be added in future updates. load.sound = Sounds load.map = Maps @@ -149,6 +149,9 @@ unlocked = New content unlocked! available = New research available! completed = [accent]Completed techtree = Tech Tree +research.legacy = [accent]5.0[] research data found.\nDo you want to [accent]load this data[], or [accent]discard it[] and restart research in the new campaign (recommended)? +research.load = Load +research.discard = Discard research.list = [lightgray]Research: research = Research researched = [lightgray]{0} researched. diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 98ff7fd6e8..31becb5f57 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -422,7 +422,7 @@ public class TechTree implements ContentList{ node(additiveReconstructor, Seq.with(new SectorComplete(biomassFacility)), () -> { node(multiplicativeReconstructor, () -> { - node(exponentialReconstructor, () -> { + node(exponentialReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> { node(tetrativeReconstructor, () -> { }); diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 023eeb5631..83f3aa3db7 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1349,7 +1349,7 @@ public class UnitTypes implements ContentList{ collides = false; healPercent = 15f; - splashDamage = 240f; + splashDamage = 230f; splashDamageRadius = 120f; }}; }}); diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index b90afcae56..9451fc7278 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -397,8 +397,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I /** Actually destroys the unit, removing it and creating explosions. **/ public void destroy(){ - float explosiveness = 2f + item().explosiveness * stack().amount / 2.4f; - float flammability = item().flammability * stack().amount / 2.4f; + float explosiveness = 2f + item().explosiveness * stack().amount / 3f; + float flammability = item().flammability * stack().amount / 3f; Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); float shake = hitSize / 3f; diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index b19fcee6da..b57c1fe337 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -6,7 +6,6 @@ import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.game.EventType.*; -import mindustry.io.legacy.*; import mindustry.maps.*; import mindustry.type.*; import mindustry.world.blocks.storage.*; @@ -27,13 +26,6 @@ public class Universe{ public Universe(){ load(); - //load legacy research - Events.on(ClientLoadEvent.class, e -> { - if(Core.settings.has("unlocks")){ - LegacyIO.readResearch(); - } - }); - //update base coverage on capture Events.on(SectorCaptureEvent.class, e -> { if(!net.client() && state.isCampaign()){ diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index b3dc7aa135..347c18c4a2 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -23,6 +23,7 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.graphics.g3d.*; import mindustry.input.*; +import mindustry.io.legacy.*; import mindustry.maps.*; import mindustry.type.*; import mindustry.ui.*; @@ -140,6 +141,13 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ return this; } + //load legacy research + if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){ + Core.app.post(() -> { + ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", LegacyIO::readResearch, () -> Core.settings.remove("unlocks")); + }); + } + rebuildButtons(); mode = look; selected = hovered = launchSector = null; diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index 3aefcdd33c..fd971e55d7 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -54,6 +54,7 @@ public class LaserTurret extends PowerTurret{ super.updateTile(); if(bulletLife > 0 && bullet != null){ + wasShooting = true; tr.trns(rotation, size * tilesize / 2f, 0f); bullet.rotation(rotation); bullet.set(x + tr.x, y + tr.y); @@ -65,6 +66,7 @@ public class LaserTurret extends PowerTurret{ bullet = null; } }else if(reload > 0){ + wasShooting = true; Liquid liquid = liquids.current(); float maxUsed = consumes.get(ConsumeType.liquid).amount; @@ -76,7 +78,6 @@ public class LaserTurret extends PowerTurret{ coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f)); } } - } @Override diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 9e41023c01..4572852eb2 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -205,7 +205,7 @@ public abstract class Turret extends ReloadTurret{ } public boolean isActive(){ - return target != null || (logicControlled() && logicShooting) || (isControlled() && unit.isShooting()); + return target != null || wasShooting; } public void targetPosition(Posc pos){ From 3fe4ae38b60ce22d173b7665985f835b0efd2c36 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 12:53:19 -0500 Subject: [PATCH 090/162] Misc cleanup --- core/assets/maps/extractionOutpost.msav | Bin 20000 -> 20013 bytes core/assets/maps/tarFields.msav | Bin 15448 -> 15505 bytes core/src/mindustry/content/TechTree.java | 6 ++--- core/src/mindustry/content/Weathers.java | 8 ++++--- core/src/mindustry/core/Logic.java | 7 ++++++ .../mindustry/entities/comp/BuildingComp.java | 21 ----------------- .../src/mindustry/entities/comp/FireComp.java | 8 +++---- core/src/mindustry/mod/ContentParser.java | 2 +- core/src/mindustry/type/Weather.java | 2 +- core/src/mindustry/world/Tile.java | 22 ++++++++++++++++++ 10 files changed, 43 insertions(+), 33 deletions(-) diff --git a/core/assets/maps/extractionOutpost.msav b/core/assets/maps/extractionOutpost.msav index 5728a4b217bb5dd8a2d7fbdb13c498f1d33ecbbc..dfffe540439702f2695cf5762fb386ea3e14e1f0 100644 GIT binary patch literal 20013 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 delta 19991 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�ocG6nReB7-G(g}UG84YJv#frrDNOY6lH#% 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 diff --git a/core/assets/maps/tarFields.msav b/core/assets/maps/tarFields.msav index 006be2fb0ffd7294c0c53efd4b6ce0d540171421..1ec074997cb26e7e9fe1a4dcc0cc679397f51c05 100644 GIT binary patch literal 15505 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

N}F%U zd9!WmlqV;OP5VUsr0S3FxKV$_lYQ5M;seG)`(G@(aOFYDt@})VQm_AfV0lqfOTa6BWeYFO4=Wv_09LFdar%z{JiZdAERAwgny4`nEzQmd5QcFGl6xwJH0pcKK}WqNwEH3 z9;4iv$cHx?kFQ)h;s29;Z=OB)!}%e4?#E(AlkzvkI{yV9nV&0e_4C?4KS9}I|1=4& zum4@of9AZs`pa+0liD|OeQwNqe%#%+`q|@&AGkLN*O*?A@#JUoesEA?N&cVzKXj)W xo7}xW``=oD`p5r*H2ze7u8;hCUMysX&DU%H_kMNHKmTv~|L6M|mp*xa7yyc0!x;bo delta 17899 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

8S)&6(;{{Q2kw#xk@wN<-byFA~oSi$+V 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 HJmLiaFKO>M diff --git a/core/assets/maps/nuclearComplex.msav b/core/assets/maps/nuclearComplex.msav index aa9424850b7b50ee65fb9eacef15a4bb00c5944f..b56ea9a8666d882180cff9878acd3f944900f0ef 100644 GIT binary patch literal 14951 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 SvJdNxjE>p==RcGDK>+})>j|O& literal 14864 zcmb=J^S0KrIOgQch8mpJufD<_VKf;(&72*R_=(rD!Xj<-Lr0MZ~fbF_tvYtvR7-L{a!ow zuG?Ggsnv1o_uj~TyYkb~ujbeE*Xym1-(Oi-8u)b9+OuK1w=FmFU){TR)~T@FbJN#u zTc*mK@%_+)$Lp>1%d@vzef8VAGbTIlZd7#az1wT^uFbx^{o3^JW~+HG|EjwA?RHLh zyh+yEr|MhZR(-w}6?OgTE5FsZ-`u&iz%csi+g!O#^Ndn-x29Vuvdq=IRd?-`S-}ZY zxx!xeHF5jgV&`wWC9B(G>$KtEUGpl-+KcP1S)Z@U+*!tO^S99p#@PEe*00uoS*pm8 zA$ZS2E_=1fhS=5bKJDl=uecK`xqVwq^{*}4Ztg7o{Mvu((b83OZAI(8Zawujq`Y_O z(_LrJ&t5C;Yr5xVR@tq!Zi}~lbzr{Ub|cp$Bysn(nyCDethakV9PZzLD<|apx4gGk zW=G%M>-YO9?6rPYRQWk_>(0o_E$i3CM%UfS*m_Hwstm)gFIxBmPIi~fHxW-r@^^Q(H}K0JGON;uapdh55>2N$Pa>vp?elRM{%dGL>l zxg6hCon0Hp^Xpk6>(_mK=HJU#>(3H9?|3)gJlk6T?!Q|K^Gja$>WZ#=v19w?TbGvo z+_>-OqJ38@mo565y;|${ny~wI*EWjJEZZJ!)9D-?u88 zJNKIP*7EYQsO?s7^WMH*Ki&6?vG}q|dE3XozJ@-I)1Otn-9YYL$kqkF+Ydk8oBlN_ z`L*58%UYHp!M8suY}~}o$9mqRf&KW*)32}dx!yXz`|92-uLXBsc;B*`yloy^fcn&5 z)7L)xSNJ1fiL91~JYUe_TkGCRAGqvh8hw7Xh)uA|oRp-$20lyNe>LYWtH1Jo`J58Z zD`wJP@9w?zu;|d_YxnM5pRZ>gb#-mn_QkSJ))&vMJ$p?rMRZf+)vN36|3)2s;Hni7 ze01%tduhA(ahrDP>2U=-xN_^k#1AIh!!O^Mx6P+7P`Q3`_^L&l#1?gxx^702$Vf3c^=e&PT>h2PSw<1xHw0&X zk1Sok?bDWDOJeVb9Nn8&y?a|wu1S>s)eHC5@daw{UaM>RhsAA8&MPgi&0CjpZ=U{k zm0Jk+mH(j=`|73GTUe)FWUBcUlIoihb@+bipSuU{ul`ZZTfhGCd)_~LJNM_WnA5u1 ztJgGZO>lCvRQSrmUa9L>FNCe#_IuH)#i~;ZKLo!Ed41L|H~VOu-0fA{?9Cl-?~gb5 zo>M*J_l?&pg0G&sksY#~_wsC04W2E$E9XozYROvLk-p3OTPL4vZ{I1~>{5l-8COHM zm#HMdzrWL&9rS6YcKa)TNhT8lW=6hu8<{@XPtU&ul>v@`O~Il zq8qXwEx5Nq%lNHgL*{H(?#po!4BOZn7M{DSc7N-hTWQRWDc|R9-R=L)ge{n7$BnYr zvnshynW8*d)92=7mnbZj*M+;Hf+!yR@oX+v{GWga>p# z>|9sMcIUS8B%j?J>n=qYT1NF+i)%-RuH~9xv%~!Q-_yMRKh4r=+!j{0`fQZ5dd&B% zySs0FShub!+-}P2RSD~OadKC^+$}Q}hts=C?v-6w z?0q5Wy8bNflK+Wa!rHq9vbM(T>h+V=cQepf^XBc91#1FCcWu1+F7KMDqt?GY_cB&_ za!RT39mvoP?~&KfvO192JM+ZB4Q^()^`rfz@BX@W%I`0CfYedmJ$koxBzzch#as6#S^u10Iy=p1y<5qqTesGoT%4%wvF}{gWfQiD>*luvu77mf zwl>&w#w0VHTpj;i4jGab7xVrlrAD(CnBHMkJW*QcKKnt}!;r~aqiZ=O?;q_g7x;3* zk9QeQX{_FwH)Z8zp&RdB(tNyh?*+D??DrQI&uQCqb!~Y_Wc23L12KHroh3T&zZEY2 zSNuU~k(~b4Gj`$16$dX#ioI0G5$fBi^JZII27AV~ZCSIV^A?{>V7<`zTWfP@d)!X- zG`lZBQ#Ur&s+Y)AEYfvXj=d-xTe3ayQ9xer8^_kicPzFoUELBDZJl%XbwpnIwz;Pt z#d#-hx){`JC7yEsNqm)7e(t7yi;aug*K7CbDJ(JDqHLahS5~&!?4w)Y?RjF1aW^Vj zVtx0;udKb88J*GU%Q5G??$WhYhpSVXHl6z&Ezn!?TT{drNU-MhDy8m3<_Q<;{SO3TqzqYmH?atc`QBR+yF?UTn6ddub zYMJ*9@u~~!zTMgOEv(~6^o}(fH#297H)*@Hy*2x=^tEfk@1;5jcuwu3UZ(ivH`&L>7|4s@QPSZVHZ*p~I>8;FUuiUwYCW^at zV~?y%JR1;R{8MPX_q7w>qhe*}pZGI>`>SXx-xpnT<#=Xt7tg=LJAcCNhcnz3uTGw2 z`o=AH_pYBstY>_ppG}iGE*)#TIL*;#>7AIyMU`f68>ep2GFf$Nq3)HgEf+tfFO154 zt#NV9%o{;>@2oMskX>YLW&i4z+wJq+RqnUXpYW^Qe7EVup3KSLJQi$mNZDp31dX;I)n+^9Ccn8ejeUj$+I@Ff+~$RciaFVy;eT_h zscZgqsn8iux6Xh4V#49hwWmV1u5C_!e{E}+mDXzQqtkEwE1G*vd~NLA6EiZcee}ZJVWN_LJzS8&U zd!}TD?!3F!Jo@h5-{;SG)joBNRjyvBTH_zxm-mY41k07R@&~R&Z~t~h!!1L$wf@H2 zH``499J-uWy!+M<0kv?}fSqcuTE%Wp*w$gaptSaO+Qh3@rOiuOqnh_zUio*$zmRsZ zI}r=swgi4Vz;5;Y<$?#-)`Z!b8S|h=GXnRU*&)OKW)k{;jJsKq+dAYpv}LQ zAxd$}Kar^U4%*ynb+$NVxc>Q)obmKWCeK=lD0v5O$Jb)tR~z)j8}xO|?{iqqv3B~O zD+j81bdP>Gw!oBSt^NX0gRl0_mb=zTeY(+5`CIV*=?@)3TjD-&Tz;?kIs092@qU}b z*+t%lPjv1ZE34JKivHJ8-E;VY5%1c^niK33^mJwJ5FRn{?lOX%6Ry<04VX0u$ zf+y^4m+}wqHI8x&`^{aDFBm1h!1T1yj=cHjHm=DyB3V(@mpQXp@K}BRp}oO({M{N7 zz8Wa=-kp_RcmKoQ96q;{$|IR_A6w?T{W|Y{YMa=?(=w|bO$n7OowsR0$#aINV@sax z-27=NKtomdi@lmj6>$d7kmvRoASKMj;^jw!Uf27Q@wH$xeoPXfz{bN$8c(%TJ zO~A%~pD$ccUwdMbVf#Pp_wGv`e`EB#v*MBZwbqWA6QcN;g%;)A-S%B4llAZOeU0W` zTkeSG9BMikmL&6tO*qU#<>P^ekNIqNoK1?~vT2w6(gf>?O}u}cwdZbV{X6G}#LGL6 z&N9R;QRP+Tdb2O%wMDy!qaDw5{y!cT`SLSj9376|G*g+tnzOB~RsLf$%fn)x^(-F@ zw5rvl44z;3S(n1=cmKEhACt$y`3xdAb$E0e9`Ac3P}24AD9?LmHKU{oMq`bI3Y#iU z9(6q@o}107Gp!=n?yUT#Ny+gWx_(L|R|r1du}A-c`kE-?H&*3#2mgNZ+3WaaW`2;c zP1)4N=Q-V$tac^-`+vU7#O}88>!&x97B)9~Og^#eK!DHJ zueE8VQ+fj)JhhzAdBAAj3qQl!bcuXL)}jM#aStZUzMwGSx5dJF6IPx#+SA#*(Q|9a z6N5Pi!Zzh~g?;zA*SEz|XS1!}qQYvvV{oPr$++HTH17GH{|9T`6$@_B?SE=CYcEQZnxJz=LD~zH} zY@GXS<|>=xY74cJR*4jEIS?}Qmr25^q8#ZL?&UkP6fd>S*wT^ga&x(tQ^lF@ev^*h z7cZTEZ+g##l_!oYdB=32`pxC-6Sp*oO5GBhIIZx?W$%AyC@-w``7Enqp7Ou9w)$9s@3oK=|F{I-+0~}!rmRzRm5hc;^My-3EUZ2OCvPp8ek$2bGxN+H>+Ih7i_Y`P6?O)u zt*v{%ONsA>l2dz=wI1tdpT;RZ6a5{}rE#3fZ)?)-TGdnCRzw@fJHKgkg( za8$%dWoK8xCp*bWdwO2$Z9dZYt6fQE1uVag|AHd1MEVB z*3aF1W17xHe%{b-89rtAk|l0|^H#f^Z&UG0v+Q=~G3hUnZa8 z_ZDh$tBsudP*CX5**Tm^mlxkqKe2Y5rV?lEBfZHzi!&Z3zN^#NHRX!7?q<2NGvYJW zOp8qr6kp3TO(8k>Yy)HEKJ`C~*X!N1pSF+dvBB!;ho@M|C-v+-9CK-};xhe&>#`5S z-dr}%$-T5#|8(X3xhL;Fd|`av9VO$c{W2~>ZL9jB~K~F)nb#U?=w-eKWgIr;lYf* z62EMpUFzaku613vrSsQ`^CeTKRLt`B6%P5h=j_F#6P--+v_!TmJrmbvy|nXTxY(QS zK7~tB-s`HE!ukzne7!lTBQi}RZC!Md-Mz%UQ*CQ)rnK55YHzXAi1}uaEF9Iy+BQui z;6lA?^sJuSdfb-hDi>`A5O|H+rR9_nUs%8 zlGnCGYn$slR8JbxpRs;rw|~mt)-|-n$C_TmD|styX#39b0L}QuoE+%fxQGwm)I5kGhj* zEVt;Il{kNrl)TotgrHTebvgP5pA5rV-!OW5oVK3#M$!JQ@_)t0N8j$S?z78T;dEk3 z@VOhGCT(clSN>cgU9y`b4LH-xGa8!*Wg4HzkM7Jwey_Qd6Jv zEN1!kb|r7*3r<;ab#=};o@#fsH+)mpyOosvxFzFWxmDb;3Wdp=PdL6@Tc;tPdc=#f zw#ntqqWEI}X;Yrxa4CGucDe8B&Nm`bcB|~XOuo2^N6*~&RHA*&1THhp!j#1B&s*-k zl1!ECVB?kam)sd5d0A)m_8)O4^eeB;$kL7Ohv$|+u+ zX#Z?uQeXLwRE7DE>w@;F{*rW@aq5%y{Z3=MC-05+=-)hgR&vYdn)PR<%&Okt`iX|ics2XrW$NtTC6UNFT)7uUzdd3D_l-wWRcQ^IeEaj8uTb^}I zeIj!x+Cx&iv2b>2%CS>2X4@{!b&j0->8C)2S|ZQV1KP&!MyWD|G1sqns2hqrIMOoj z+@~8l*&i(L&;GLT2}9SJKTA~^^V^Q6-Dnf~z@yvvELijQrw6V%Z#jLtO^SGSo)$Ap zR^IyXlSsp-A5$N_+>yVrQ<(9*Uc5~O94M|ET%>U*H6ikrZ z&Ud?8_Y3Q^fTBZto{CI=^RTZ#`}O6b-j)0{QO9nyI=Q_JDv)ZM`^0 zab}tM>A2`L)%XvqUmt0D$KpIqsO(I5YovXEjBB#l)5Q7S zmcCOLl=QsZow4|ZlDwTt)Te!RPegt#sjZrn`7tTt=J}IC$;r|I8fx>>_r?}v`ONA$ zm2_6?r-_-VY_(WW0gA!pAMeBDcAf$k6YT` z@QczZ!@eVt9W$;npB6T&pR*-TOZvaup8SnByE@fel$LiVX>;rsm@+!d{et$?ptJPZk#jG*8f@b zo_~KPF1h)BW4>p~50{HKZ<$m??)&b%PSWnHyGqOEBO)FlGXqL4WKWA$+V zUs&A!tJ+pR`)X~^%Vx2;Wf4a*KX=S`N$Jutd2X3;(sC334WZsgzS&&|+3#2#evm$6 z%K>(+#=t(EyG5tCR()ujk;b_Hz=P#As?Yyii*!rT_#xA<=(+Brq>eL8-kPV3A8`BZ zofGMDT{Sq<;7Ny~cdp@^*$h?6PXlJ2ocl;7VS;%inl6qQ;tw>v>~@9B?>D}QcW zFzfKs#|DzgnQw}Zsnuz23Aw?+JAISN{0WV3?##;g-PHS`r0bySxo2~~wJNvTuZuWe z7%;)PtUK>Z-9eo>sYS~12}NwVC$`_XacioEgV+t>O-eccCoVkk#nG_u!1JI}{2TVS zHztRxxG=w0)0X6@IuQMFOS9LZpZ*ti9lKS&S}-cIr}ov|$Gj~@kNZv6*0Zmb&e@oj zDf3#W<&nU=#BDuW|FdVrZf#8B4F8_WZeQ3HYPMvvP1)R!(`vtVxU0U}b;L6=qHwFX z<^QgSsS3-gQuN6L9mnI9Euor?RkI$kvHh9Ue@EAu(|yX6Cv&`~?wQrD zA6FsyD3i;0VSjkvlBH*vs-ueY>~AjeJ|pyF!E0sb&-+{1Pv@{FuQ}+_s&o6`p6o9k ztJwAao|(1a>Vy4_b<#G6d{jQ|TN6^G!`jMX)BHGov+IL(x0T-S=7?VMGT@@O$)=>q zijS*Wc9t=2{Cj4*>C8N@owF81Zi`M{7WpkbsUc^{x1LmmQDqH~V^XBUkqv&|m&q{Oaq|0p{B%x9$96K0 zkxYoXO!lI%Y0;U#jk_wn3nULMeYxkU^c;?B8d-B@N`6~zvmvY=-|xa!lte_g7=dF+xZ3>CWOeqCl~;bqsirNH9NibIndb@biD{&>2GFnsDM z?oY{D@JGZ=CSBw5KA)ozM>)FvPNbAmnh5UKL~J5GJ0U&n)rSR%fSQU+XO;B z%sgk2BJe~eKp>-0D>b^a)R>F^S+v-7$<%p`YS*SE#XqmSe>F*dXEwWw+k?r1KQC3h zSuy)kpHAngoxgsnm}SjVy9Wt z|6JY_)ynK}ViVU|@2)j_0t9|c%XP3VV!7x&KVZYTHkH*IjOw+c??*WVcSa^C22T)} zyu@ry+j>UUY58Fo`Nu7VXC%!qQrs(Ncj+uFEenqhf*JBF~GoO3B zcV+6MA2k!--%Z*k)V^=}%qGEYevztuwJ+WFS$y`J`q1^~gp<4x?#^eX?OD9I=Fs|I zYO3#9;ypWOC|PB?$^^IwY_5A#M|*0LV9?1W3u89vKff=oZRr=h_V|vFH*Z;w`84K~_8YJoot#smW*XNiY&}bD znX=!kO(zxHEKajLTzKtBV#TZUc~bA~PX3ZeyYz(Nu*B}-CzHiC-JZR9zv5{xyB6Wi zC5uIxmetr#Kij;?zpZA6+cNJ=A<7%n2_)3MM&u@Gz@8>8#Uus{KA8lu2dQj2BY+Y(!#pJarN&Vupo?6Q~ z#rGYR{Q2c%<;4cp*&j7|=UkID<2Dlb`JnO9du|Ty&oLTLXWTiFuJ|lN@uc?q%>stp zo4zFZME33Rsud`HGHE-T^79w(a`)}&HcY?bA6M*CoU}2jY1Nv8>kC*WUT?a?@jNp9 zm}R_=zSt?j;_F?3Y<&Bbm)tsTxSHwsy<*;zHv-!B2QeI~)VY~|&wS;Py4D?TNqYN^ ztd;q_r698?h8j@uI%-ON-k}Wcb$qs1TOvx*pYo@z4AS&d=Q8zA&YmIUZL_Usy6(~=youVg4~5#R<%(byI^Pea$r z%w?To;FXGdQC*E57t@}UA6xDig)nYZf{g&sZczu|v%JwomvGa6~{^Ob}9{X08T^Fr>F}tzh7?)$FO%OH0q;P+F#%d8%ud z_0ktd!#=)$cuCaqB#V9M98)19gTCU^QAhcu(6-Ck#~$8(uUO2w(?cMi->uMm}=H}RO(Vd2Z&-&E8vj#^J?pAg-nVVM#9Zn7w{zO%^k3$S>p%Z8 zzp#JdzrVqMe|P>n`|AFhf4pDwTfW<0+i$r?{`LKc|8)!M9ba$%P|5o6FVjQUih7s- zVqf2T@8N$e|2n?)@$oP3C;a>C^q>aA=TdqsK3BR;oe}lYDeaDx> zUoGs;KmMWiPpf6}(d-xI4=-FT`gPa2q9H%(znuSpp9da<`pBPnF7c?naPqJ3&)NEn z&NInKH^+T>Z}3PZmcjS&ukF3x9n#36xUce!cS-q|_q%VHm;G{EaX9(J z?XDoVYmEytW2=o)wwdOBeLc(l^nKN(XKu*Y&A$3pl70GbX$k2KMn44mWSxHm^W8Zh zIoa^f?bnMIru+U4h@T(I^_6{JQmS8aqR-8TyuS`_?3jIn|JG&=^@i`cd%o*lIk_fJ zbII$jedUMm1lQz;{+;@-@PD($_GP6z^6Wk^RD>0r34OzS^=|pUu$A^)QzkAx^;f=O z>HoH8`6>U>&fcH%(>mp!*qQr_enuPB3wt;=e7M{Ez4Z4QLAyCOUa4+q@nU0opAcU( ztJ5yI?dxZuL;F|X7T@rm-A(fKv!461d-#{nIKbIfQq6cf{lmZVxxeqbyEC-TE136O zw#q?L{?)fRpZC16F#o{OR~fV2T`=vYL#2x#k%wS ze~0brJ}tqo*xT%X|JkwliO-_@uE!G;7tJ~FTCu0Ba{2!yO;w3!T@F_+nf*&}ui>}( zNB)WTe*FE{U*(st!X3po_W4iL&pUpfKIggW5%Vs=*X=j>=cG#hp6l|@SR?$l{EHvG zW_JR=?)&!6KIq*3`x2UKlvcB7^)Gm!s8a70B3dke?2CLkSLC@xtBl%wcKm;D%IW&` zUg(bp?Ehw)|2%Pv|6`G4YAs`>q|rBKt6yHqOaBKow8pV(9AmMtJYt~~>3lTaA$Uq#mejXf{4&}w>$Tv!`Rt$KU(N8GQreQk zJZsLROKqo)%Sinbl6qt6`qWwLM&ak|+Y5ia|26$zbA9azo-MEIpL-p;@bvzCWf$&J zAK{$W6Gi((^d1VjZC%(>8s{$gYlD#3rDOxaOZ+AK|3~kuWpMtsKVIcuvs7=+nSV_D zg-$mV6`z67^R%pK6}^SxfwCgyoslb7 zD7Qb9d3M{Rtv=_}N=J#Z;zX{`zn8l9&vssVH00&F*;y?+dZ(<}5m3r_bE)A1t%Vr^ z?>7C`KIprt?Bb#)A*CCQZHu_)ofr0en=najkC3*joaXjRr-N8#8ysbBi~hENZKZ2mm!}$+do^Wxg9a8#l?r;7#2ySW>#-}0(frK)-)qJ%rYQ!kjzA_&V~o5Kk4#IQ*AqPB>C~;;YG1th ztIxXoD8q#OL<$>xvyOyvrw=5`u&6V!`o-LAH3rz$JYKMmWSIg>Yx0E zkUpl&OEa18xq2*BcC=cSGV||ZW#Zs-m>1N6A2hSxgzm&Oz-%npq zGI2}1ztV5%+DaXtl%lWq^51TjyT$h^FMMJ89G0H}2f01km(OI1`{YZEcvSG%K ziiW_iu^&B_vX?EF(_S(6Kq31=_3lGwlmG0U;CF&?$NvCF7JIHd^FNwX&i)K9abJ)n zw=&8+^qE3PuR`dCb$na5?-u@_$$l@RLr-0KV(7*8ua}oc){L#| zRQwFv_ASpg9_S7Hx0u*u7Zf6jI#iu@>S;yJ?-Mw!^ULz>gJ%Uv#ujQ54ppWfn(D}7 z+`;%KJL068N1Xx><3Fb!dE<{-wG$P6cD@e^2;270%8K;^_i-yfE3t{r@8=!-;T?SF z(8MJ#lUin&&p+VOdRx8Yq~4G2uRKk@Gc&B7dUPA4PMzz(xJ*04Q+(>2+9i)O%Xt5N z^_O}!aowU#Q+Xm@ZQ3-gDoitG(zcH~et1pY->um^&wY-QS#wUPl*h94DNk}PNu8YL z7k_Y~{fX{k_hSYRe-tLXIp8$UeO|)Nw8DfF&!^a)_7+u!OZ(WahjmAPSrDh)5W%@Ps_V6L}}^{z=)oG&6BIG zl~sv7z3E)Z^<|%ri`$0v{hg}noYUqqEWBd%p6htVngc9zQkL~{X#I#&w|zasEyila zAI^>LY%dv&H{`834RR$BMj@4HY^qWq{x$@dZdK$s(Cl(+J?VuGgA%+ntRv3 zaA2%!7dRbp%CMd5Q^g%g;~&$`@T&j0@PuDwR=HP4(`OsMfG@psvZWl0ts2*eek?Dz zrZFjygRW~-D;m2}O61?9Uo2TG!*;ML_~LJm zvM)mW7B3Xg%9-(uZ)#-PgnPBmG&i_uhdF6z-aM;x%CmV>{-+J52kmAu%_uq@620w^ zx8d`N3lFO|dS|??-E(!GZ<(y(Y7#2)9(hcV+@o10*z6j9GgA6)yh}%{ zFxwMdsSnI66sLdqDUqdj=>GXBXJ+XsSRWUW-7!Hm^wJOY6=Dyb*sNO<<20+yvNz&o zeOn{XuX(|z_RKVHy{^hG#v!lu@^t6(`I_GkOnA%wT0i{4ZLb^eL#iIytxnm*^8cBr zEX!tRae*s3QId^|K3>+CW!aZK%_O%Vt+3#jVq)B1ecNMy*Pmz1sf<>3`SSUc+Vafy zVkUO&AKU$xu6@8Q)nvOcWvaQyfq727)28G+5aVXQVKK!+sBK&{$s*QaxSKU3Rqu1gQLo?P_xeUlKM%%t4vS#|7GcBvz_>IJ@e*jg|JW8+1_ypnJ--O zYJ>YjcFup7yW;GY94-8PNMY(SlamWyX?iWc@b9|vfzukF3VCFfhA%1%>8$s+O#L)r zQuy4YRDbm)v;6pLS8E*J7``Zt05EZV}pvrraY$&roOiH_{|k+ zcyx#15zF4w{H%NG9>3>&&+{tt#O!NPe}X&eznDIne^A79;(__W-z?6~Uh%V4IkQIW z@Nbc*+l6!L(x%otS~qF3CY@C{zU=MEPd6I%^mUl)H}yt2$=j#pJX!IDe{tN4)@{ie z-)+N8S2r`p! z-6A&KS>w4(SH@C{yYHb^TtREmIsEO%|r)u0JES(dP2WliE7-9SxgwQzqUkKDCd{@>Rl;3=X`l5+-`9c-g_Gvr&f02VP-Ydye8XMv z_m0O~Kc(_iN;j=oW+!Cp-|qJMX7g+N<^Y^pN#`y4!YR}zHF6%g!{9^ue9@+dy zpLw0%&%V!47w#rGh5e7;!nSFmq94DVVLGAmt1Uy){k39$e}Mn=D^~kMR{fLv;IICn z>5uV!hI6YsHcvQU*>mrM)knvVHhpDvi}>#?+E||b`hHdKj)U7yd`{edSFg0|t*-*_ z^xp6J8eKX0bRw4dL;U}6c^{~Xp8Q~qw6H^-lWCw|Yd z)GmjM-w(eLa$O*@?qig-)#@jvtR0j5gYGrg%{{G_`QbI=u?B2AANxxo&-dy=50s&Y$G@*A_?V9=)3A z%Fef@N^Po)>K5VOwN85#_Mghtet7S?&RP3-(cfiULi4X^yisos-*!vj^h~Am@1HC< z%@nq@#OcW2dv{#CzU;NzVaWEoRw_0AT>rUse_IxA@Yb0qx+8z{x8%tio?lvf?RvtT zZ*kZD^PI`f;Z)x;`@uiYH7u`f4HGgheD7wnp6fjO#?F=#2Rswj7WtgKHAi<6|8%i> zPNR?gJO30dh+^G0X`<4NE47cO)a{!ftNQ2g+5h+R zhj)G3m)*TTdaBIJW%1=Lzr`dqg=&@>sc!VBC=fI%xN7u(!62sMZ7MVGG_#WnJZ3(+ z{_Q*GnrlD4Z8ZP&;6T^*n8G7m=8F6Gx!ds*|*Xm@t~o2#$ZhvdJ${Cz{|t)%^$ z>F+|-U2L7ay|QjbhROsNO)@cZyP(fK`P$1}=F028udqDoRL8G;NBKK6+znHM~{ig$tk|*O&yxF{B&aNZH5$C1v+4rq^$aDYc ziKDU>j(Q%I`}Unb^r+yFbb4Tu@Q!QNbGzO@Sa8oe>#>2_C+kSf`F(u4wc7J(lZ1ncIPU)IQ?9vi z-(4eqg6NzjRrAIFJ^Ar|$0qLP$v5mBs?R3 Date: Thu, 26 Nov 2020 18:32:31 -0800 Subject: [PATCH 102/162] Update servers_v6.json Add Atanner Gaming server back to list. Updates are looking good :) --- servers_v6.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/servers_v6.json b/servers_v6.json index c627e00001..3bdbd9bb9e 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -2,6 +2,10 @@ { "name": "mindustry.pl", "address": ["mindustry.pl:6000", "mindustry.pl:6666"] + }, + { + "name": "Atanner", + "address": ["atannergaming.com:13000"] }, { "name": "C.A.M.S.", From e39eceee283f275de647ed8535f2c4f7c507b223 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 21:48:45 -0500 Subject: [PATCH 103/162] Allow research even if sector was attacked after capture --- core/src/mindustry/core/Control.java | 2 ++ core/src/mindustry/core/Logic.java | 2 ++ core/src/mindustry/game/Objectives.java | 2 +- core/src/mindustry/game/SectorInfo.java | 2 ++ core/src/mindustry/game/Universe.java | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 7b4ed65208..2a1c79f107 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -334,6 +334,8 @@ public class Control implements ApplicationListener, Loadable{ state.wave = 1; //set up default wave time state.wavetime = state.rules.waveSpacing * 2f; + //reset captured state + sector.info.wasCaptured = false; //reset win wave?? state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 210ca1eced..abcdfc85a0 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -267,6 +267,8 @@ public class Logic implements ApplicationListener{ if(state.rules.sector == null) return; + state.rules.sector.info.wasCaptured = true; + //fire capture event Events.fire(new SectorCaptureEvent(state.rules.sector)); diff --git a/core/src/mindustry/game/Objectives.java b/core/src/mindustry/game/Objectives.java index bf306cb957..31fc92e1b3 100644 --- a/core/src/mindustry/game/Objectives.java +++ b/core/src/mindustry/game/Objectives.java @@ -59,7 +59,7 @@ public class Objectives{ @Override public boolean complete(){ - return preset.sector.save != null && !preset.sector.isAttacked() && preset.sector.hasBase(); + return preset.sector.save != null && (!preset.sector.isAttacked() || preset.sector.info.wasCaptured) && preset.sector.hasBase(); } @Override diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index e8aa42262b..50425ec4af 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -33,6 +33,8 @@ public class SectorInfo{ public int storageCapacity = 0; /** Whether a core is available here. */ public boolean hasCore = true; + /** Whether this sector was ever fully captured. */ + public boolean wasCaptured = false; /** Sector that was launched from. */ public @Nullable Sector origin; /** Launch destination. */ diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index b57c1fe337..9c3a614350 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -180,6 +180,7 @@ public class Universe{ }else if(attacked && wavesPassed > 0 && sector.info.winWave > 1 && sector.info.wave + wavesPassed >= sector.info.winWave && !sector.hasEnemyBase()){ //autocapture the sector sector.info.waves = false; + sector.info.wasCaptured = true; //fire the event Events.fire(new SectorCaptureEvent(sector)); From cf16983b348135db40b993868e9f6db4a1dd7e7d Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Fri, 27 Nov 2020 11:34:53 +0700 Subject: [PATCH 104/162] another new lines and fixes legacy research, Guardian = Penjaga, Purpose = Kegunaan, reconnecting, etc. --- core/assets/bundles/bundle_in_ID.properties | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index e67700b398..e28ebd7108 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -23,7 +23,7 @@ gameover.waiting = [accent]Menunggu peta selanjutnya... highscore = [accent]Rekor Baru! copied = Tersalin. indev.notready = Bagian tersebut saat ini belum siap -indev.campaign = [accent]Kamu telah mencapai batas dari kampanye![]\n\nHanya sejauh ini yang kamu bisa. Perjalanan antarplanet akan ditambahkan di masa mendatang. +indev.campaign = [accent]Selamat! Kamu telah mencapai batas dari kampanye![]\n\nHanya sejauh ini yang kamu bisa. Perjalanan antarplanet akan ditambahkan di masa mendatang. load.sound = Suara load.map = Peta @@ -149,6 +149,9 @@ unlocked = Konten baru terbuka! available = Penelitian baru tersedia! completed = [accent]Terselesaikan techtree = Cabang Teknologi +research.legacy = Data penelitian [accent]5.0[] ditemukan.\nApakah Anda ingin [accent]memuat data ini[], atau [accent]discard it[] dan memulai ulang penelitian di kampanye terbaru (disarankan)? +research.load = Muat +research.discard = Buang research.list = [lightgray]Penelitian: research = Penelitian researched = [lightgray]{0} telah diteliti. @@ -229,7 +232,8 @@ disconnect.closed = Koneksi ditutup. disconnect.timeout = Waktu habis. disconnect.data = Gagal memuat data server! cantconnect = Gagal menyambung! ([accent]{0}[]). -connecting = [accent]Memasuki... +connecting = [accent]Menghubungkan... +reconnecting = [accent]Menghubungkan kembali... connecting.data = [accent]Memuat data server... server.port = Port: server.addressinuse = Alamat sudah ada! @@ -305,8 +309,8 @@ wave.enemies = [lightgray]{0} Musuh Tersisa wave.enemycores = [accent]{0}[lightgray] Inti Musuh wave.enemycore = [accent]{0}[lightgray] Inti Musuh wave.enemy = [lightgray]{0} Musuh Tersisa -wave.guardianwarn = Guardian akan tiba dalam [accent]{0}[] gelombang. -wave.guardianwarn.one = Guardian akan tiba dalam [accent]{0}[] gelombang. +wave.guardianwarn = Penjaga akan tiba dalam [accent]{0}[] gelombang. +wave.guardianwarn.one = Penjaga akan tiba dalam [accent]{0}[] gelombang. loadimage = Memuat Gambar saveimage = Simpan Gambar unknown = Tak diketahui @@ -355,7 +359,7 @@ waves.waves = gelombang waves.perspawn = per muncul waves.shields = perisai/gelombang waves.to = sampai -waves.guardian = Guardian +waves.guardian = Penjaga waves.preview = Pratinjau waves.edit = Sunting... waves.copy = Salin ke Papan klip @@ -509,7 +513,7 @@ launch.from = Meluncurkan Dari: [accent]{0} launch.destination = Destinasi: {0} configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}. add = Menambahkan... -boss.health = Darah Guardian +boss.health = Darah Penjaga connectfail = [scarlet]Gagal menyambung ke server:\n\n[accent]{0} error.unreachable = Server tak terjangkau.\nApakah alamatnya benar? @@ -760,7 +764,7 @@ unit.items = item unit.thousands = rb unit.millions = jt unit.billions = m -category.purpose = Purpose +category.purpose = Kegunaan category.general = Umum category.power = Tenaga category.liquids = Zat Cair From c545e03852fceb3ea10fc492f896883efdc4d8af Mon Sep 17 00:00:00 2001 From: Thomas Widyantoko <40286070+DaGamerFiles@users.noreply.github.com> Date: Fri, 27 Nov 2020 11:47:05 +0700 Subject: [PATCH 105/162] legacy research discard fix --- core/assets/bundles/bundle_in_ID.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index e28ebd7108..73b6a2505c 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -149,9 +149,9 @@ unlocked = Konten baru terbuka! available = Penelitian baru tersedia! completed = [accent]Terselesaikan techtree = Cabang Teknologi -research.legacy = Data penelitian [accent]5.0[] ditemukan.\nApakah Anda ingin [accent]memuat data ini[], atau [accent]discard it[] dan memulai ulang penelitian di kampanye terbaru (disarankan)? +research.legacy = Data penelitian [accent]5.0[] ditemukan.\nApakah kamu ingin [accent]memuat data ini[], atau [accent]mengabaikannya[] dan memulai ulang penelitian di kampanye terbaru (disarankan)? research.load = Muat -research.discard = Buang +research.discard = Abaikan research.list = [lightgray]Penelitian: research = Penelitian researched = [lightgray]{0} telah diteliti. From 40dd3d567757d39f54bfd700d961126e215a631e Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Fri, 27 Nov 2020 10:07:38 +0100 Subject: [PATCH 106/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index f40342a6e4..00177653b6 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -149,12 +149,15 @@ unlocked = ¡Nuevo contenido en la Base de Datos! available = ¡Nueva investigación disponible! completed = [accent]Completado techtree = Tecnologías -research.list = [lightgray]Investigación: -research = Investigación +research.legacy = Se han encontrado datos guardados de investigaciones tecnológicas realizadas en la versión [accent]5.0[].\n¿Quieres [accent]cargar estos datos[], o [accent]descartarlos[] para reiniciar los descubrimientos tecnológicos del nuevo modo Campaña? (Recomendado) +research.load = Cargar +research.discard = Descartar +research.list = [lightgray]Investigaciones: +research = Investigaciones researched = [lightgray]{0} investigado. research.progress = {0}% completado -players = {0} jugadores online -players.single = {0} jugador online +players = {0} jugadores +players.single = {0} jugador players.search = Buscar players.notfound = [gray]No se encontraron jugadores server.closing = [accent]Cerrando servidor... @@ -179,7 +182,7 @@ host.info = El botón [accent]host[] crea un servidor en el puerto [scarlet]6567 join.info = Aquí, puedes escribir la [accent]IP de un servidor[] para conectarte, o descubrir servidores en tu [accent]red local[] para conectarte.\nTambién se puede jugar multijugador en redes LAN y WAN.\n\n[lightgray]Nota: No hay una lista automática global de servidores; si quieres conectarte por IP, tendrás que preguntarle al anfitrión por la IP. hostserver = Crear Servidor invitefriends = Invitar Amigos -hostserver.mobile = Crear\nJuego +hostserver.mobile = Crear\nPartida host = Servidor hosting = [accent]Abriendo servidor... hosts.refresh = Actualizar @@ -203,11 +206,11 @@ trace.ip = IP: [accent]{0} trace.id = ID Única: [accent]{0} trace.mobile = Cliente de móvil: [accent]{0} trace.modclient = Cliente Personalizado: [accent]{0} -invalidid = ¡ID de cliente inválida! Envía un informe del error. +invalidid = ¡ID de cliente inválida! Por favor, envía un informe del error. server.bans = Expulsiones -server.bans.none = No se ha expulsado a ningún usuario aún +server.bans.none = No se ha baneado a ningún usuario aún server.admins = Administradores -server.admins.none = No se ha encontrado ningún administrador +server.admins.none = ¡No hay ningún administrador! server.add = Agregar Servidor server.delete = ¿Estás seguro de querer borrar este servidor? server.edit = Editar Servidor @@ -230,6 +233,7 @@ disconnect.timeout = Tiempo de espera agotado. disconnect.data = ¡Hubo un fallo con la carga de datos! cantconnect = No es posible unirse a la partida ([accent]{0}[]). connecting = [accent]Conectando... +reconnecting = [accent]Reconectado... connecting.data = [accent]Cargando datos del mundo... server.port = Puerto: server.addressinuse = ¡La dirección ya está en uso! @@ -694,11 +698,11 @@ stat.abilities = Habilidades stat.canboost = Tiene Propulsores stat.flying = Aéreo -skill.forcefield = Zona de Escudo -skill.repairfield = Zona de Reparación -skill.statusfield = Zona de Estado -skill.unitspawn = {0} Fábrica de Drones -skill.shieldregenfield = Zona de Regeneración de Escudos +ability.forcefield = Zona de Escudo +ability.repairfield = Zona de Reparación +ability.statusfield = Zona de Estado +ability.unitspawn = {0} Fábrica de Drones +ability.shieldregenfield = Zona de Regeneración de Escudos ability.movelightning = Movimiento Relámpago bar.drilltierreq = Se requiere un taladro mejor. @@ -842,7 +846,7 @@ command.attack = Atacar command.rally = Patrullar command.retreat = Retirarse command.idle = Esperar -placement.blockselectkeys = \n[lightgray]Claves: [{0}, +placement.blockselectkeys = \n[lightgray]Códigos: [{0}, keybind.respawn.name = Reaparecer keybind.control.name = Controlar unidad keybind.clear_building.name = Eliminar construcción From 7e5c69a1072af89e30975d85893891e94347cc74 Mon Sep 17 00:00:00 2001 From: Angel_24 <57916262+Angel-24@users.noreply.github.com> Date: Fri, 27 Nov 2020 13:07:38 +0100 Subject: [PATCH 107/162] Update bundle_es.properties --- core/assets/bundles/bundle_es.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 00177653b6..4c0ded36a7 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1303,9 +1303,9 @@ item.blast-compound.description = Usado en bombas y munición explosiva. item.pyratite.description = Usado en armas incendiarias y generadores de combustión. liquid.water.description = Usada comúnmente para enfriar máquinas y para procesar residuos. -liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o expulsado a unidades enemigas como arma. -liquid.oil.description = Puede ser quemado, explotado o usado como un enfriador. -liquid.cryofluid.description = El líquido más eficiente para enfriar cosas. +liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o disparado a unidades enemigas como arma. +liquid.oil.description = Se utiliza en producción de materiales avanzados, y en munición incendiaria. +liquid.cryofluid.description = Usado como refrigerante para reactores, torretas, y fábricas. block.resupply-point.description = Reabastece unidades cercanas con munición de cobre. No es compatible con unidades que requieren energía. block.armored-conveyor.description = Mueve objetos. No acepta objetos si entran por los lados. From 8dd66fb94231a7d9b5c9c86a34f778fb4a9c4b1c Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 11:56:01 -0500 Subject: [PATCH 108/162] Campaign tweaks --- core/assets/maps/impact0078.msav | Bin 22313 -> 22317 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/ai/BaseAI.java | 7 ++++--- core/src/mindustry/content/SectorPresets.java | 2 +- core/src/mindustry/content/UnitTypes.java | 6 +++--- core/src/mindustry/game/Universe.java | 8 ++++++++ core/src/mindustry/type/Weather.java | 2 +- .../world/blocks/storage/StorageBlock.java | 7 +++++++ 8 files changed, 25 insertions(+), 9 deletions(-) diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav index 44279fec16e1fcceb428922fa8d9480d9b7698e0..08a71a5673265ca56cdfa9e520ffb7eb899a92bc 100644 GIT binary patch literal 22317 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

cGJBxDz%@=Nb)2f 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 u.team == data.team && u.type == block.unitType); - //create AI core unit - if(!state.isEditor() && !Groups.unit.contains(u -> u.team() == data.team && u.type == block.unitType)){ + //create AI core unit(s) + if(!state.isEditor() && coreUnits < data.cores.size){ Unit unit = block.unitType.create(data.team); - unit.set(data.core()); + unit.set(data.cores.random()); unit.add(); Fx.spawn.at(unit); } diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index dbfddbc142..347aa05ca1 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -88,7 +88,7 @@ public class SectorPresets implements ContentList{ }}; nuclearComplex = new SectorPreset("nuclearComplex", serpulo, 130){{ - captureWave = 50; + captureWave = 45; difficulty = 7; }}; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 3dd1d1f20f..7295f1dba3 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -620,7 +620,7 @@ public class UnitTypes implements ContentList{ drag = 0.4f; hitSize = 12f; rotateSpeed = 3f; - health = 800; + health = 900; immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting); legCount = 6; legLength = 13f; @@ -651,7 +651,7 @@ public class UnitTypes implements ContentList{ bullet = new SapBulletType(){{ sapStrength = 0.4f; length = 75f; - damage = 18; + damage = 20; shootEffect = Fx.shootSmall; hitColor = color = Color.valueOf("bf92f9"); despawnEffect = Fx.none; @@ -671,7 +671,7 @@ public class UnitTypes implements ContentList{ bullet = new SapBulletType(){{ sapStrength = 0.8f; length = 40f; - damage = 15; + damage = 16; shootEffect = Fx.shootSmall; hitColor = color = Color.valueOf("bf92f9"); despawnEffect = Fx.none; diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 9c3a614350..0aa1407879 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -6,6 +6,7 @@ import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.game.EventType.*; +import mindustry.game.SectorInfo.*; import mindustry.maps.*; import mindustry.type.*; import mindustry.world.blocks.storage.*; @@ -199,6 +200,13 @@ public class Universe{ } } + sector.info.export.each((item, amount) -> { + if(sector.info.items.get(item) <= 0 && sector.info.production.get(item, ExportStat::new).mean <= 0){ + //disable export when production is negative. + sector.info.export.get(item).mean = 0f; + } + }); + //add production, making sure that it's capped sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item)))); //prevent negative values with unloaders diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index a9741b5241..bb6b444746 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -262,7 +262,7 @@ public abstract class Weather extends UnlockableContent{ /** Creates a weather entry with some approximate weather values. */ public WeatherEntry(Weather weather){ - this(weather, weather.duration * 3f, weather.duration * 6f, weather.duration / 2f, weather.duration * 1.5f); + this(weather, weather.duration * 2f, weather.duration * 6f, weather.duration / 2f, weather.duration * 1.5f); } public WeatherEntry(Weather weather, float minFrequency, float maxFrequency, float minDuration, float maxDuration){ diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index b7581b4dfb..10b3cc4820 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -57,6 +57,13 @@ public class StorageBlock extends Block{ } } + @Override + public void itemTaken(Item item){ + if(linkedCore != null){ + linkedCore.itemTaken(item); + } + } + @Override public int getMaximumAccepted(Item item){ return itemCapacity; From 8b6fc7f3acbd6e64430ef77dfb8e3fef3994b6cb Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 12:27:56 -0500 Subject: [PATCH 109/162] Fixed #3628 --- core/src/mindustry/ui/Bar.java | 3 +++ gradle.properties | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/Bar.java b/core/src/mindustry/ui/Bar.java index 8e3bd511de..8051b67678 100644 --- a/core/src/mindustry/ui/Bar.java +++ b/core/src/mindustry/ui/Bar.java @@ -78,6 +78,9 @@ public class Bar extends Element{ lastValue = computed; } + if(Float.isNaN(computed)) computed = 0; + if(Float.isInfinite(computed)) computed = 1f; + blink = Mathf.lerpDelta(blink, 0f, 0.2f); value = Mathf.lerpDelta(value, computed, 0.15f); diff --git a/gradle.properties b/gradle.properties index e5c7e5fe4d..e7a780230e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=7a2a357f6cfdc3725ce581093a0ced91f4474222 +archash=989a78688268c97cb3baa9e3342c6f44d6738427 From 525dc0cd7e2d991e10f892c06f59b264201fa77e Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 12:35:20 -0500 Subject: [PATCH 110/162] Added bosses for sectors missing them --- core/assets/maps/biomassFacility.msav | Bin 15341 -> 15380 bytes core/assets/maps/craters.msav | Bin 12359 -> 12362 bytes core/assets/maps/nuclearComplex.msav | Bin 14951 -> 14954 bytes core/assets/maps/ruinousShores.msav | Bin 18259 -> 18279 bytes core/assets/maps/stainedMountains.msav | Bin 16724 -> 16733 bytes core/assets/maps/tarFields.msav | Bin 15505 -> 15511 bytes core/src/mindustry/content/SectorPresets.java | 2 +- gradle.properties | 2 +- 8 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/maps/biomassFacility.msav b/core/assets/maps/biomassFacility.msav index bf16a3b7ea6702c93d2ecb4b0825c8bff05af87e..738d890f7032a728525001d20d8b4820d701bbba 100644 GIT binary patch delta 15114 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

yw{7*q|#I64|om_(}Qa4cAX?Tqat1|IXz{SLWEb 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 Gq#pnf;Uh!< delta 15074 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 HPPG64F?DYv literal 12359 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 Pd`|!T{J;Ls4?Pe$9uA;?{9TqLudj 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 v{(sN)`A>fnE|CKODR7u^ literal 18259 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 C`SADv diff --git a/core/assets/maps/tarFields.msav b/core/assets/maps/tarFields.msav index 1ec074997cb26e7e9fe1a4dcc0cc679397f51c05..2951ceef2108e49c08d0a63c120a15d34a9a9d8c 100644 GIT binary patch literal 15511 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

3Vt5twm=(JkGIKzj|Nk@{Chkb~+Ypu;=UY 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 diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 347aa05ca1..dbfddbc142 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -88,7 +88,7 @@ public class SectorPresets implements ContentList{ }}; nuclearComplex = new SectorPreset("nuclearComplex", serpulo, 130){{ - captureWave = 45; + captureWave = 50; difficulty = 7; }}; diff --git a/gradle.properties b/gradle.properties index e7a780230e..2599276717 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=989a78688268c97cb3baa9e3342c6f44d6738427 +archash=d0690313b33aeb5e611005f5a03516d2cdcec338 From d06b32c20b2310db73924ddd0edb04b3604017eb Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 14:18:09 -0500 Subject: [PATCH 111/162] Added boss to sector damage calculations --- core/src/mindustry/core/Control.java | 2 ++ core/src/mindustry/game/SectorInfo.java | 4 +++- core/src/mindustry/maps/SectorDamage.java | 26 +++++++++++++++++++++++ gradle.properties | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 2a1c79f107..4f4f45bd64 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -336,6 +336,8 @@ public class Control implements ApplicationListener, Loadable{ state.wavetime = state.rules.waveSpacing * 2f; //reset captured state sector.info.wasCaptured = false; + //re-enable waves + state.rules.waves = true; //reset win wave?? state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 50425ec4af..2701fc1dcb 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -71,7 +71,9 @@ public class SectorInfo{ public boolean shown = false; /** Special variables for simulation. */ - public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope; + public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope, bossHealth, bossDps; + /** Wave where first boss shows up. */ + public int bossWave = -1; /** Counter refresh state. */ private transient Interval time = new Interval(); diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 128ec3fcd2..cab8c2060b 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -68,6 +68,11 @@ public class SectorDamage{ float enemyDps = info.waveDpsBase + info.waveDpsSlope * (i); float enemyHealth = info.waveHealthBase + info.waveHealthSlope * (i); + if(info.bossWave == i){ + enemyDps += info.bossDps; + enemyHealth += info.bossHealth; + } + //happens due to certain regressions if(enemyHealth < 0 || enemyDps < 0) continue; @@ -305,6 +310,7 @@ public class SectorDamage{ //calculate DPS and health for the next few waves and store in list var reg = new LinearRegression(); + SpawnGroup bossGroup = null; Seq waveDps = new Seq<>(), waveHealth = new Seq<>(); for(int wave = state.wave; wave < state.wave + 10; wave ++){ @@ -320,6 +326,11 @@ public class SectorDamage{ float healthMult = 1f + Mathf.clamp(group.type.armor / 20f); StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect); int spawned = group.getSpawned(wave); + //save the boss group + if(group.effect == StatusEffects.boss){ + bossGroup = group; + continue; + } if(spawned <= 0) continue; sumWaveHealth += spawned * (group.getShield(wave) + group.type.health * effect.healthMultiplier * healthMult); sumWaveDps += spawned * group.type.dpsEstimate * effect.damageMultiplier; @@ -328,6 +339,21 @@ public class SectorDamage{ waveHealth.add(new Vec2(wave, sumWaveHealth)); } + if(bossGroup != null){ + float bossMult = 1.1f; + //calculate first boss appearaance + for(int wave = state.wave; wave < state.wave + 60; wave++){ + int spawned = bossGroup.getSpawned(wave - 1); + if(spawned > 0){ + //set up relevant stats + info.bossWave = wave; + info.bossDps = spawned * bossGroup.type.dpsEstimate * StatusEffects.boss.damageMultiplier * bossMult; + info.bossHealth = spawned * (bossGroup.getShield(wave) + bossGroup.type.health * StatusEffects.boss.healthMultiplier * (1f + Mathf.clamp(bossGroup.type.armor / 20f))) * bossMult; + break; + } + } + } + //calculate linear regression of the wave data and store it reg.calculate(waveHealth); info.waveHealthBase = reg.intercept; diff --git a/gradle.properties b/gradle.properties index 2599276717..c95e0534b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=d0690313b33aeb5e611005f5a03516d2cdcec338 +archash=2d451f0c342755ef84e609c951a8fca654ef41b5 From 968277477ad2247b8b9021c02b1ac6bdbd56d3e7 Mon Sep 17 00:00:00 2001 From: Wiki Updater <57631841+Catchears@users.noreply.github.com> Date: Fri, 27 Nov 2020 22:18:08 +0100 Subject: [PATCH 112/162] typo --- core/assets/bundles/bundle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 068068ff94..625c4a73c2 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1457,7 +1457,7 @@ unit.reign.description = Fires a barrage of massive piercing bullets at all near unit.nova.description = Fires laser bolts that damage enemies and repair allied structures. Capable of flight. unit.pulsar.description = Fires arcs of electricity that damage enemies and repair allied structures. Capable of flight. unit.quasar.description = Fires piercing laser beams that damage enemies and repair allied structures. Capable of flight. Shielded. -unit.vela.description = Fires a massive continuous laser beam that damages enemies, causes fires and repair allied structures. Capable of flight. +unit.vela.description = Fires a massive continuous laser beam that damages enemies, causes fires and repairs allied structures. Capable of flight. unit.corvus.description = Fires a massive laser blast that damages enemies and repairs allied structures. Can step over most terrain. unit.crawler.description = Runs toward enemies and self-destructs, causing a large explosion. unit.atrax.description = Fires debilitating orbs of slag at ground targets. Can step over most terrain. From 66918f032272c4c413ac0fbb0e7a59e23e8799cc Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 17:37:22 -0500 Subject: [PATCH 113/162] Campaign balancing --- core/assets/maps/desolateRift.msav | Bin 8516 -> 8827 bytes core/assets/maps/tarFields.msav | Bin 15511 -> 15520 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/SectorPresets.java | 2 +- core/src/mindustry/content/TechTree.java | 3 ++- core/src/mindustry/content/UnitTypes.java | 4 ++-- core/src/mindustry/content/Weathers.java | 2 +- core/src/mindustry/core/World.java | 2 +- core/src/mindustry/editor/WaveGraph.java | 4 ++-- core/src/mindustry/maps/SectorDamage.java | 2 +- .../maps/planet/TantrosPlanetGenerator.java | 11 +++++++++++ .../world/blocks/distribution/Conveyor.java | 2 +- .../world/blocks/distribution/ItemBridge.java | 4 ++-- 13 files changed, 25 insertions(+), 13 deletions(-) diff --git a/core/assets/maps/desolateRift.msav b/core/assets/maps/desolateRift.msav index ca3181301ad786177ffc465f04770cd4d123953b..06bb064d0d183e73cb9f7f701e889ad14d0a4d37 100644 GIT binary patch literal 8827 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%0DnHyhP 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 H%gGA?SdI9o diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 8b89e09732..d0995ca3a8 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -88,7 +88,7 @@ public class Vars implements Loadable{ /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; /** chance of an invasion per turn, 1 = 100% */ - public static final float baseInvasionChance = 1f / 90f; + public static final float baseInvasionChance = 1f / 100f; /** how many turns have to pass before invasions start */ public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index dbfddbc142..e84547dd5f 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -83,7 +83,7 @@ public class SectorPresets implements ContentList{ }}; desolateRift = new SectorPreset("desolateRift", serpulo, 123){{ - captureWave = 30; + captureWave = 18; difficulty = 8; }}; diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 6d82895b97..a20917c054 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -471,7 +471,8 @@ public class TechTree implements ContentList{ node(desolateRift, Seq.with( new SectorComplete(impact0078), new Research(thermalGenerator), - new Research(thoriumReactor) + new Research(thoriumReactor), + new Research(coreNucleus) ), () -> { node(planetaryTerminal, Seq.with( new SectorComplete(desolateRift), diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 7295f1dba3..ca74a26868 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1252,8 +1252,8 @@ public class UnitTypes implements ContentList{ mineTier = 3; mineSpeed = 4f; - health = 500; - armor = 5f; + health = 460; + armor = 3f; speed = 2.5f; accel = 0.06f; drag = 0.017f; diff --git a/core/src/mindustry/content/Weathers.java b/core/src/mindustry/content/Weathers.java index 0d5c47e56a..2006e6fb05 100644 --- a/core/src/mindustry/content/Weathers.java +++ b/core/src/mindustry/content/Weathers.java @@ -53,7 +53,7 @@ public class Weathers implements ContentList{ baseSpeed = 5.4f; attrs.set(Attribute.light, -0.1f); attrs.set(Attribute.water, -0.1f); - opacityMultiplier = 0.4f; + opacityMultiplier = 0.35f; force = 0.1f; sound = Sounds.wind; soundVol = 0.8f; diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index c4819ed222..a167a32ecb 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -311,7 +311,7 @@ public class World{ //TODO bad code boolean hasSnow = floors[0].name.contains("ice") || floors[0].name.contains("snow"); boolean hasRain = !hasSnow && content.contains(Liquids.water) && !floors[0].name.contains("sand"); - boolean hasDesert = !hasSnow && !hasRain && floors[0].name.contains("sand"); + boolean hasDesert = !hasSnow && !hasRain && floors[0] == Blocks.sand; boolean hasSpores = floors[0].name.contains("spore") || floors[0].name.contains("moss") || floors[0].name.contains("tainted"); if(hasSnow){ diff --git a/core/src/mindustry/editor/WaveGraph.java b/core/src/mindustry/editor/WaveGraph.java index e908e7d934..d6a33bf6ff 100644 --- a/core/src/mindustry/editor/WaveGraph.java +++ b/core/src/mindustry/editor/WaveGraph.java @@ -17,7 +17,7 @@ import mindustry.ui.*; public class WaveGraph extends Table{ public Seq groups = new Seq<>(); - public int from, to = 20; + public int from = 0, to = 20; private Mode mode = Mode.counts; private int[][] values; @@ -114,7 +114,7 @@ public class WaveGraph extends Table{ Lines.line(cx, cy, cx, cy + len); if(i == values.length/2){ - font.draw("" + (i + from), cx, cy - 2f, Align.center); + font.draw("" + (i + from + 1), cx, cy - 2f, Align.center); } } font.setColor(Color.white); diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index cab8c2060b..e2da570bf8 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -382,7 +382,7 @@ public class SectorDamage{ for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = fraction * 26; + values[tile.x][tile.y] = fraction * 24; } } diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index 934291dab8..d74f94e250 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -3,6 +3,8 @@ package mindustry.maps.planet; import arc.graphics.*; import arc.math.*; import arc.math.geom.*; +import mindustry.content.*; +import mindustry.game.*; import mindustry.maps.generators.*; public class TantrosPlanetGenerator extends PlanetGenerator{ @@ -18,4 +20,13 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ float depth = (float)noise.octaveNoise3D(2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(0.6f); } + + @Override + protected void generate(){ + pass((x, y) -> { + floor = Blocks.deepwater; + }); + + Schematics.placeLaunchLoadout(width / 2, height / 2); + } } diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index b3218ea7be..0b6181c80d 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -311,7 +311,7 @@ public class Conveyor extends Block implements Autotiler{ if(len >= capacity) return false; Tile facing = Edges.getFacingEdge(source.tile, tile); int direction = Math.abs(facing.relativeTo(tile.x, tile.y) - rotation); - return (((direction == 0) && minitem >= itemSpace) || ((direction % 2 == 1) && minitem > 0.7f)) && !(source.block.rotate && (source.rotation + 2) % 4 == rotation); + return (((direction == 0) && minitem >= itemSpace) || ((direction % 2 == 1) && minitem > 0.7f)) && !(source.block.rotate && next == source); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/mindustry/world/blocks/distribution/ItemBridge.java index 6e310d0e55..efaeaec5ba 100644 --- a/core/src/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/mindustry/world/blocks/distribution/ItemBridge.java @@ -93,7 +93,7 @@ public class ItemBridge extends Block{ Draw.reset(); Draw.color(Pal.placing); Lines.stroke(1f); - if(link != null){ + if(link != null && Math.abs(link.x - x) + Math.abs(link.y - y) > 1){ int rot = link.absoluteRelativeTo(x, y); float w = (link.x == x ? tilesize : Math.abs(link.x - x) * tilesize - tilesize); float h = (link.y == y ? tilesize : Math.abs(link.y - y) * tilesize - tilesize); @@ -145,7 +145,7 @@ public class ItemBridge extends Block{ if(config != null) return; Tile link = findLink(tile.x, tile.y); - if(linkValid(tile, link)){ + if(linkValid(tile, link) && !proximity.contains(link.build)){ link.build.configure(tile.pos()); } From 47e622dee3fd784e4f36e191b8fa42fb252e63d5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 18:07:10 -0500 Subject: [PATCH 114/162] (more) Campaign balancing --- core/assets/maps/desolateRift.msav | Bin 8827 -> 8835 bytes core/assets/maps/planetaryTerminal.msav | Bin 29190 -> 29224 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/assets/maps/desolateRift.msav b/core/assets/maps/desolateRift.msav index 06bb064d0d183e73cb9f7f701e889ad14d0a4d37..71c433d81a8dccd0a4a4506408ed05691cbbda99 100644 GIT binary patch delta 8595 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 delta 8580 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�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 delta 29018 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 From 2a6b0fd0cedc0a34bbcd3f8f6601d6abf90bf3d5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Nov 2020 18:09:47 -0500 Subject: [PATCH 115/162] Fixed vaults not counting withdrawn items --- .../world/blocks/storage/StorageBlock.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index 10b3cc4820..7bfda601d1 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -10,6 +10,8 @@ import mindustry.world.*; import mindustry.world.blocks.storage.CoreBlock.*; import mindustry.world.meta.*; +import static mindustry.Vars.*; + public class StorageBlock extends Block{ public StorageBlock(String name){ @@ -64,6 +66,17 @@ public class StorageBlock extends Block{ } } + @Override + public int removeStack(Item item, int amount){ + int result = super.removeStack(item, amount); + + if(linkedCore != null && team == state.rules.defaultTeam && state.isCampaign()){ + state.rules.sector.info.handleCoreItem(item, -result); + } + + return result; + } + @Override public int getMaximumAccepted(Item item){ return itemCapacity; From 2c0884ed46850520a10a870837dc07150bad20d2 Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:21:46 +0200 Subject: [PATCH 116/162] Fixes --- core/assets/bundles/bundle_ro.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 1d4a4815ac..918bd52ada 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -597,7 +597,7 @@ sector.tarFields.description = O zonă aflată la periferia unui complex de prod sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă curând, cât mai curând. Nu te lăsa păcălit de pauzele mari dintre atacurile inamice. sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constant atacatori. sector.fungalPass.description = O zonă de tranziție dintre munții înalți și zonele joase, pline cu spori. O mică bază de recunoaștere a inamicului este localizată aici.\nDistruge-o.\nFolosește unități Dagger și Crawler. Distruge cele 2 nuclee. -sector.biomassFacility.description = The origin of spores. This is the facility in which they were researched and initially produced.\nResearch the technology contained within. Cultivate spores for the production of fuel and plastics.\n\n[lightgray]Upon this facility's demise, the spores were released. Nothing in the local ecosystem could compete with such an invasive organism. +sector.biomassFacility.description = Originea sporilor. Aceasta este facilitatea în care au fost cercetați și produși inițial.\nCercetează tehnologia ce poate fi găsită aici. Cultivă spori pt producția de combustibil și mase plastice.\n\n[lightgray]Când facilitatea a decăzut, sporii au fost eliberați. Nimic din din ecosistemul local nu a putut concura cu un organism atât de invaziv. sector.windsweptIslands.description = Acest arhipelag izolat se află mai departe, după țărm. Datele arată că odată aveau structuri care produceau [accent]Plastaniu[].\n\nApără-te de unitățile navale ale inamicului. Construiește o bază pe insule. Cercetează fabricile necesare. sector.extractionOutpost.description = Un avanpost izolat, construit de inamic cu scopul de a lansa resurse către alte sectoare.\n\nTehnologia de transport intersectorial este esențială pt cuceririle ce urmează. Distruge baza. Cercetează platformele lor de lansare. sector.impact0078.description = Aici se află rămășițele primei nave de transport interstelar care a intrat în acest sistem stelar.\n\nSalvează cât mai mult posibil din epavă. Cercetează orice tehnologie intactă. @@ -1292,15 +1292,15 @@ item.coal.details = Pare să fie materie vegetală fosilizată, formată cu mult item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și aeronautică. item.thorium.description = Folosit în structuri durabile și combustibil nuclear. item.scrap.description = Folosit in topitoare și pulverizatoare pt a fi rafinat în alte materiale. -item.scrap.details = Rămășițe ale structurilor și unităților vechi.. +item.scrap.details = Rămășițe ale structurilor și unităților vechi. item.silicon.description = Folosit în producerea energiei solare, electronice complexe și muniție cu radar pt armament. item.plastanium.description = Folosit pt unitățile militare avansate, ca izolator electric și muniție fragilă. item.phase-fabric.description = Folosită în electronica avansată și tehnologia de autoreparare. -item.surge-alloy.description = Folosit în electronica avansată și structuri defensive reactive. +item.surge-alloy.description = Folosit în electronica avansată și structurile defensive reactive. item.spore-pod.description = Folosită pt a fi convertită în petrol, explozibili și combustibil. item.spore-pod.details = Spori. Probabil o formă de viață sintetică. Emite gaze toxice altor forme de viață biologică. Nu că ar mai fi rămas prea multe aici. item.blast-compound.description = Folosit în bombe și muniție explozibilă. -item.pyratite.description = Folosită în armele incendiare și generatoare pe bază de procese de combustie. +item.pyratite.description = Folosită în armele incendiare și generatoarele pe bază de procese de combustie. liquid.water.description = Folosită pt răcirea mașinăriilor și procesarea deșeurilor. liquid.slag.description = Rafinată în separatoare înapoi în materialele constituente, sau pulverizată înspre unitățile inamice ca armă. From 2d66790aab400aef23118bcc4f2ba2c7311fb051 Mon Sep 17 00:00:00 2001 From: Nikolass1000 <68129216+Nikolass1000@users.noreply.github.com> Date: Sat, 28 Nov 2020 12:18:13 +0100 Subject: [PATCH 117/162] Complete --- core/assets/bundles/bundle_pl.properties | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 483d3f37aa..65f26e9b78 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -691,6 +691,7 @@ bar.input = Wejście bar.output = Wyjście units.processorcontrol = [lightgray]Kontrolowany Procesorem + bullet.damage = [stat]{0}[lightgray] Obrażenia bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki bullet.incendiary = [stat]zapalający @@ -982,21 +983,21 @@ block.grass.name = Trawa block.slag.name = Żużel block.space.name = Space block.salt.name = Sól -block.salt-wall.name = Salt Wall +block.salt-wall.name = Solna Ściana block.pebbles.name = Kamyki block.tendrils.name = Wić -block.sand-wall.name = Sand Wall +block.sand-wall.name = Piaskowa Ściana block.spore-pine.name = Sosna Zarodnikowa -block.spore-wall.name = Spore Wall -block.boulder.name = Boulder -block.snow-boulder.name = Snow Boulder +block.spore-wall.name = Zarodinkowa Ściana +block.boulder.name = Głaz +block.snow-boulder.name = Śnieżny Głaz block.snow-pine.name = Sosna śniegowa block.shale.name = Łupek block.shale-boulder.name = Głaz Łupkowy block.moss.name = Mech block.shrubs.name = Krzewy block.spore-moss.name = Mech Zarodnikowy -block.shale-wall.name = Shale Wall +block.shale-wall.name = Ściana Z Łupku block.scrap-wall.name = Ściana ze Złomu block.scrap-wall-large.name = Duża Ściana ze Złomu block.scrap-wall-huge.name = Ogromna Ściana ze Złomu From 47922834f98481fefa437a8483956dae3722c0a1 Mon Sep 17 00:00:00 2001 From: Leonid Skorospelov Date: Sat, 28 Nov 2020 14:16:30 +0200 Subject: [PATCH 118/162] Update servers_v6.json Ranked 1v1 gradually moving to v6 --- servers_v6.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/servers_v6.json b/servers_v6.json index c627e00001..88d00336cd 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -15,6 +15,10 @@ "name": "Chaotic Neutral", "address": ["Chaotic-Neutral.ddns.net:5555", "Chaotic-Neutral.ddns.net:6666"] }, + { + "name": "Ranked", + "address": ["mindustryranked.ddns.net:16567"] + }, { "address": "cheginde.ddns.net" } From 8a424111f04a969add0f9750384d60a5cd07ac29 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 09:43:35 -0500 Subject: [PATCH 119/162] Fixed #3633 --- .github/workflows/deployment.yml | 16 +++++++++------- core/src/mindustry/core/Logic.java | 2 +- core/src/mindustry/entities/comp/MinerComp.java | 2 ++ core/src/mindustry/input/InputHandler.java | 2 +- .../metadata/android/en-US/changelogs/29730.txt | 10 ++++++++++ 5 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29730.txt diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index bc993bae07..e98615e268 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -15,9 +15,11 @@ jobs: uses: actions/setup-java@v1 with: java-version: 14 + - name: Set env + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - name: Create artifacts run: | - ./gradlew desktop:dist server:dist core:javadoc -Pbuildversion=${GITHUB_REF:1} + ./gradlew desktop:dist server:dist core:javadoc -Pbuildversion=${RELEASE_VERSION:1} - name: Update docs run: | cd ../ @@ -27,24 +29,24 @@ jobs: cp -a Mindustry/core/build/docs/javadoc/. docs/ cd docs git add . - git commit -m "Update ${GITHUB_REF:1}" + git commit -m "Update ${RELEASE_VERSION:1}" git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/MindustryGame/docs cd ../Mindustry - name: Add Arc release run: | git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc cd ../Arc - git tag ${GITHUB_REF} - git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${GITHUB_REF}; + git tag ${RELEASE_VERSION} + git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${RELEASE_VERSION}; cd ../Mindustry - name: Update F-Droid build string run: | git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds cd ../MindustryBuilds - echo "Updating version to ${GITHUB_REF:1}" - echo versionName=6-fdroid-${GITHUB_REF:1}$'\n'versionCode=${GITHUB_REF:1} > version_fdroid.txt + echo "Updating version to ${RELEASE_VERSION:1}" + echo versionName=6-fdroid-${RELEASE_VERSION:1}$'\n'versionCode=${RELEASE_VERSION:1} > version_fdroid.txt git add . - git commit -m "Updating to build ${GITHUB_REF:1}" + git commit -m "Updating to build ${RELEASE_VERSION:1}" cd ../Mindustry - name: Upload client artifacts uses: svenstaro/upload-release-action@v2 diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index abcdfc85a0..a13e37cbac 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -135,8 +135,8 @@ public class Logic implements ApplicationListener{ //convert all blocks to neutral, randomly killing them if(tile.isCenter() && tile.build != null && tile.build.team == state.rules.waveTeam){ Building b = tile.build; + Call.setTeam(b, Team.derelict); Time.run(Mathf.random(0f, 60f * 6f), () -> { - Call.setTeam(b, Team.derelict); if(Mathf.chance(0.25)){ b.kill(); } diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index f10a217105..81aa812f61 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -77,6 +77,8 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ mineTimer = 0; if(core != null && within(core, mineTransferRange) && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ + //add item to inventory before it is transferred + if(item() == item) addItem(item); Call.transferItemTo(self(), item, 1, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 551fd5e82d..c7ca5cd022 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -105,7 +105,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){ if(build == null || build.items == null) return; - if(unit != null) unit.stack.amount = Math.max(unit.stack.amount - amount, 0); + if(unit != null && unit.item() == item) unit.stack.amount = Math.max(unit.stack.amount - amount, 0); for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){ Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {})); diff --git a/fastlane/metadata/android/en-US/changelogs/29730.txt b/fastlane/metadata/android/en-US/changelogs/29730.txt new file mode 100644 index 0000000000..c98275f647 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29730.txt @@ -0,0 +1,10 @@ +This should be one of the last beta builds. In a couple of days, I will make a final release with the most recent translation bundles & bugfixes. + +- Fixed infinitely looping Vela laser sound +- Fixed fire not burning on tar +- Disabled fire for items with flammability <= 1 (this means coal bombing no longer causes fire) +- Disabled unit explosion team damage +- Disabled core unit crash damage +- Disabled automatic linking of adjacent bridges + +Campaign: From 815a483d2c9513b25c98b0c55d8b16969fbabd40 Mon Sep 17 00:00:00 2001 From: slava0135 Date: Thu, 26 Nov 2020 19:38:25 +0300 Subject: [PATCH 120/162] typo in Fires: /** Start a fire on the tile. If there already is a file there, refreshes its lifetime. */ --- core/src/mindustry/entities/Fires.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/Fires.java b/core/src/mindustry/entities/Fires.java index 754a8766b9..2ae2253356 100644 --- a/core/src/mindustry/entities/Fires.java +++ b/core/src/mindustry/entities/Fires.java @@ -15,7 +15,7 @@ public class Fires{ private static final float baseLifetime = 1000f; private static final IntMap map = new IntMap<>(); - /** Start a fire on the tile. If there already is a file there, refreshes its lifetime. */ + /** Start a fire on the tile. If there already is a fire there, refreshes its lifetime. */ public static void create(Tile tile){ if(net.client() || tile == null || !state.rules.fire) return; //not clientside. From e6c99e0c6d4dc08d088a678f39aa02b556de4167 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 10:42:50 -0500 Subject: [PATCH 121/162] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 882d0b15ae..5a87b04c42 100644 --- a/README.md +++ b/README.md @@ -61,5 +61,5 @@ Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Su ## Downloads -| [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry) | [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry) | [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry) | -|--- |--- |--- |--- | +| [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry) | [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry) | [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry) | [![](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-US?size=250x83&releaseDate=1528416000&h=43142217e0fc99956f864865b9d8bc56)](https://apps.apple.com/us/app/mindustry/id1385258906?itsct=apps_box&itscg=30200) +|--- |--- |--- |--- |--- | From 1f1701f1d67409d6fefe37b610f1d29e14dd40fb Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 10:44:14 -0500 Subject: [PATCH 122/162] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5a87b04c42..97aece9742 100644 --- a/README.md +++ b/README.md @@ -61,5 +61,5 @@ Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Su ## Downloads -| [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry) | [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry) | [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry) | [![](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-US?size=250x83&releaseDate=1528416000&h=43142217e0fc99956f864865b9d8bc56)](https://apps.apple.com/us/app/mindustry/id1385258906?itsct=apps_box&itscg=30200) -|--- |--- |--- |--- |--- | +| [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry) | [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry) | [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry) +|--- |--- |--- |--- | From 6e62859d0edc90df66e049077750288f84f3f570 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 11:31:07 -0500 Subject: [PATCH 123/162] Fixed #3644 --- core/src/mindustry/logic/LAssembler.java | 2 +- core/src/mindustry/ui/Bar.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/logic/LAssembler.java b/core/src/mindustry/logic/LAssembler.java index e06927cca2..560ac986ec 100644 --- a/core/src/mindustry/logic/LAssembler.java +++ b/core/src/mindustry/logic/LAssembler.java @@ -14,7 +14,7 @@ import mindustry.world.*; /** "Compiles" a sequence of statements into instructions. */ public class LAssembler{ public static ObjectMap> customParsers = new ObjectMap<>(); - public static final int maxTokenLength = 40; + public static final int maxTokenLength = 36; private int lastVar; /** Maps names to variable IDs. */ diff --git a/core/src/mindustry/ui/Bar.java b/core/src/mindustry/ui/Bar.java index 8051b67678..dbb7e9cc6f 100644 --- a/core/src/mindustry/ui/Bar.java +++ b/core/src/mindustry/ui/Bar.java @@ -29,7 +29,11 @@ public class Bar extends Element{ public Bar(Prov name, Prov color, Floatp fraction){ this.fraction = fraction; - lastValue = value = Mathf.clamp(fraction.get()); + try{ + lastValue = value = Mathf.clamp(fraction.get()); + }catch(Exception e){ //getting the fraction may involve referring to invalid data + lastValue = value = 0f; + } update(() -> { try{ this.name = name.get(); From 724a0018b82e740abd8dd1d61178465b9e1e4cdb Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 20:39:09 +0300 Subject: [PATCH 124/162] unit payload improvements --- .../world/blocks/distribution/PayloadConveyor.java | 12 ++++++++++++ .../world/blocks/production/PayloadAcceptor.java | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index c2c014d969..edb9f87d47 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -234,6 +234,18 @@ public class PayloadConveyor extends Block{ updatePayload(); } + @Override + public void onDestroyed() { + super.onDestroyed(); + if (item != null) item.dump(); + } + + @Override + public void onRemoved() { + super.onRemoved(); + if (item != null) item.dump(); + } + @Override public void write(Writes write){ super.write(write); diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 512eeebdad..697f44ab85 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -82,6 +82,18 @@ public class PayloadAcceptor extends Block{ return t; } + @Override + public void onDestroyed() { + super.onDestroyed(); + if (payload != null) payload.dump(); + } + + @Override + public void onRemoved() { + super.onRemoved(); + if (payload != null) payload.dump(); + } + public boolean blends(int direction){ return PayloadAcceptor.blends(this, direction); } @@ -126,6 +138,7 @@ public class PayloadAcceptor extends Block{ } } + public void dumpPayload(){ if(payload.dump()){ payload = null; From 6dc2486ce0660b498fe6603928480218daaf7782 Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 21:06:20 +0300 Subject: [PATCH 125/162] oopsie --- core/src/mindustry/world/blocks/production/PayloadAcceptor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 697f44ab85..9e6a644ea5 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -138,7 +138,6 @@ public class PayloadAcceptor extends Block{ } } - public void dumpPayload(){ if(payload.dump()){ payload = null; From ee3348d160d6d55df98618bd4b37a3861578a9fb Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 21:10:12 +0300 Subject: [PATCH 126/162] oopsie x2 --- .../mindustry/world/blocks/distribution/PayloadConveyor.java | 4 ++-- .../mindustry/world/blocks/production/PayloadAcceptor.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index edb9f87d47..8de59475ff 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -235,13 +235,13 @@ public class PayloadConveyor extends Block{ } @Override - public void onDestroyed() { + public void onDestroyed(){ super.onDestroyed(); if (item != null) item.dump(); } @Override - public void onRemoved() { + public void onRemoved(){ super.onRemoved(); if (item != null) item.dump(); } diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 9e6a644ea5..d0f7cbf164 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -83,13 +83,13 @@ public class PayloadAcceptor extends Block{ } @Override - public void onDestroyed() { + public void onDestroyed(){ super.onDestroyed(); if (payload != null) payload.dump(); } @Override - public void onRemoved() { + public void onRemoved(){ super.onRemoved(); if (payload != null) payload.dump(); } From 699750762f0dc91dbbafdae6a0626a0661167d27 Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 21:38:50 +0300 Subject: [PATCH 127/162] removing unnecessary stuff --- .../world/blocks/distribution/PayloadConveyor.java | 6 ------ .../mindustry/world/blocks/production/PayloadAcceptor.java | 7 +------ 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index 8de59475ff..241cc27476 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -234,12 +234,6 @@ public class PayloadConveyor extends Block{ updatePayload(); } - @Override - public void onDestroyed(){ - super.onDestroyed(); - if (item != null) item.dump(); - } - @Override public void onRemoved(){ super.onRemoved(); diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index d0f7cbf164..205437928e 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -11,6 +11,7 @@ import mindustry.graphics.*; import mindustry.world.*; import mindustry.world.blocks.payloads.*; +import static arc.util.Timer.post; import static mindustry.Vars.*; public class PayloadAcceptor extends Block{ @@ -82,12 +83,6 @@ public class PayloadAcceptor extends Block{ return t; } - @Override - public void onDestroyed(){ - super.onDestroyed(); - if (payload != null) payload.dump(); - } - @Override public void onRemoved(){ super.onRemoved(); From b0477394e6ac5c12896245712999d507f888f051 Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 21:45:42 +0300 Subject: [PATCH 128/162] oopsie x3 --- core/src/mindustry/world/blocks/production/PayloadAcceptor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 205437928e..a590c0caf6 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -11,7 +11,6 @@ import mindustry.graphics.*; import mindustry.world.*; import mindustry.world.blocks.payloads.*; -import static arc.util.Timer.post; import static mindustry.Vars.*; public class PayloadAcceptor extends Block{ From 340efc32986f7cc48e601b93bf9a844e76f534dc Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Sat, 28 Nov 2020 20:49:33 +0200 Subject: [PATCH 129/162] Typo --- core/assets/bundles/bundle_ro.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 918bd52ada..0aa8ab03f0 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -276,7 +276,7 @@ ok = OK open = Deschide customize = Personalizează Regulile cancel = Anulare -openlink = Deschidr Linkul +openlink = Deschide Linkul copylink = Copiază Linkul back = Înapoi crash.export = Exportă Crash Logs From e6078bd4f6f0d949c8956bb9cbb882cd47bbc103 Mon Sep 17 00:00:00 2001 From: slava0135 Date: Sat, 28 Nov 2020 21:49:59 +0300 Subject: [PATCH 130/162] oopsie x4 --- .../mindustry/world/blocks/distribution/PayloadConveyor.java | 2 +- core/src/mindustry/world/blocks/production/PayloadAcceptor.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index 241cc27476..99139638c3 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -237,7 +237,7 @@ public class PayloadConveyor extends Block{ @Override public void onRemoved(){ super.onRemoved(); - if (item != null) item.dump(); + if(item != null) item.dump(); } @Override diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index a590c0caf6..2852d00a13 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -85,7 +85,7 @@ public class PayloadAcceptor extends Block{ @Override public void onRemoved(){ super.onRemoved(); - if (payload != null) payload.dump(); + if(payload != null) payload.dump(); } public boolean blends(int direction){ From e6544b73db7be595a6dae19a9c893a704be7ec4d Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 13:57:19 -0500 Subject: [PATCH 131/162] Switching modifier from beta to release --- build.gradle | 2 +- core/src/mindustry/mod/Mods.java | 2 +- core/src/mindustry/type/Weapon.java | 2 +- core/src/mindustry/world/meta/values/WeaponListValue.java | 4 ++-- gradle.properties | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 5adc73c9ee..79290c6ac8 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ allprojects{ ext{ versionNumber = '6' - if(!project.hasProperty("versionModifier")) versionModifier = 'beta' + if(!project.hasProperty("versionModifier")) versionModifier = 'release' if(!project.hasProperty("versionType")) versionType = 'official' appName = 'Mindustry' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index f505358a40..a2706a0723 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -247,7 +247,7 @@ public class Mods implements Loadable{ mods.add(mod); }catch(Throwable e){ if(e instanceof ClassNotFoundException && e.getMessage().contains("mindustry.plugin.Plugin")){ - Log.info("Plugin @ is outdated and needs to be ported to 6.0! Update its main class to inherit from 'mindustry.mod.Plugin'."); + Log.info("Plugin @ is outdated and needs to be ported to 6.0! Update its main class to inherit from 'mindustry.mod.Plugin'. See https://mindustrygame.github.io/wiki/modding/6-migrationv6/"); }else{ Log.err("Failed to load mod file @. Skipping.", file); Log.err(e); diff --git a/core/src/mindustry/type/Weapon.java b/core/src/mindustry/type/Weapon.java index 348e70b7b2..ec0c00da14 100644 --- a/core/src/mindustry/type/Weapon.java +++ b/core/src/mindustry/type/Weapon.java @@ -13,7 +13,7 @@ import mindustry.io.*; public class Weapon{ /** displayed weapon region */ - public String name; + public String name = ""; /** bullet shot */ public BulletType bullet; /** shell ejection effect */ diff --git a/core/src/mindustry/world/meta/values/WeaponListValue.java b/core/src/mindustry/world/meta/values/WeaponListValue.java index 419e689e98..706077b967 100644 --- a/core/src/mindustry/world/meta/values/WeaponListValue.java +++ b/core/src/mindustry/world/meta/values/WeaponListValue.java @@ -21,7 +21,7 @@ public class WeaponListValue implements StatValue{ @Override public void display(Table table){ table.row(); - for(int i = 0;i < weapons.size;i ++){ + for(int i = 0; i < weapons.size;i ++){ Weapon weapon = weapons.get(i); if(weapon.flipSprite){ @@ -29,7 +29,7 @@ public class WeaponListValue implements StatValue{ continue; } - TextureRegion region = weapon.outlineRegion.found() ? weapon.outlineRegion : unit.icon(Cicon.full); + TextureRegion region = !weapon.name.equals("") && weapon.outlineRegion.found() ? weapon.outlineRegion : unit.icon(Cicon.full); table.image(region).size(60).scaling(Scaling.bounded).right().top(); diff --git a/gradle.properties b/gradle.properties index c95e0534b6..12ed98ae75 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=2d451f0c342755ef84e609c951a8fca654ef41b5 +archash=f99aa02b0def1951452b67263439977d1d485ae7 From f4c6870ee995a10c402805e0bcbc6d888018bbfa Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Sat, 28 Nov 2020 21:18:00 +0200 Subject: [PATCH 132/162] And so ability.unitspawn works thanks new wiki --- core/assets/bundles/bundle_ro.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 0aa8ab03f0..dfdc4583ee 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -701,7 +701,7 @@ stat.flying = Zboară ability.forcefield = Câmp de Forță ability.repairfield = Câmp de Reparare ability.statusfield = Câmp Suprasolicitare Unități -ability.unitspawn = {0} Fabrici +ability.unitspawn = Fabrică de {0} ability.shieldregenfield = Câmp de Regenerare a Scutului ability.movelightning = Mișcare Fulger From b8cb17c0c5af1fcf3819e044bf87d0ed72d65b61 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 15:08:53 -0500 Subject: [PATCH 133/162] Campaign production fixes --- .../mindustry/entities/comp/BuildingComp.java | 12 +++- .../mindustry/entities/comp/MinerComp.java | 2 + core/src/mindustry/game/SectorInfo.java | 64 ++++++++++++------- 3 files changed, 54 insertions(+), 24 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 7499fcd9c2..7bdc5d174a 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -14,6 +14,7 @@ import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import arc.util.io.*; +import mindustry.*; import mindustry.annotations.Annotations.*; import mindustry.audio.*; import mindustry.content.*; @@ -29,8 +30,8 @@ import mindustry.logic.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; -import mindustry.world.blocks.*; import mindustry.world.blocks.ConstructBlock.*; +import mindustry.world.blocks.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.payloads.*; import mindustry.world.blocks.power.*; @@ -621,6 +622,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, * containers, it gets added to the block's inventory. */ public void offload(Item item){ + produced(item, 1); int dump = this.cdump; if(!net.client() && state.isCampaign() && team == state.rules.defaultTeam) item.unlock(); @@ -654,6 +656,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return false; } + public void produced(Item item){ + produced(item, 1); + } + + public void produced(Item item, int amount){ + if(Vars.state.rules.sector != null && team == state.rules.defaultTeam) Vars.state.rules.sector.info.handleProduction(item, amount); + } + /** Try dumping any item near the */ public boolean dump(){ return dump(null); diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 81aa812f61..b993815a36 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -76,6 +76,8 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ if(mineTimer >= 50f + item.hardness*15f){ mineTimer = 0; + if(state.rules.sector != null && team() == state.rules.defaultTeam) state.rules.sector.info.handleProduction(item, 1); + if(core != null && within(core, mineTransferRange) && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ //add item to inventory before it is transferred if(item() == item) addItem(item); diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 2701fc1dcb..ed9c79b612 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -23,6 +23,8 @@ public class SectorInfo{ /** Core input statistics. */ public ObjectMap production = new ObjectMap<>(); + /** Raw item production statistics. */ + public ObjectMap rawProduction = new ObjectMap<>(); /** Export statistics. */ public ObjectMap export = new ObjectMap<>(); /** Items stored in all cores. */ @@ -77,15 +79,21 @@ public class SectorInfo{ /** Counter refresh state. */ private transient Interval time = new Interval(); - /** Core item storage to prevent spoofing. */ - private transient int[] coreItemCounts; + /** Core item storage input/output deltas. */ + private @Nullable transient int[] coreDeltas; + /** Core item storage input/output deltas. */ + private @Nullable transient int[] productionDeltas; /** Handles core item changes. */ public void handleCoreItem(Item item, int amount){ - if(coreItemCounts == null){ - coreItemCounts = new int[content.items().size]; - } - coreItemCounts[item.id] += amount; + if(coreDeltas == null) coreDeltas = new int[content.items().size]; + coreDeltas[item.id] += amount; + } + + /** Handles raw production stats. */ + public void handleProduction(Item item, int amount){ + if(productionDeltas == null) productionDeltas = new int[content.items().size]; + productionDeltas[item.id] += amount; } /** @return the real location items go when launched on this sector */ @@ -176,6 +184,11 @@ public class SectorInfo{ damage = 0; hasSpawns = spawner.countSpawns() > 0; + //cap production at raw production. + production.each((item, stat) -> { + stat.mean = Math.min(stat.mean, rawProduction.get(item, ExportStat::new).mean); + }); + if(state.rules.sector != null){ state.rules.sector.saveInfo(); } @@ -189,8 +202,6 @@ public class SectorInfo{ //updating in multiplayer as a client doesn't make sense if(net.client()) return; - CoreBuild ent = state.rules.defaultTeam.core(); - //refresh throughput if(time.get(refreshPeriod)){ @@ -208,30 +219,37 @@ public class SectorInfo{ stat.mean = stat.means.rawMean(); }); - if(coreItemCounts == null){ - coreItemCounts = new int[content.items().size]; - } + if(coreDeltas == null) coreDeltas = new int[content.items().size]; + if(productionDeltas == null) productionDeltas = new int[content.items().size]; //refresh core items for(Item item : content.items()){ - ExportStat stat = production.get(item, ExportStat::new); - if(!stat.loaded){ - stat.means.fill(stat.mean); - stat.loaded = true; - } + updateDelta(item, production, coreDeltas); + updateDelta(item, rawProduction, productionDeltas); - //get item delta - int delta = coreItemCounts[item.id]; - - //store means - stat.means.add(delta); - stat.mean = stat.means.rawMean(); + production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean); } - Arrays.fill(coreItemCounts, 0); + Arrays.fill(coreDeltas, 0); + Arrays.fill(productionDeltas, 0); } } + void updateDelta(Item item, ObjectMap map, int[] deltas){ + ExportStat stat = map.get(item, ExportStat::new); + if(!stat.loaded){ + stat.means.fill(stat.mean); + stat.loaded = true; + } + + //get item delta + int delta = deltas[item.id]; + + //store means + stat.means.add(delta); + stat.mean = stat.means.rawMean(); + } + public ObjectFloatMap exportRates(){ ObjectFloatMap map = new ObjectFloatMap<>(); export.each((item, value) -> map.put(item, value.mean)); From bb16d1c613fda9d49e905e37943832be5812bdd1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 19:12:27 -0500 Subject: [PATCH 134/162] Removed Abstract block classes for better code inspection --- core/src/mindustry/ClientLauncher.java | 4 ++-- .../mindustry/world/blocks/defense/turrets/BaseTurret.java | 2 +- .../mindustry/world/blocks/defense/turrets/ReloadTurret.java | 2 +- core/src/mindustry/world/blocks/defense/turrets/Turret.java | 2 +- core/src/mindustry/world/blocks/power/PowerBlock.java | 2 +- core/src/mindustry/world/blocks/production/Drill.java | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index 3777da85c7..978361898a 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -112,8 +112,8 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform super.add(module); //autoload modules when necessary - if(module instanceof Loadable){ - assets.load((Loadable)module); + if(module instanceof Loadable l){ + assets.load(l); } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java index e10b1612e9..44d4f63f93 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java @@ -11,7 +11,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; -public abstract class BaseTurret extends Block{ +public class BaseTurret extends Block{ public float range = 80f; public float rotateSpeed = 5; diff --git a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java index 33538771a1..bc172e9c46 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java @@ -9,7 +9,7 @@ import mindustry.world.meta.values.*; import static mindustry.Vars.*; -public abstract class ReloadTurret extends BaseTurret{ +public class ReloadTurret extends BaseTurret{ public float reloadTime = 10f; public ReloadTurret(String name){ diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 4572852eb2..4409fa6533 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -27,7 +27,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; -public abstract class Turret extends ReloadTurret{ +public class Turret extends ReloadTurret{ //after being logic-controlled and this amount of time passes, the turret will resume normal AI public final static float logicControlCooldown = 60 * 2; diff --git a/core/src/mindustry/world/blocks/power/PowerBlock.java b/core/src/mindustry/world/blocks/power/PowerBlock.java index e71c17aba7..4aad16ec6e 100644 --- a/core/src/mindustry/world/blocks/power/PowerBlock.java +++ b/core/src/mindustry/world/blocks/power/PowerBlock.java @@ -3,7 +3,7 @@ package mindustry.world.blocks.power; import mindustry.world.*; import mindustry.world.meta.*; -public abstract class PowerBlock extends Block{ +public class PowerBlock extends Block{ public PowerBlock(String name){ super(name); diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index cc0c14b278..49c5576a29 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -259,7 +259,7 @@ public class Drill extends Block{ progress += delta() * dominantItems * speed * warmup; if(Mathf.chanceDelta(updateEffectChance * warmup)) - updateEffect.at(getX() + Mathf.range(size * 2f), getY() + Mathf.range(size * 2f)); + updateEffect.at(x + Mathf.range(size * 2f), y + Mathf.range(size * 2f)); }else{ lastDrillSpeed = 0f; warmup = Mathf.lerpDelta(warmup, 0f, warmupSpeed); @@ -274,7 +274,7 @@ public class Drill extends Block{ index ++; progress %= delay; - drillEffect.at(getX() + Mathf.range(size), getY() + Mathf.range(size), dominantItem.color); + drillEffect.at(x + Mathf.range(size), y + Mathf.range(size), dominantItem.color); } } From 810238d0f960e9323925fc20df7ec8cd72648ecc Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 20:30:43 -0500 Subject: [PATCH 135/162] Cleanup --- core/src/mindustry/game/SectorInfo.java | 5 +---- core/src/mindustry/world/blocks/ConstructBlock.java | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index ed9c79b612..045d9aa2e9 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -242,11 +242,8 @@ public class SectorInfo{ stat.loaded = true; } - //get item delta - int delta = deltas[item.id]; - //store means - stat.means.add(delta); + stat.means.add(deltas[item.id]); stat.mean = stat.means.rawMean(); } diff --git a/core/src/mindustry/world/blocks/ConstructBlock.java b/core/src/mindustry/world/blocks/ConstructBlock.java index 871e43a898..e895018273 100644 --- a/core/src/mindustry/world/blocks/ConstructBlock.java +++ b/core/src/mindustry/world/blocks/ConstructBlock.java @@ -276,7 +276,8 @@ public class ConstructBlock extends Block{ if(clampedAmount > 0 && accumulated > 0){ //if it's positive, add it to the core if(core != null && requirements[i].item.unlockedNow()){ //only accept items that are unlocked int accepting = core.acceptStack(requirements[i].item, accumulated, builder); - core.handleStack(requirements[i].item, accepting, builder); + //transfer items directly, as this is not production. + core.items.add(requirements[i].item, accepting); accumulator[i] -= accepting; }else{ accumulator[i] -= accumulated; From b63501b1c7cea96146b6664ba66b3f748bb71ddd Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 21:51:26 -0500 Subject: [PATCH 136/162] Core overfill bugfix --- core/src/mindustry/world/blocks/ConstructBlock.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/ConstructBlock.java b/core/src/mindustry/world/blocks/ConstructBlock.java index e895018273..c99f36f36b 100644 --- a/core/src/mindustry/world/blocks/ConstructBlock.java +++ b/core/src/mindustry/world/blocks/ConstructBlock.java @@ -19,6 +19,7 @@ import mindustry.graphics.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.blocks.storage.CoreBlock.*; import mindustry.world.modules.*; import static mindustry.Vars.*; @@ -275,7 +276,7 @@ public class ConstructBlock extends Block{ if(clampedAmount > 0 && accumulated > 0){ //if it's positive, add it to the core if(core != null && requirements[i].item.unlockedNow()){ //only accept items that are unlocked - int accepting = core.acceptStack(requirements[i].item, accumulated, builder); + int accepting = Math.min(accumulated, ((CoreBuild)core).storageCapacity - core.items.get(requirements[i].item)); //transfer items directly, as this is not production. core.items.add(requirements[i].item, accepting); accumulator[i] -= accepting; From 3c51d82a1a0506904bbbbd57cb84f6469628f26b Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 22:45:36 -0500 Subject: [PATCH 137/162] Fixed #3648 --- core/src/mindustry/entities/bullet/BulletType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 7d94602844..4d93321367 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -273,7 +273,8 @@ public abstract class BulletType extends Content{ } if(weaveMag > 0){ - b.vel.rotate(Mathf.sin(Mathf.randomSeed(b.id, 10f) + b.time, weaveScale, weaveMag) * Time.delta); + float scl = Mathf.randomSeed(id, 0.9f, 1.1f); + b.vel.rotate(Mathf.sin(b.time + Mathf.PI * weaveScale/2f * scl, weaveScale * scl, weaveMag) * Time.delta); } if(trailChance > 0){ From 3d6fd8a351599931a4247fb16fd2d0c5c92d7ed4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 23:23:39 -0500 Subject: [PATCH 138/162] De-abstracted weather --- core/src/mindustry/type/Weather.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index bb6b444746..8c9bdb0b60 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -19,7 +19,7 @@ import mindustry.world.blocks.*; import static mindustry.Vars.*; -public abstract class Weather extends UnlockableContent{ +public class Weather extends UnlockableContent{ /** Default duration of this weather event in ticks. */ public float duration = 10f * Time.toMinutes; public float opacityMultiplier = 1f; From 23fc86fac1d1435c1fcef01675159c54a67e3994 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 28 Nov 2020 23:59:56 -0500 Subject: [PATCH 139/162] Updated wiki links --- core/src/mindustry/Vars.java | 2 +- core/src/mindustry/mod/ContentParser.java | 4 ++++ .../world/blocks/environment/OverlayFloor.java | 2 +- .../world/blocks/units/ControlCenter.java | 16 ---------------- 4 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 core/src/mindustry/world/blocks/units/ControlCenter.java diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index d0995ca3a8..8269c05b06 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -56,7 +56,7 @@ public class Vars implements Loadable{ /** URL for sending crash reports to */ public static final String crashReportURL = "http://192.99.169.18/report"; /** URL the links to the wiki's modding guide.*/ - public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/"; + public static final String modGuideURL = "https://mindustrygame.github.io/wiki/modding/1-modding/"; /** URL to the JSON file containing all the global, public servers. Not queried in BE. */ public static final String serverJsonURL = "https://raw.githubusercontent.com/Anuken/Mindustry/master/servers.json"; /** URL to the JSON file containing all the BE servers. Only queried in BE. */ diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 4cd9d704f5..e95639ed2e 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -309,6 +309,10 @@ public class ContentParser{ } + if(value.has("controller")){ + unit.defaultController = make(resolve(value.getString("controller"), "mindustry.ai.type")); + } + //read extra default waves if(value.has("waves")){ JsonValue waves = value.remove("waves"); diff --git a/core/src/mindustry/world/blocks/environment/OverlayFloor.java b/core/src/mindustry/world/blocks/environment/OverlayFloor.java index 4c57943aed..c20eccceaf 100644 --- a/core/src/mindustry/world/blocks/environment/OverlayFloor.java +++ b/core/src/mindustry/world/blocks/environment/OverlayFloor.java @@ -4,7 +4,7 @@ import arc.graphics.g2d.*; import arc.math.*; import mindustry.world.*; -/**A type of floor that is overlaid on top of over floors.*/ +/**A type of floor that is overlaid on top of other floors.*/ public class OverlayFloor extends Floor{ public OverlayFloor(String name){ diff --git a/core/src/mindustry/world/blocks/units/ControlCenter.java b/core/src/mindustry/world/blocks/units/ControlCenter.java deleted file mode 100644 index ab99470b93..0000000000 --- a/core/src/mindustry/world/blocks/units/ControlCenter.java +++ /dev/null @@ -1,16 +0,0 @@ -package mindustry.world.blocks.units; - -import mindustry.gen.*; -import mindustry.world.*; - -public class ControlCenter extends Block{ - - public ControlCenter(String name){ - super(name); - update = true; - } - - public class ControlCenterBuild extends Building{ - - } -} From 9a3b21d77a832de7f1efe5261e84bdf10668f790 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 09:54:52 -0500 Subject: [PATCH 140/162] Fixed #3650 --- .../mindustry/entities/comp/BoundedComp.java | 12 +++++++----- .../mindustry/entities/comp/BuilderComp.java | 18 ++++++++++-------- core/src/mindustry/entities/comp/UnitComp.java | 2 +- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/core/src/mindustry/entities/comp/BoundedComp.java b/core/src/mindustry/entities/comp/BoundedComp.java index c266ae3e51..c02d34a760 100644 --- a/core/src/mindustry/entities/comp/BoundedComp.java +++ b/core/src/mindustry/entities/comp/BoundedComp.java @@ -16,11 +16,13 @@ abstract class BoundedComp implements Velc, Posc, Healthc, Flyingc{ @Override public void update(){ - //repel unit out of bounds - if(x < 0) vel.x += (-x/warpDst); - if(y < 0) vel.y += (-y/warpDst); - if(x > world.unitWidth()) vel.x -= (x - world.unitWidth())/warpDst; - if(y > world.unitHeight()) vel.y -= (y - world.unitHeight())/warpDst; + if(!net.client() || isLocal()){ + //repel unit out of bounds + if(x < 0) vel.x += (-x/warpDst); + if(y < 0) vel.y += (-y/warpDst); + if(x > world.unitWidth()) vel.x -= (x - world.unitWidth())/warpDst; + if(y > world.unitHeight()) vel.y -= (y - world.unitHeight())/warpDst; + } //clamp position if not flying if(isGrounded()){ diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index a1e218c05a..a546637544 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -11,6 +11,7 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; +import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; @@ -28,6 +29,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ @Import float x, y, rotation; @Import UnitType type; + @Import Team team; @SyncLocal Queue plans = new Queue<>(1); @SyncLocal transient boolean updateBuilding = true; @@ -75,27 +77,27 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ Tile tile = world.tile(current.x, current.y); if(!(tile.block() instanceof ConstructBlock)){ - if(!current.initialized && !current.breaking && Build.validPlace(current.block, team(), current.x, current.y, current.rotation)){ + if(!current.initialized && !current.breaking && Build.validPlace(current.block, team, current.x, current.y, current.rotation)){ boolean hasAll = infinite || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item)); if(hasAll){ - Call.beginPlace(current.block, team(), current.x, current.y, current.rotation); + Call.beginPlace(current.block, team, current.x, current.y, current.rotation); }else{ current.stuck = true; } - }else if(!current.initialized && current.breaking && Build.validBreak(team(), current.x, current.y)){ - Call.beginBreak(team(), current.x, current.y); + }else if(!current.initialized && current.breaking && Build.validBreak(team, current.x, current.y)){ + Call.beginBreak(team, current.x, current.y); }else{ plans.removeFirst(); return; } - }else if(tile.team() != team()){ + }else if(tile.team() != team){ plans.removeFirst(); return; } if(tile.build instanceof ConstructBuild && !current.initialized){ - Core.app.post(() -> Events.fire(new BuildSelectEvent(tile, team(), (Builderc)this, current.breaking))); + Core.app.post(() -> Events.fire(new BuildSelectEvent(tile, team, (Builderc)this, current.breaking))); current.initialized = true; } @@ -128,7 +130,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ control.input.drawBreaking(request); }else{ request.block.drawRequest(request, control.input.allRequests(), - Build.validPlace(request.block, team(), request.x, request.y, request.rotation) || control.input.requestMatches(request)); + Build.validPlace(request.block, team, request.x, request.y, request.rotation) || control.input.requestMatches(request)); } } @@ -138,7 +140,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ /** @return whether this request should be skipped, in favor of the next one. */ boolean shouldSkip(BuildPlan request, @Nullable Building core){ //requests that you have at least *started* are considered - if(state.rules.infiniteResources || team().rules().infiniteResources || request.breaking || core == null) return false; + if(state.rules.infiniteResources || team.rules().infiniteResources || request.breaking || core == null) return false; return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item) && Mathf.round(i.amount * state.rules.buildCostMultiplier) > 0) && !request.initialized); } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 3854876873..0859605240 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -310,7 +310,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f); //apply knockback based on spawns - if(team != state.rules.waveTeam && state.hasSpawns()){ + if(team != state.rules.waveTeam && state.hasSpawns() && (!net.client() || isLocal())){ float relativeSize = state.rules.dropZoneRadius + hitSize/2f + 1f; for(Tile spawn : spawner.getSpawns()){ if(within(spawn.worldx(), spawn.worldy(), relativeSize)){ From 8f186a16b313d83fe69e6aae991700c946b7d964 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 10:12:24 -0500 Subject: [PATCH 141/162] Build beginPlace+Break access tracking / Instant rotation --- .../src/mindustry/entities/comp/BuilderComp.java | 4 ++-- core/src/mindustry/world/Build.java | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index a546637544..5b7afb3c9b 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -81,12 +81,12 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ boolean hasAll = infinite || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item)); if(hasAll){ - Call.beginPlace(current.block, team, current.x, current.y, current.rotation); + Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation); }else{ current.stuck = true; } }else if(!current.initialized && current.breaking && Build.validBreak(team, current.x, current.y)){ - Call.beginBreak(team, current.x, current.y); + Call.beginBreak(self(), team, current.x, current.y); }else{ plans.removeFirst(); return; diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index 70e6bb653b..2ea4478655 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -20,7 +20,7 @@ public class Build{ private static final IntSet tmp = new IntSet(); @Remote(called = Loc.server) - public static void beginBreak(Team team, int x, int y){ + public static void beginBreak(@Nullable Unit unit, Team team, int x, int y){ if(!validBreak(team, x, y)){ return; } @@ -40,14 +40,14 @@ public class Build{ tile.setBlock(sub, team, rotation); tile.bc().setDeconstruct(previous); tile.build.health = tile.build.maxHealth * prevPercent; - + if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name; Core.app.post(() -> Events.fire(new BlockBuildBeginEvent(tile, team, true))); } /** Places a ConstructBlock at this location. */ @Remote(called = Loc.server) - public static void beginPlace(Block result, Team team, int x, int y, int rotation){ + public static void beginPlace(@Nullable Unit unit, Block result, Team team, int x, int y, int rotation){ if(!validPlace(result, team, x, y, rotation)){ return; } @@ -57,6 +57,15 @@ public class Build{ //just in case if(tile == null) return; + //auto-rotate the block to the correct orientation and bail out + if(tile.team() == team && tile.block == result && tile.build != null){ + if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name; + tile.build.rotation = Mathf.mod(rotation, 4); + tile.build.updateProximity(); + tile.build.noSleep(); + return; + } + Block previous = tile.block(); Block sub = ConstructBlock.get(result.size); Seq prevBuild = new Seq<>(9); @@ -76,6 +85,7 @@ public class Build{ build.setConstruct(previous.size == sub.size ? previous : Blocks.air, result); build.prevBuild = prevBuild; + if(unit != null && unit.isPlayer()) build.lastAccessed = unit.getPlayer().name; result.placeBegan(tile, previous); From 9e53b3b7e66ab9dbfbbc57af3758a3afc81878ef Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 10:33:51 -0500 Subject: [PATCH 142/162] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4c8606ea07..a948e0b3bb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -17,7 +17,9 @@ assignees: '' **Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.* -**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME.* +**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME.* + +If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot. **Crash report**: *The contents of relevant crash report files. REQUIRED if you are reporting a crash.* From e3f2966db3d18f4f27ffa35bf9b8d7942eca6e1c Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 10:37:07 -0500 Subject: [PATCH 143/162] Nevermind, reverting to beta for last pre-release --- build.gradle | 2 +- core/src/mindustry/entities/Lightning.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 79290c6ac8..5adc73c9ee 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ allprojects{ ext{ versionNumber = '6' - if(!project.hasProperty("versionModifier")) versionModifier = 'release' + if(!project.hasProperty("versionModifier")) versionModifier = 'beta' if(!project.hasProperty("versionType")) versionType = 'official' appName = 'Mindustry' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' diff --git a/core/src/mindustry/entities/Lightning.java b/core/src/mindustry/entities/Lightning.java index 61f42f2e72..ce5a3f97da 100644 --- a/core/src/mindustry/entities/Lightning.java +++ b/core/src/mindustry/entities/Lightning.java @@ -53,7 +53,7 @@ public class Lightning{ world.raycastEach(World.toTile(from.getX()), World.toTile(from.getY()), World.toTile(to.getX()), World.toTile(to.getY()), (wx, wy) -> { Tile tile = world.tile(wx, wy); - if(tile != null && tile.block().insulated){ + if(tile != null && tile.block().insulated && tile.team() != team){ bhit = true; //snap it instead of removing lines.get(lines.size -1).set(wx * tilesize, wy * tilesize); From 29be8176c19f321d8eb5eaed8d020ed6e6cd4fa0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 11:08:12 -0500 Subject: [PATCH 144/162] Fixed some crashes --- core/src/mindustry/input/MobileInput.java | 2 +- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 8baf077073..b3b519609d 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -769,7 +769,7 @@ public class MobileInput extends InputHandler implements GestureListener{ @Override public boolean pan(float x, float y, float deltaX, float deltaY){ - if(Core.scene.hasDialog() || Core.settings.getBool("keyboard")) return false; + if(Core.scene == null || Core.scene.hasDialog() || Core.settings.getBool("keyboard")) return false; float scale = Core.camera.width / Core.graphics.getWidth(); deltaX *= scale; diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 121fb41d57..94d525bce0 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -711,6 +711,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.table(t -> { t.add("@sectors.resources").padRight(4); for(UnlockableContent c : sector.info.resources){ + if(c == null) continue; //apparently this is possible. t.image(c.icon(Cicon.small)).padRight(3).size(Cicon.small.size); } }).padLeft(10f).fillX().row(); From bc114dfefcab60d5f1c63538468fc4a039b34c52 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 11:37:02 -0500 Subject: [PATCH 145/162] Version is "release" for real now --- build.gradle | 2 +- fastlane/metadata/android/en-US/changelogs/29733.txt | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29733.txt diff --git a/build.gradle b/build.gradle index 5adc73c9ee..79290c6ac8 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ allprojects{ ext{ versionNumber = '6' - if(!project.hasProperty("versionModifier")) versionModifier = 'beta' + if(!project.hasProperty("versionModifier")) versionModifier = 'release' if(!project.hasProperty("versionType")) versionType = 'official' appName = 'Mindustry' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' diff --git a/fastlane/metadata/android/en-US/changelogs/29733.txt b/fastlane/metadata/android/en-US/changelogs/29733.txt new file mode 100644 index 0000000000..da6bfa3221 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29733.txt @@ -0,0 +1,11 @@ +The final beta build. + +- Updated link to wiki modding guide, now points to new wiki +- Fixed weaving missiles consistently moving off to one direction +- Fixed units shooting fast bullets on servers in certain conditions +- Fixed some crashes +- Made construction of rotated blocks free/instant (i.e. equivalent to manually rotating it) + +Campaign: +- Better production calculation system +- Fixed deconstruction counting as production From 979e39f5880492495e7d3066da0d1b57c4043bd7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 12:14:46 -0500 Subject: [PATCH 146/162] Added unit to BlockBuildBeginEvent --- core/src/mindustry/game/EventType.java | 8 +++++--- core/src/mindustry/world/Build.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index f0aa3278b2..3fd2826cb5 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -278,11 +278,13 @@ public class EventType{ public static class BlockBuildBeginEvent{ public final Tile tile; public final Team team; + public final @Nullable Unit unit; public final boolean breaking; - public BlockBuildBeginEvent(Tile tile, Team team, boolean breaking){ + public BlockBuildBeginEvent(Tile tile, Team team, Unit unit, boolean breaking){ this.tile = tile; this.team = team; + this.unit = unit; this.breaking = breaking; } } @@ -310,10 +312,10 @@ public class EventType{ public static class BuildSelectEvent{ public final Tile tile; public final Team team; - public final Builderc builder; + public final Unit builder; public final boolean breaking; - public BuildSelectEvent(Tile tile, Team team, Builderc builder, boolean breaking){ + public BuildSelectEvent(Tile tile, Team team, Unit builder, boolean breaking){ this.tile = tile; this.team = team; this.builder = builder; diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index 2ea4478655..2355dd8118 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -42,7 +42,7 @@ public class Build{ tile.build.health = tile.build.maxHealth * prevPercent; if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name; - Core.app.post(() -> Events.fire(new BlockBuildBeginEvent(tile, team, true))); + Core.app.post(() -> Events.fire(new BlockBuildBeginEvent(tile, team, unit, true))); } /** Places a ConstructBlock at this location. */ @@ -89,7 +89,7 @@ public class Build{ result.placeBegan(tile, previous); - Core.app.post(() -> Events.fire(new BlockBuildBeginEvent(tile, team, false))); + Core.app.post(() -> Events.fire(new BlockBuildBeginEvent(tile, team, unit, false))); } /** Returns whether a tile can be placed at this location by this team. */ From 682c1692dfb7030fc0825d20b9b8199637370cd1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 12:15:22 -0500 Subject: [PATCH 147/162] Compilation fix --- core/src/mindustry/entities/comp/BuilderComp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 5b7afb3c9b..b39ed5baef 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -97,7 +97,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ } if(tile.build instanceof ConstructBuild && !current.initialized){ - Core.app.post(() -> Events.fire(new BuildSelectEvent(tile, team, (Builderc)this, current.breaking))); + Core.app.post(() -> Events.fire(new BuildSelectEvent(tile, team, self(), current.breaking))); current.initialized = true; } From 80f027471c595a9833963ac6b60a4e0aa884ed3f Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Sun, 29 Nov 2020 19:35:49 +0100 Subject: [PATCH 148/162] Update RepairFieldAbility.java --- core/src/mindustry/entities/abilities/RepairFieldAbility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/abilities/RepairFieldAbility.java b/core/src/mindustry/entities/abilities/RepairFieldAbility.java index 8df0a96e2c..9e2890589a 100644 --- a/core/src/mindustry/entities/abilities/RepairFieldAbility.java +++ b/core/src/mindustry/entities/abilities/RepairFieldAbility.java @@ -30,7 +30,7 @@ public class RepairFieldAbility extends Ability{ Units.nearby(unit.team, unit.x, unit.y, range, other -> { if(other.damaged()){ - healEffect.at(unit); + healEffect.at(other); wasHealed = true; } other.heal(amount); From 2a9f362e15748f42bac06091b523bf9c0aa50a1e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 13:59:09 -0500 Subject: [PATCH 149/162] Fixed #3654 --- core/src/mindustry/Vars.java | 2 ++ core/src/mindustry/ai/Pathfinder.java | 5 +++-- core/src/mindustry/core/UI.java | 2 +- core/src/mindustry/ui/dialogs/ModsDialog.java | 10 +++++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 8269c05b06..d5b9778f67 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -47,6 +47,8 @@ public class Vars implements Loadable{ public static final int bufferSize = 8192; /** global charset, since Android doesn't support the Charsets class */ public static final Charset charset = Charset.forName("UTF-8"); + /** mods suggested for import */ + public static final String[] suggestedMods = {""}; /** main application name, capitalized */ public static final String appName = "Mindustry"; /** URL for itch.io donations. */ diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index 392481b3ac..c5b03f40bd 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -13,6 +13,7 @@ import mindustry.game.EventType.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.world.*; +import mindustry.world.blocks.storage.*; import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -115,7 +116,7 @@ public class Pathfinder implements Runnable{ } return PathTile.get( - tile.build == null || !tile.solid() ? 0 : Math.min((int)(tile.build.health / 40), 80), + tile.build == null || !tile.solid() || tile.block() instanceof CoreBlock ? 0 : Math.min((int)(tile.build.health / 40), 80), tile.getTeamID(), tile.solid(), tile.floor().isLiquid, @@ -458,7 +459,7 @@ public class Pathfinder implements Runnable{ /** costs of getting to a specific tile */ public int[][] weights; /** search IDs of each position - the highest, most recent search is prioritized and overwritten */ - int[][] searches; + public int[][] searches; /** search frontier, these are Pos objects */ IntQueue frontier = new IntQueue(); /** all target positions; these positions have a cost of 0, and must be synchronized on! */ diff --git a/core/src/mindustry/core/UI.java b/core/src/mindustry/core/UI.java index 4437bb4d48..3b7504be6d 100644 --- a/core/src/mindustry/core/UI.java +++ b/core/src/mindustry/core/UI.java @@ -258,11 +258,11 @@ public class UI implements ApplicationListener, Loadable{ TextField field = cont.field(def, t -> {}).size(330f, 50f).get(); field.setFilter((f, c) -> field.getText().length() < textLength && filter.acceptChar(f, c)); buttons.defaults().size(120, 54).pad(4); + buttons.button("@cancel", this::hide); buttons.button("@ok", () -> { confirmed.get(field.getText()); hide(); }).disabled(b -> field.getText().isEmpty()); - buttons.button("@cancel", this::hide); keyDown(KeyCode.enter, () -> { String text = field.getText(); if(!text.isEmpty()){ diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 866c3460e4..63b94b277b 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -102,12 +102,16 @@ public class ModsDialog extends BaseDialog{ t.button("@mod.import.github", Icon.github, bstyle, () -> { dialog.hide(); + var modString = Core.settings.getString("lastmod", ""); + var suggested = Structs.random(suggestedMods); - ui.showTextInput("@mod.import.github", "", 64, Core.settings.getString("lastmod", "Anuken/ExampleMod"), text -> { - Core.settings.put("lastmod", text); + ui.showTextInput("@mod.import.github", "", 64, modString.isEmpty() ? suggested : modString, text -> { + if(!modString.isEmpty() || !Structs.eq(suggested, text)){ + Core.settings.put("lastmod", text); + } ui.loadfrag.show(); - //Try to download the 6.0 branch first, but if it doesn't exist try master. + //Try to download the 6.0 branch first, but if it doesn't exist, try master. githubImport("6.0", text, e1 -> { githubImport("master", text, e2 -> { githubImport("main", text, e3 -> { From a7c18fc598b3cc6de2a06fc2da106df6e62c91d0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 16:34:31 -0500 Subject: [PATCH 150/162] Fixed #3656 --- core/assets/maps/planetaryTerminal.msav | Bin 29224 -> 29230 bytes core/src/mindustry/content/UnitTypes.java | 1 + core/src/mindustry/core/Control.java | 2 +- core/src/mindustry/game/Universe.java | 2 ++ 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/assets/maps/planetaryTerminal.msav b/core/assets/maps/planetaryTerminal.msav index f5a7df9a003aa9e5463b3b71aaecd76f6391960a..7c45ebfca2aec25bb9718eb08405a4349e3c7ac9 100644 GIT binary patch delta 25264 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≪x7@ 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 ZKnOViQSJiQ&)V;tX^!stf+p? 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 delta 25279 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 F1pr{R3VHwl diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index ca74a26868..e053a8ee65 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1657,6 +1657,7 @@ public class UnitTypes implements ContentList{ recoil = 3f; occlusion = 12f; ejectEffect = Fx.casing3; + shootSound = Sounds.shootBig; shots = 3; shotDelay = 4f; diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 4f4f45bd64..c67572d559 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -340,7 +340,7 @@ public class Control implements ApplicationListener, Loadable{ state.rules.waves = true; //reset win wave?? - state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; + state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40; //if there's still an enemy base left, fix it if(state.rules.attackMode){ diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 0aa1407879..3d12e5ec5f 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -225,9 +225,11 @@ public class Universe{ if(sector.isBeingPlayed()){ state.rules.winWave = waveMax; state.rules.waves = true; + state.rules.attackMode = false; }else{ sector.info.winWave = waveMax; sector.info.waves = true; + sector.info.attack = false; sector.saveInfo(); } From c41dfa46aa99a59748a31ad6752497f2cd6ba5a0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Nov 2020 19:41:10 -0500 Subject: [PATCH 151/162] Fixed #3657 --- core/src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 3 ++- core/src/mindustry/input/DesktopInput.java | 4 ++-- core/src/mindustry/input/MobileInput.java | 6 +++--- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 0859605240..b2f81d5526 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -90,8 +90,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I public float prefRotation(){ if(activelyBuilding()){ return angleTo(buildPlan()); - }else if(mineTile() != null){ - return angleTo(mineTile()); + }else if(mineTile != null){ + return angleTo(mineTile); }else if(moving()){ return vel().angle(); } diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 46fcef4edf..95a2abd9e7 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -37,6 +37,7 @@ public class PlanetRenderer implements Disposable{ public final VertexBatch3D batch = new VertexBatch3D(20000, false, true, 0); public float zoom = 1f; + public float orbitAlpha = 1f; private final Mesh[] outlines = new Mesh[10]; public final PlaneBatch3D projector = new PlaneBatch3D(); @@ -168,7 +169,7 @@ public class PlanetRenderer implements Disposable{ Vec3 center = planet.parent.position; float radius = planet.orbitRadius; int points = (int)(radius * 10); - Angles.circleVectors(points, radius, (cx, cy) -> batch.vertex(Tmp.v32.set(center).add(cx, 0, cy), Pal.gray)); + Angles.circleVectors(points, radius, (cx, cy) -> batch.vertex(Tmp.v32.set(center).add(cx, 0, cy), Pal.gray.write(Tmp.c1).a(orbitAlpha))); batch.flush(Gl.lineLoop); } diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index ddc84131ba..ad0e6b32f9 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -629,8 +629,8 @@ public class DesktopInput extends InputHandler{ unit.moveAt(movement); }else{ unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); - if(!movement.isZero() && ground){ - unit.vel.rotateTo(movement.angle(), unit.type.rotateSpeed); + if(!movement.isZero()){ + unit.vel.rotateTo(movement.angle(), unit.type.rotateSpeed * Math.max(Time.delta, 1)); } } diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index b3b519609d..5d0284abf7 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -836,7 +836,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(type == null) return; boolean omni = unit.type.omniMovement; - boolean legs = unit.isGrounded(); + boolean ground = unit.isGrounded(); boolean allowHealing = type.canHeal; boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && ((Building)target).damaged() && target.within(unit, type.range); @@ -908,8 +908,8 @@ public class MobileInput extends InputHandler implements GestureListener{ unit.moveAt(movement); }else{ unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); - if(!movement.isZero() && legs){ - unit.vel.rotateTo(movement.angle(), type.rotateSpeed); + if(!movement.isZero()){ + unit.vel.rotateTo(movement.angle(), unit.type.rotateSpeed * Math.max(Time.delta, 1)); } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 94d525bce0..3db6350619 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -409,6 +409,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ @Override public void draw(){ + planets.orbitAlpha = selectAlpha; planets.render(PlanetDialog.this); if(Core.scene.getDialog() == PlanetDialog.this){ Core.scene.setScrollFocus(PlanetDialog.this); From fb580326b2f5a3a63f7ef4ff1e675795a5a7f7d6 Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Mon, 30 Nov 2020 11:53:52 +0200 Subject: [PATCH 152/162] Easier reading for the monolingual --- core/assets/bundles/bundle_ro.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index dfdc4583ee..fb010855ee 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1012,7 +1012,7 @@ unit.omura.name = Omura unit.alpha.name = Alpha unit.beta.name = Beta unit.gamma.name = Gamma -unit.scepter.name = Scepter +unit.scepter.name = Septer unit.reign.name = Reign unit.vela.name = Vela unit.corvus.name = Corvus From 5ba99ecb42bd25e2f70bc4fe71c41f41ee1225a7 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Mon, 30 Nov 2020 14:21:18 +0100 Subject: [PATCH 153/162] Fixed #3661 --- core/src/mindustry/world/Build.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index 2355dd8118..86cca0d3d7 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -58,7 +58,7 @@ public class Build{ if(tile == null) return; //auto-rotate the block to the correct orientation and bail out - if(tile.team() == team && tile.block == result && tile.build != null){ + if(tile.team() == team && tile.block == result && tile.build != null && tile.block.quickRotate){ if(unit != null && unit.isPlayer()) tile.build.lastAccessed = unit.getPlayer().name; tile.build.rotation = Mathf.mod(rotation, 4); tile.build.updateProximity(); From 371a14af873b772fc527cbbdeb3bf8b4fbd98798 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 30 Nov 2020 10:15:22 -0500 Subject: [PATCH 154/162] Inlined Time.time --- core/src/mindustry/entities/Puddles.java | 8 ++++---- .../entities/bullet/ContinuousLaserBulletType.java | 4 ++-- core/src/mindustry/entities/comp/BuilderComp.java | 4 ++-- core/src/mindustry/entities/comp/FlyingComp.java | 4 ++-- core/src/mindustry/entities/comp/MinerComp.java | 10 +++++----- core/src/mindustry/entities/comp/PlayerComp.java | 2 +- core/src/mindustry/entities/comp/PuddleComp.java | 6 +++--- core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/graphics/BlockRenderer.java | 2 +- core/src/mindustry/graphics/MenuRenderer.java | 4 ++-- core/src/mindustry/graphics/OverlayRenderer.java | 12 ++++++------ core/src/mindustry/graphics/Shaders.java | 10 +++++----- .../src/mindustry/graphics/g3d/PlanetRenderer.java | 4 ++-- core/src/mindustry/input/InputHandler.java | 2 +- core/src/mindustry/input/MobileInput.java | 4 ++-- core/src/mindustry/logic/LExecutor.java | 2 ++ core/src/mindustry/type/UnitType.java | 14 +++++++------- core/src/mindustry/type/Weather.java | 14 +++++++------- core/src/mindustry/ui/dialogs/JoinDialog.java | 4 ++-- core/src/mindustry/ui/dialogs/PlanetDialog.java | 3 ++- core/src/mindustry/ui/fragments/HudFragment.java | 4 ++-- core/src/mindustry/world/Block.java | 2 +- .../src/mindustry/world/DirectionalItemBuffer.java | 4 ++-- core/src/mindustry/world/ItemBuffer.java | 4 ++-- .../world/blocks/campaign/Accelerator.java | 8 ++++---- .../world/blocks/defense/MendProjector.java | 4 ++-- .../world/blocks/defense/OverdriveProjector.java | 4 ++-- .../world/blocks/distribution/Conveyor.java | 2 +- .../world/blocks/distribution/ItemBridge.java | 6 +++--- .../world/blocks/distribution/Junction.java | 2 +- .../world/blocks/distribution/MassDriver.java | 4 ++-- .../world/blocks/distribution/PayloadConveyor.java | 2 +- .../world/blocks/environment/TreeBlock.java | 6 +++--- .../world/blocks/power/ImpactReactor.java | 6 +++--- .../world/blocks/power/ItemLiquidGenerator.java | 2 +- .../mindustry/world/blocks/power/PowerNode.java | 2 +- .../world/blocks/production/Cultivator.java | 2 +- .../mindustry/world/blocks/production/Drill.java | 2 +- .../world/blocks/production/GenericSmelter.java | 6 +++--- .../world/blocks/production/Incinerator.java | 2 +- desktop/src/mindustry/desktop/steam/SStat.java | 1 - gradle.properties | 2 +- 42 files changed, 97 insertions(+), 95 deletions(-) diff --git a/core/src/mindustry/entities/Puddles.java b/core/src/mindustry/entities/Puddles.java index 0abdae4928..a57f689884 100644 --- a/core/src/mindustry/entities/Puddles.java +++ b/core/src/mindustry/entities/Puddles.java @@ -38,9 +38,9 @@ public class Puddles{ Puddle p = map.get(tile.pos()); - if(generation == 0 && p != null && p.lastRipple() <= Time.time() - 40f){ + if(generation == 0 && p != null && p.lastRipple() <= Time.time - 40f){ Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, tile.floor().liquidDrop.color); - p.lastRipple(Time.time()); + p.lastRipple(Time.time); } return; } @@ -62,9 +62,9 @@ public class Puddles{ }else if(p.liquid() == liquid){ p.accepting(Math.max(amount, p.accepting())); - if(generation == 0 && p.lastRipple() <= Time.time() - 40f && p.amount() >= maxLiquid / 2f){ + if(generation == 0 && p.lastRipple() <= Time.time - 40f && p.amount() >= maxLiquid / 2f){ Fx.ripple.at((tile.worldx() + source.worldx()) / 2f, (tile.worldy() + source.worldy()) / 2f, 1f, p.liquid().color); - p.lastRipple(Time.time()); + p.lastRipple(Time.time); } }else{ p.amount(p.amount() + reactPuddle(p.liquid(), liquid, amount, p.tile(), (p.x() + source.worldx())/2f, (p.y() + source.worldy())/2f)); diff --git a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java index 3e570c6309..07ae245719 100644 --- a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java @@ -85,10 +85,10 @@ public class ContinuousLaserBulletType extends BulletType{ Lines.lineAngle(b.x, b.y, b.rotation(), baseLen); for(int s = 0; s < colors.length; s++){ - Draw.color(Tmp.c1.set(colors[s]).mul(1f + Mathf.absin(Time.time(), 1f, 0.1f))); + Draw.color(Tmp.c1.set(colors[s]).mul(1f + Mathf.absin(Time.time, 1f, 0.1f))); for(int i = 0; i < tscales.length; i++){ Tmp.v1.trns(b.rotation() + 180f, (lenscales[i] - 1f) * spaceMag); - Lines.stroke((width + Mathf.absin(Time.time(), oscScl, oscMag)) * fout * strokes[s] * tscales[i]); + Lines.stroke((width + Mathf.absin(Time.time, oscScl, oscMag)) * fout * strokes[s] * tscales[i]); Lines.lineAngle(b.x + Tmp.v1.x, b.y + Tmp.v1.y, b.rotation(), baseLen * lenscales[i], false); } } diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index b39ed5baef..b00b43774f 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -224,7 +224,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ float tx = plan.drawx(), ty = plan.drawy(); Lines.stroke(1f, Pal.accent); - float focusLen = 3.8f + Mathf.absin(Time.time(), 1.1f, 0.6f); + float focusLen = 3.8f + Mathf.absin(Time.time, 1.1f, 0.6f); float px = x + Angles.trnsx(rotation, focusLen); float py = y + Angles.trnsy(rotation, focusLen); @@ -246,7 +246,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{ Lines.line(px, py, x1, y1); Lines.line(px, py, x3, y3); - Fill.circle(px, py, 1.6f + Mathf.absin(Time.time(), 0.8f, 1.5f)); + Fill.circle(px, py, 1.6f + Mathf.absin(Time.time, 0.8f, 1.5f)); Draw.color(); } diff --git a/core/src/mindustry/entities/comp/FlyingComp.java b/core/src/mindustry/entities/comp/FlyingComp.java index d37a6da899..43955b75a1 100644 --- a/core/src/mindustry/entities/comp/FlyingComp.java +++ b/core/src/mindustry/entities/comp/FlyingComp.java @@ -46,8 +46,8 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } void wobble(){ - x += Mathf.sin(Time.time() + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; - y += Mathf.cos(Time.time() + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; + x += Mathf.sin(Time.time + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; + y += Mathf.cos(Time.time + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; } void moveAt(Vec2 vector, float acceleration){ diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index b993815a36..8eff7d58ce 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -105,25 +105,25 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ @Override public void draw(){ if(!mining()) return; - float focusLen = hitSize / 2f + Mathf.absin(Time.time(), 1.1f, 0.5f); + float focusLen = hitSize / 2f + Mathf.absin(Time.time, 1.1f, 0.5f); float swingScl = 12f, swingMag = tilesize / 8f; float flashScl = 0.3f; float px = x + Angles.trnsx(rotation, focusLen); float py = y + Angles.trnsy(rotation, focusLen); - float ex = mineTile.worldx() + Mathf.sin(Time.time() + 48, swingScl, swingMag); - float ey = mineTile.worldy() + Mathf.sin(Time.time() + 48, swingScl + 2f, swingMag); + float ex = mineTile.worldx() + Mathf.sin(Time.time + 48, swingScl, swingMag); + float ey = mineTile.worldy() + Mathf.sin(Time.time + 48, swingScl + 2f, swingMag); Draw.z(Layer.flyingUnit + 0.1f); - Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time(), 0.5f, flashScl)); + Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time, 0.5f, flashScl)); Drawf.laser(team(), Core.atlas.find("minelaser"), Core.atlas.find("minelaser-end"), px, py, ex, ey, 0.75f); if(isLocal()){ Lines.stroke(1f, Pal.accent); - Lines.poly(mineTile.worldx(), mineTile.worldy(), 4, tilesize / 2f * Mathf.sqrt2, Time.time()); + Lines.poly(mineTile.worldx(), mineTile.worldy(), 4, tilesize / 2f * Mathf.sqrt2, Time.time); } Draw.color(); diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index 0f8236377c..5e6c214cc6 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -243,7 +243,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } if(Core.settings.getBool("playerchat") && ((textFadeTime > 0 && lastText != null) || typing)){ - String text = textFadeTime <= 0 || lastText == null ? "[lightgray]" + Strings.animated(Time.time(), 4, 15f, ".") : lastText; + String text = textFadeTime <= 0 || lastText == null ? "[lightgray]" + Strings.animated(Time.time, 4, 15f, ".") : lastText; float width = 100f; float visualFadeTime = 1f - Mathf.curve(1f - textFadeTime, 0.9f); font.setColor(1f, 1f, 1f, textFadeTime <= 0 || lastText == null ? 1f : visualFadeTime); diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index a447bd633a..720aee2f93 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -101,10 +101,10 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ float sscl = 25f; Draw.color(tmp.set(liquid.color).shiftValue(-0.05f)); - Fill.circle(x + Mathf.sin(Time.time() + seeds * 532, sscl, smag), y + Mathf.sin(Time.time() + seeds * 53, sscl, smag), f * 8f); + Fill.circle(x + Mathf.sin(Time.time + seeds * 532, sscl, smag), y + Mathf.sin(Time.time + seeds * 53, sscl, smag), f * 8f); Angles.randLenVectors(id(), 3, f * 6f, (ex, ey) -> { - Fill.circle(x + ex + Mathf.sin(Time.time() + seeds * 532, sscl, smag), - y + ey + Mathf.sin(Time.time() + seeds * 53, sscl, smag), f * 5f); + Fill.circle(x + ex + Mathf.sin(Time.time + seeds * 532, sscl, smag), + y + ey + Mathf.sin(Time.time + seeds * 53, sscl, smag), f * 5f); seeds++; }); Draw.color(); diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 3d12e5ec5f..50f1f006d7 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -201,7 +201,7 @@ public class Universe{ } sector.info.export.each((item, amount) -> { - if(sector.info.items.get(item) <= 0 && sector.info.production.get(item, ExportStat::new).mean <= 0){ + if(sector.info.items.get(item) <= 0 && sector.info.production.get(item, ExportStat::new).mean < 0){ //disable export when production is negative. sector.info.export.get(item).mean = 0f; } diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index a5a78811f5..651e1d01d7 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -129,7 +129,7 @@ public class BlockRenderer implements Disposable{ if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue; Draw.alpha(0.33f * brokenFade); - Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime(), 6f, 0.2f)); + Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime, 6f, 0.2f)); Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset, block.y * tilesize + b.offset, b.rotate ? block.rotation * 90 : 0f); } Draw.reset(); diff --git a/core/src/mindustry/graphics/MenuRenderer.java b/core/src/mindustry/graphics/MenuRenderer.java index 87ab169670..efa42cfc89 100644 --- a/core/src/mindustry/graphics/MenuRenderer.java +++ b/core/src/mindustry/graphics/MenuRenderer.java @@ -257,11 +257,11 @@ public class MenuRenderer implements Disposable{ Draw.color(Pal.engine); Fill.circle(x + Angles.trnsx(rotation + 180, engineOffset), y + Angles.trnsy(rotation + 180, engineOffset), - engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)); + engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f)); Draw.color(Color.white); Fill.circle(x + Angles.trnsx(rotation + 180, engineOffset - 1f), y + Angles.trnsy(rotation + 180, engineOffset - 1f), - (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)) / 2f); + (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f)) / 2f); Draw.color(); Draw.rect(icon, x, y, flyerRot - 90); diff --git a/core/src/mindustry/graphics/OverlayRenderer.java b/core/src/mindustry/graphics/OverlayRenderer.java index 6cc1a1a851..40de5e0d63 100644 --- a/core/src/mindustry/graphics/OverlayRenderer.java +++ b/core/src/mindustry/graphics/OverlayRenderer.java @@ -89,7 +89,7 @@ public class OverlayRenderer{ } Lines.stroke(unitFade); - Lines.square(select.x, select.y, select.hitSize() * 1.5f, Time.time() * 2f); + Lines.square(select.x, select.y, select.hitSize() * 1.5f, Time.time * 2f); Draw.reset(); } @@ -112,14 +112,14 @@ public class OverlayRenderer{ if(dst < state.rules.enemyCoreBuildRadius * 2.2f){ Draw.color(Color.darkGray); Lines.circle(core.x, core.y - 2, state.rules.enemyCoreBuildRadius); - Draw.color(Pal.accent, core.team.color, 0.5f + Mathf.absin(Time.time(), 10f, 0.5f)); + Draw.color(Pal.accent, core.team.color, 0.5f + Mathf.absin(Time.time, 10f, 0.5f)); Lines.circle(core.x, core.y, state.rules.enemyCoreBuildRadius); } }); } Lines.stroke(2f); - Draw.color(Color.gray, Color.lightGray, Mathf.absin(Time.time(), 8f, 1f)); + Draw.color(Color.gray, Color.lightGray, Mathf.absin(Time.time, 8f, 1f)); if(state.hasSpawns()){ for(Tile tile : spawner.getSpawns()){ @@ -167,15 +167,15 @@ public class OverlayRenderer{ float size = 8; Draw.rect(player.unit().item().icon(Cicon.medium), v.x, v.y, size, size); Draw.color(Pal.accent); - Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f)); + Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time, 5f, 1f)); Draw.reset(); Building tile = world.buildWorld(v.x, v.y); if(input.canDropItem() && tile != null && tile.interactable(player.team()) && tile.acceptStack(player.unit().item(), player.unit().stack.amount, player.unit()) > 0 && player.within(tile, itemTransferRange)){ Lines.stroke(3f, Pal.gray); - Lines.square(tile.x, tile.y, tile.block.size * tilesize / 2f + 3 + Mathf.absin(Time.time(), 5f, 1f)); + Lines.square(tile.x, tile.y, tile.block.size * tilesize / 2f + 3 + Mathf.absin(Time.time, 5f, 1f)); Lines.stroke(1f, Pal.place); - Lines.square(tile.x, tile.y, tile.block.size * tilesize / 2f + 2 + Mathf.absin(Time.time(), 5f, 1f)); + Lines.square(tile.x, tile.y, tile.block.size * tilesize / 2f + 2 + Mathf.absin(Time.time, 5f, 1f)); Draw.reset(); } diff --git a/core/src/mindustry/graphics/Shaders.java b/core/src/mindustry/graphics/Shaders.java index fbe0404b9f..ac3aef896c 100644 --- a/core/src/mindustry/graphics/Shaders.java +++ b/core/src/mindustry/graphics/Shaders.java @@ -66,7 +66,7 @@ public class Shaders{ public void apply(){ setUniformf("u_resolution", Core.graphics.getWidth(), Core.graphics.getHeight()); - setUniformf("u_time", Time.globalTime() / 10f); + setUniformf("u_time", Time.globalTime / 10f); setUniformf("u_campos", camera.position); setUniformf("u_rcampos", Tmp.v31.set(camera.position).sub(planet.position)); setUniformf("u_light", planet.getLightNormal()); @@ -174,7 +174,7 @@ public class Shaders{ setUniformf("u_color", color); setUniformf("u_uv", region.u, region.v); setUniformf("u_uv2", region.u2, region.v2); - setUniformf("u_time", Time.time()); + setUniformf("u_time", Time.time); setUniformf("u_texsize", region.texture.width, region.texture.height); } } @@ -188,7 +188,7 @@ public class Shaders{ @Override public void apply(){ setUniformf("u_dp", Scl.scl(1f)); - setUniformf("u_time", Time.time() / Scl.scl(1f)); + setUniformf("u_time", Time.time / Scl.scl(1f)); setUniformf("u_offset", Core.camera.position.x - Core.camera.width / 2, Core.camera.position.y - Core.camera.height / 2); @@ -216,7 +216,7 @@ public class Shaders{ setUniformf("u_campos", Core.camera.position.x, Core.camera.position.y); setUniformf("u_ccampos", Core.camera.position); setUniformf("u_resolution", Core.graphics.getWidth(), Core.graphics.getHeight()); - setUniformf("u_time", Time.time()); + setUniformf("u_time", Time.time); texture.bind(1); renderer.effectBuffer.getTexture().bind(0); @@ -240,7 +240,7 @@ public class Shaders{ public void apply(){ setUniformf("u_campos", Core.camera.position.x - Core.camera.width / 2, Core.camera.position.y - Core.camera.height / 2); setUniformf("u_resolution", Core.camera.width, Core.camera.height); - setUniformf("u_time", Time.time()); + setUniformf("u_time", Time.time); if(hasUniform("u_noise")){ Core.assets.get("sprites/noise.png", Texture.class).bind(1); diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 95a2abd9e7..9e70ced734 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -209,7 +209,7 @@ public class PlanetRenderer implements Disposable{ for(int i = 0; i < pointCount + 1; i++){ float f = i / (float)pointCount; - Tmp.c1.set(from).lerp(to, (f+Time.globalTime()/timeScale)%1f); + Tmp.c1.set(from).lerp(to, (f+ Time.globalTime /timeScale)%1f); batch.color(Tmp.c1); batch.vertex(Tmp.bz3.valueAt(Tmp.v32, f)); @@ -218,7 +218,7 @@ public class PlanetRenderer implements Disposable{ } public void drawBorders(Sector sector, Color base){ - Color color = Tmp.c1.set(base).a(base.a + 0.3f + Mathf.absin(Time.globalTime(), 5f, 0.3f)); + Color color = Tmp.c1.set(base).a(base.a + 0.3f + Mathf.absin(Time.globalTime, 5f, 0.3f)); float r1 = 1f; float r2 = outlineRad + 0.001f; diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index c7ca5cd022..bf6607b2fe 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -749,7 +749,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ boolean valid = validPlace(request.x, request.y, request.block, request.rotation); Draw.reset(); - Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime(), 6f, 0.28f)); + Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime, 6f, 0.28f)); Draw.alpha(1f); request.block.drawRequestConfigTop(request, selectRequests); Draw.reset(); diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 5d0284abf7..3c3fd8be76 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -376,8 +376,8 @@ public class MobileInput extends InputHandler implements GestureListener{ float radius = Interp.swingIn.apply(crosshairScale); - Lines.poly(target.getX(), target.getY(), 4, 7f * radius, Time.time() * 1.5f); - Lines.spikes(target.getX(), target.getY(), 3f * radius, 6f * radius, 4, Time.time() * 1.5f); + Lines.poly(target.getX(), target.getY(), 4, 7f * radius, Time.time * 1.5f); + Lines.spikes(target.getX(), target.getY(), 3f * radius, 6f * radius, 4, Time.time * 1.5f); } Draw.reset(); diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 244746ef81..e2498fd431 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -285,6 +285,8 @@ public class LExecutor{ exec.setnum(outX, cache.x); exec.setnum(outY, cache.y); } + }else{ + exec.setbool(outFound, false); } } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index f5a40de645..57a5aba215 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -502,9 +502,9 @@ public class UnitType extends UnlockableContent{ //draw back items if(unit.item() != null && unit.itemTime > 0.01f){ - float size = (itemSize + Mathf.absin(Time.time(), 5f, 1f)) * unit.itemTime; + float size = (itemSize + Mathf.absin(Time.time, 5f, 1f)) * unit.itemTime; - Draw.mixcol(Pal.accent, Mathf.absin(Time.time(), 5f, 0.5f)); + Draw.mixcol(Pal.accent, Mathf.absin(Time.time, 5f, 0.5f)); Draw.rect(unit.item().icon(Cicon.medium), unit.x + Angles.trnsx(unit.rotation + 180f, itemOffsetY), unit.y + Angles.trnsy(unit.rotation + 180f, itemOffsetY), @@ -516,7 +516,7 @@ public class UnitType extends UnlockableContent{ Lines.circle( unit.x + Angles.trnsx(unit.rotation + 180f, itemOffsetY), unit.y + Angles.trnsy(unit.rotation + 180f, itemOffsetY), - (3f + Mathf.absin(Time.time(), 5f, 1f)) * unit.itemTime); + (3f + Mathf.absin(Time.time, 5f, 1f)) * unit.itemTime); if(unit.isLocal() && !renderer.pixelator.enabled()){ Fonts.outline.draw(unit.stack.amount + "", @@ -538,20 +538,20 @@ public class UnitType extends UnlockableContent{ if(unit instanceof Trailc){ Trail trail = ((Trailc)unit).trail(); - trail.draw(unit.team.color, (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f) * scale) * trailScl); + trail.draw(unit.team.color, (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f) * scale) * trailScl); } Draw.color(unit.team.color); Fill.circle( unit.x + Angles.trnsx(unit.rotation + 180, offset), unit.y + Angles.trnsy(unit.rotation + 180, offset), - (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)) * scale + (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f)) * scale ); Draw.color(Color.white); Fill.circle( unit.x + Angles.trnsx(unit.rotation + 180, offset - 1f), unit.y + Angles.trnsy(unit.rotation + 180, offset - 1f), - (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)) / 2f * scale + (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f)) / 2f * scale ); Draw.color(); } @@ -632,7 +632,7 @@ public class UnitType extends UnlockableContent{ } public Color cellColor(Unit unit){ - return Tmp.c1.set(Color.black).lerp(unit.team.color, unit.healthf() + Mathf.absin(Time.time(), Math.max(unit.healthf() * 5f, 1f), 1f - unit.healthf())); + return Tmp.c1.set(Color.black).lerp(unit.team.color, unit.healthf() + Mathf.absin(Time.time, Math.max(unit.healthf() * 5f, 1f), 1f - unit.healthf())); } public void drawLight(Unit unit){ diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 8c9bdb0b60..3f815f03e8 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -90,7 +90,7 @@ public class Weather extends UnlockableContent{ } if(!headless && sound != Sounds.none){ - float noise = soundVolOscMag > 0 ? (float)Math.abs(Noise.rawNoise(Time.time() / soundVolOscScl)) * soundVolOscMag : 0; + float noise = soundVolOscMag > 0 ? (float)Math.abs(Noise.rawNoise(Time.time / soundVolOscScl)) * soundVolOscMag : 0; control.sound.loop(sound, Math.max((soundVol + noise) * state.opacity, soundVolMin)); } } @@ -120,8 +120,8 @@ public class Weather extends UnlockableContent{ float scl = rand.random(0.5f, 1f); float scl2 = rand.random(0.5f, 1f); float size = rand.random(sizeMin, sizeMax); - float x = (rand.random(0f, world.unitWidth()) + Time.time() * windx * scl2); - float y = (rand.random(0f, world.unitHeight()) + Time.time() * windy * scl); + float x = (rand.random(0f, world.unitWidth()) + Time.time * windx * scl2); + float y = (rand.random(0f, world.unitHeight()) + Time.time * windy * scl); float alpha = rand.random(minAlpha, maxAlpha); x += Mathf.sin(y, rand.random(sinSclMin, sinSclMax), rand.random(sinMagMin, sinMagMax)); @@ -155,8 +155,8 @@ public class Weather extends UnlockableContent{ float scl = rand.random(0.5f, 1f); float scl2 = rand.random(0.5f, 1f); float size = rand.random(sizeMin, sizeMax); - float x = (rand.random(0f, world.unitWidth()) + Time.time() * xspeed * scl2); - float y = (rand.random(0f, world.unitHeight()) - Time.time() * yspeed * scl); + float x = (rand.random(0f, world.unitWidth()) + Time.time * xspeed * scl2); + float y = (rand.random(0f, world.unitHeight()) - Time.time * yspeed * scl); float tint = rand.random(1f) * alpha; x -= Tmp.r1.x; @@ -180,7 +180,7 @@ public class Weather extends UnlockableContent{ int total = (int)(Tmp.r1.area() / density * intensity) / 2; Lines.stroke(stroke); - float t = Time.time() / timeScale; + float t = Time.time / timeScale; for(int i = 0; i < total; i++){ float offset = rand.random(0f, 1f); @@ -227,7 +227,7 @@ public class Weather extends UnlockableContent{ float windx = vwindx * speed, windy = vwindy * speed; float scale = 1f / noisescl; - float scroll = Time.time() * scale + offset; + float scroll = Time.time * scale + offset; Tmp.tr1.texture = noise; Core.camera.bounds(Tmp.r1); Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale); diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index fe5ea1bdaf..a0987c5a49 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -199,7 +199,7 @@ public class JoinDialog extends BaseDialog{ void refreshServer(Server server){ server.content.clear(); - server.content.label(() -> Core.bundle.get("server.refreshing") + Strings.animated(Time.time(), 4, 11, ".")); + server.content.label(() -> Core.bundle.get("server.refreshing") + Strings.animated(Time.time, 4, 11, ".")); net.pingHost(server.ip, server.port, host -> setupServer(server, host), e -> { server.content.clear(); @@ -340,7 +340,7 @@ public class JoinDialog extends BaseDialog{ local.clear(); local.background(null); - local.table(Tex.button, t -> t.label(() -> "[accent]" + Core.bundle.get("hosts.discovering.any") + Strings.animated(Time.time(), 4, 10f, ".")).pad(10f)).growX(); + local.table(Tex.button, t -> t.label(() -> "[accent]" + Core.bundle.get("hosts.discovering.any") + Strings.animated(Time.time, 4, 10f, ".")).pad(10f)).growX(); net.discoverServers(this::addLocalHost, this::finishLocalHosts); } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 3db6350619..710fc29895 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -287,7 +287,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ Color color = sec.hasBase() ? Tmp.c2.set(Team.sharded.color).lerp(Team.crux.color, sec.hasEnemyBase() ? 0.5f : 0f) : - sec.preset != null ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time(), 10f, 1f)) : + sec.preset != null ? Tmp.c2.set(Team.derelict.color).lerp(Color.white, Mathf.absin(Time.time, 10f, 1f)) : sec.hasEnemyBase() ? Team.crux.color : null; @@ -627,6 +627,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ Table stable = sectorTop; if(sector == null){ + stable.clear(); return; } diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 685cdd6e88..dc9620fb42 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -275,7 +275,7 @@ public class HudFragment extends Fragment{ t.name = "nearpoint"; t.touchable = Touchable.disabled; t.table(Styles.black, c -> c.add("@nearpoint") - .update(l -> l.setColor(Tmp.c1.set(Color.white).lerp(Color.scarlet, Mathf.absin(Time.time(), 10f, 1f)))) + .update(l -> l.setColor(Tmp.c1.set(Color.white).lerp(Color.scarlet, Mathf.absin(Time.time, 10f, 1f)))) .get().setAlignment(Align.center, Align.center)) .margin(6).update(u -> u.color.a = Mathf.lerpDelta(u.color.a, Mathf.num(spawner.playerNear()), 0.1f)).get().color.a = 0f; }); @@ -317,7 +317,7 @@ public class HudFragment extends Fragment{ return coreAttackOpacity[0] > 0; }); t.table(Tex.button, top -> top.add("@coreattack").pad(2) - .update(label -> label.color.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time(), 2f, 1f)))).touchable(Touchable.disabled); + .update(label -> label.color.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f)))).touchable(Touchable.disabled); }); //'saving' indicator diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 6eec5c2b20..5e38bfa8a8 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -392,7 +392,7 @@ public class Block extends UnlockableContent{ public void drawRequest(BuildPlan req, Eachable list, boolean valid){ Draw.reset(); - Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime(), 6f, 0.28f)); + Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime, 6f, 0.28f)); Draw.alpha(1f); float prevScale = Draw.scl; Draw.scl *= req.animScale; diff --git a/core/src/mindustry/world/DirectionalItemBuffer.java b/core/src/mindustry/world/DirectionalItemBuffer.java index 4b7a7bca2f..48cbdc84c0 100644 --- a/core/src/mindustry/world/DirectionalItemBuffer.java +++ b/core/src/mindustry/world/DirectionalItemBuffer.java @@ -23,7 +23,7 @@ public class DirectionalItemBuffer{ public void accept(int buffer, Item item){ if(!accepts(buffer)) return; - buffers[buffer][indexes[buffer]++] = BufferItem.get((byte)item.id, Time.time()); + buffers[buffer][indexes[buffer]++] = BufferItem.get((byte)item.id, Time.time); } public Item poll(int buffer, float speed){ @@ -31,7 +31,7 @@ public class DirectionalItemBuffer{ long l = buffers[buffer][0]; float time = BufferItem.time(l); - if(Time.time() >= time + speed || Time.time() < time){ + if(Time.time >= time + speed || Time.time < time){ return content.item(BufferItem.item(l)); } } diff --git a/core/src/mindustry/world/ItemBuffer.java b/core/src/mindustry/world/ItemBuffer.java index 6ab014bd2f..e9001ac534 100644 --- a/core/src/mindustry/world/ItemBuffer.java +++ b/core/src/mindustry/world/ItemBuffer.java @@ -20,7 +20,7 @@ public class ItemBuffer{ public void accept(Item item, short data){ //if(!accepts()) return; - buffer[index++] = Pack.longInt(Float.floatToIntBits(Time.time()), Pack.shortInt(item.id, data)); + buffer[index++] = Pack.longInt(Float.floatToIntBits(Time.time), Pack.shortInt(item.id, data)); } public void accept(Item item){ @@ -32,7 +32,7 @@ public class ItemBuffer{ long l = buffer[0]; float time = Float.intBitsToFloat(Pack.leftInt(l)); - if(Time.time() >= time + speed || Time.time() < time){ + if(Time.time >= time + speed || Time.time < time){ return content.item(Pack.leftShort(Pack.rightInt(l))); } } diff --git a/core/src/mindustry/world/blocks/campaign/Accelerator.java b/core/src/mindustry/world/blocks/campaign/Accelerator.java index 7c8359a6bf..9fc423509e 100644 --- a/core/src/mindustry/world/blocks/campaign/Accelerator.java +++ b/core/src/mindustry/world/blocks/campaign/Accelerator.java @@ -51,7 +51,7 @@ public class Accelerator extends Block{ for(int l = 0; l < 4; l++){ float length = 7f + l * 5f; - Draw.color(team.color, Pal.darkMetal, Mathf.absin(Time.time() + l*50f, 10f, 1f)); + Draw.color(team.color, Pal.darkMetal, Mathf.absin(Time.time + l*50f, 10f, 1f)); for(int i = 0; i < 4; i++){ float rot = i*90f + 45f; @@ -67,13 +67,13 @@ public class Accelerator extends Block{ Lines.square(x, y, rad * 1.22f, 45f); Lines.stroke(3f, Pal.accent); - Lines.square(x, y, rad, Time.time() / scl); - Lines.square(x, y, rad, -Time.time() / scl); + Lines.square(x, y, rad, Time.time / scl); + Lines.square(x, y, rad, -Time.time / scl); Draw.color(team.color); for(int i = 0; i < 4; i++){ - float rot = i*90f + 45f + (-Time.time()/3f)%360f; + float rot = i*90f + 45f + (-Time.time /3f)%360f; float length = 26f; Draw.rect(arrowRegion, x + Angles.trnsx(rot, length), y + Angles.trnsy(rot, length), rot + 180f); } diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 1c0231f434..25a4c64544 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -104,10 +104,10 @@ public class MendProjector extends Block{ public void draw(){ super.draw(); - float f = 1f - (Time.time() / 100f) % 1f; + float f = 1f - (Time.time / 100f) % 1f; Draw.color(baseColor, phaseColor, phaseHeat); - Draw.alpha(heat * Mathf.absin(Time.time(), 10f, 1f) * 0.5f); + Draw.alpha(heat * Mathf.absin(Time.time, 10f, 1f) * 0.5f); Draw.rect(topRegion, x, y); Draw.alpha(1f); Lines.stroke((2f * f + 0.2f) * heat); diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index cc2c60288e..ad845991c7 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -114,10 +114,10 @@ public class OverdriveProjector extends Block{ public void draw(){ super.draw(); - float f = 1f - (Time.time() / 100f) % 1f; + float f = 1f - (Time.time / 100f) % 1f; Draw.color(baseColor, phaseColor, phaseHeat); - Draw.alpha(heat * Mathf.absin(Time.time(), 10f, 1f) * 0.5f); + Draw.alpha(heat * Mathf.absin(Time.time, 10f, 1f) * 0.5f); Draw.rect(topRegion, x, y); Draw.alpha(1f); Lines.stroke((2f * f + 0.1f) * heat); diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index 0b6181c80d..23fa7a2a46 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -114,7 +114,7 @@ public class Conveyor extends Block implements Autotiler{ @Override public void draw(){ - int frame = enabled && clogHeat <= 0.5f ? (int)(((Time.time() * speed * 8f * timeScale())) % 4) : 0; + int frame = enabled && clogHeat <= 0.5f ? (int)(((Time.time * speed * 8f * timeScale())) % 4) : 0; //draw extra conveyors facing this one for non-square tiling purposes Draw.z(Layer.blockUnder); diff --git a/core/src/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/mindustry/world/blocks/distribution/ItemBridge.java index efaeaec5ba..1cad3c94be 100644 --- a/core/src/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/mindustry/world/blocks/distribution/ItemBridge.java @@ -170,7 +170,7 @@ public class ItemBridge extends Block{ Tmp.v2.trns(tile.angleTo(other), 2f); float tx = tile.drawx(), ty = tile.drawy(); float ox = other.drawx(), oy = other.drawy(); - float alpha = Math.abs((linked ? 100 : 0)-(Time.time() * 2f) % 100f) / 100f; + float alpha = Math.abs((linked ? 100 : 0)-(Time.time * 2f) % 100f) / 100f; float x = Mathf.lerp(ox, tx, alpha); float y = Mathf.lerp(oy, ty, alpha); @@ -207,7 +207,7 @@ public class ItemBridge extends Block{ boolean linked = other.pos() == link; Drawf.select(other.drawx(), other.drawy(), - other.block().size * tilesize / 2f + 2f + (linked ? 0f : Mathf.absin(Time.time(), 4f, 1f)), linked ? Pal.place : Pal.breakInvalid); + other.block().size * tilesize / 2f + 2f + (linked ? 0f : Mathf.absin(Time.time, 4f, 1f)), linked ? Pal.place : Pal.breakInvalid); } } } @@ -298,7 +298,7 @@ public class ItemBridge extends Block{ int i = relativeTo(other.x, other.y); - Draw.color(Color.white, Color.black, Mathf.absin(Time.time(), 6f, 0.07f)); + Draw.color(Color.white, Color.black, Mathf.absin(Time.time, 6f, 0.07f)); Draw.alpha(Math.max(uptime, 0.25f) * opacity); Draw.rect(endRegion, x, y, i * 90 + 90); diff --git a/core/src/mindustry/world/blocks/distribution/Junction.java b/core/src/mindustry/world/blocks/distribution/Junction.java index 4f8b3a9869..a60e13fb2b 100644 --- a/core/src/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/mindustry/world/blocks/distribution/Junction.java @@ -44,7 +44,7 @@ public class Junction extends Block{ long l = buffer.buffers[i][0]; float time = BufferItem.time(l); - if(Time.time() >= time + speed / timeScale || Time.time() < time){ + if(Time.time >= time + speed / timeScale || Time.time < time){ Item item = content.item(BufferItem.item(l)); Building dest = nearby(i); diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index 9191e7dfe1..c1824c7414 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -65,7 +65,7 @@ public class MassDriver extends Block{ if(selected == null || !(selected.block instanceof MassDriver) || !(selected.within(x * tilesize, y * tilesize, range))) return; //if so, draw a dotted line towards it while it is in range - float sin = Mathf.absin(Time.time(), 6f, 1f); + float sin = Mathf.absin(Time.time, 6f, 1f); Tmp.v1.set(x * tilesize + offset, y * tilesize + offset).sub(selected.x, selected.y).limit((size / 2f + 1) * tilesize + sin + 0.5f); float x2 = x * tilesize - Tmp.v1.x, y2 = y * tilesize - Tmp.v1.y, x1 = selected.x + Tmp.v1.x, y1 = selected.y + Tmp.v1.y; @@ -202,7 +202,7 @@ public class MassDriver extends Block{ @Override public void drawConfigure(){ - float sin = Mathf.absin(Time.time(), 6f, 1f); + float sin = Mathf.absin(Time.time, 6f, 1f); Draw.color(Pal.accent); Lines.stroke(1f); diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index 99139638c3..122278238a 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -204,7 +204,7 @@ public class PayloadConveyor extends Block{ } public float time(){ - return Time.time(); + return Time.time; } @Override diff --git a/core/src/mindustry/world/blocks/environment/TreeBlock.java b/core/src/mindustry/world/blocks/environment/TreeBlock.java index cd199d8d25..d0354c2811 100644 --- a/core/src/mindustry/world/blocks/environment/TreeBlock.java +++ b/core/src/mindustry/world/blocks/environment/TreeBlock.java @@ -22,7 +22,7 @@ public class TreeBlock extends Block{ public void drawBase(Tile tile){ float x = tile.worldx(), y = tile.worldy(); - float rot = Mathf.randomSeed(tile.pos(), 0, 4) * 90 + Mathf.sin(Time.time() + x, 50f, 0.5f) + Mathf.sin(Time.time() - y, 65f, 0.9f) + Mathf.sin(Time.time() + y - x, 85f, 0.9f); + float rot = Mathf.randomSeed(tile.pos(), 0, 4) * 90 + Mathf.sin(Time.time + x, 50f, 0.5f) + Mathf.sin(Time.time - y, 65f, 0.9f) + Mathf.sin(Time.time + y - x, 85f, 0.9f); float w = region.width * Draw.scl, h = region.height * Draw.scl; float scl = 30f, mag = 0.2f; @@ -34,8 +34,8 @@ public class TreeBlock extends Block{ Draw.z(Layer.power + 1); Draw.rectv(region, x, y, w, h, rot, vec -> { vec.add( - Mathf.sin(vec.y*3 + Time.time(), scl, mag) + Mathf.sin(vec.x*3 - Time.time(), 70, 0.8f), - Mathf.cos(vec.x*3 + Time.time() + 8, scl + 6f, mag * 1.1f) + Mathf.sin(vec.y*3 - Time.time(), 50, 0.2f) + Mathf.sin(vec.y*3 + Time.time, scl, mag) + Mathf.sin(vec.x*3 - Time.time, 70, 0.8f), + Mathf.cos(vec.x*3 + Time.time + 8, scl + 6f, mag * 1.1f) + Mathf.sin(vec.y*3 - Time.time, 50, 0.2f) ); }); } diff --git a/core/src/mindustry/world/blocks/power/ImpactReactor.java b/core/src/mindustry/world/blocks/power/ImpactReactor.java index dec8e52702..156e5c13ce 100644 --- a/core/src/mindustry/world/blocks/power/ImpactReactor.java +++ b/core/src/mindustry/world/blocks/power/ImpactReactor.java @@ -101,12 +101,12 @@ public class ImpactReactor extends PowerGenerator{ Draw.rect(bottomRegion, x, y); for(int i = 0; i < plasmaRegions.length; i++){ - float r = size * tilesize - 3f + Mathf.absin(Time.time(), 2f + i * 1f, 5f - i * 0.5f); + float r = size * tilesize - 3f + Mathf.absin(Time.time, 2f + i * 1f, 5f - i * 0.5f); Draw.color(plasma1, plasma2, (float)i / plasmaRegions.length); - Draw.alpha((0.3f + Mathf.absin(Time.time(), 2f + i * 2f, 0.3f + i * 0.05f)) * warmup); + Draw.alpha((0.3f + Mathf.absin(Time.time, 2f + i * 2f, 0.3f + i * 0.05f)) * warmup); Draw.blend(Blending.additive); - Draw.rect(plasmaRegions[i], x, y, r, r, Time.time() * (12 + i * 6f) * warmup); + Draw.rect(plasmaRegions[i], x, y, r, r, Time.time * (12 + i * 6f) * warmup); Draw.blend(); } diff --git a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java index 2a0982a069..16cd34fb7b 100644 --- a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -164,7 +164,7 @@ public class ItemLiquidGenerator extends PowerGenerator{ if(hasItems){ Draw.color(heatColor); - Draw.alpha(heat * 0.4f + Mathf.absin(Time.time(), 8f, 0.6f) * heat); + Draw.alpha(heat * 0.4f + Mathf.absin(Time.time, 8f, 0.6f) * heat); Draw.rect(topRegion, x, y); Draw.reset(); } diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index 4883206e25..f744dbe0b5 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -362,7 +362,7 @@ public class PowerNode extends PowerBlock{ @Override public void drawConfigure(){ - Drawf.circles(x, y, tile.block().size * tilesize / 2f + 1f + Mathf.absin(Time.time(), 4f, 1f)); + Drawf.circles(x, y, tile.block().size * tilesize / 2f + 1f + Mathf.absin(Time.time, 4f, 1f)); Drawf.circles(x, y, laserRange * tilesize); for(int x = (int)(tile.x - laserRange - 2); x <= tile.x + laserRange + 2; x++){ diff --git a/core/src/mindustry/world/blocks/production/Cultivator.java b/core/src/mindustry/world/blocks/production/Cultivator.java index a5aede4e25..5949d7b947 100644 --- a/core/src/mindustry/world/blocks/production/Cultivator.java +++ b/core/src/mindustry/world/blocks/production/Cultivator.java @@ -78,7 +78,7 @@ public class Cultivator extends GenericCrafter{ for(int i = 0; i < 12; i++){ float offset = random.nextFloat() * 999999f; float x = random.range(4f), y = random.range(4f); - float life = 1f - (((Time.time() + offset) / 50f) % recurrence); + float life = 1f - (((Time.time + offset) / 50f) % recurrence); if(life > 0){ Lines.stroke(warmup * (life * 1f + 0.2f)); diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index 49c5576a29..d2ffceb033 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -291,7 +291,7 @@ public class Drill extends Block{ if(drawRim){ Draw.color(heatColor); - Draw.alpha(warmup * ts * (1f - s + Mathf.absin(Time.time(), 3f, s))); + Draw.alpha(warmup * ts * (1f - s + Mathf.absin(Time.time, 3f, s))); Draw.blend(Blending.additive); Draw.rect(rimRegion, x, y); Draw.blend(); diff --git a/core/src/mindustry/world/blocks/production/GenericSmelter.java b/core/src/mindustry/world/blocks/production/GenericSmelter.java index c96e1018dc..57108317ed 100644 --- a/core/src/mindustry/world/blocks/production/GenericSmelter.java +++ b/core/src/mindustry/world/blocks/production/GenericSmelter.java @@ -30,13 +30,13 @@ public class GenericSmelter extends GenericCrafter{ float r = 0.06f; float cr = Mathf.random(0.1f); - Draw.alpha(((1f - g) + Mathf.absin(Time.time(), 8f, g) + Mathf.random(r) - r) * warmup); + Draw.alpha(((1f - g) + Mathf.absin(Time.time, 8f, g) + Mathf.random(r) - r) * warmup); Draw.tint(flameColor); - Fill.circle(x, y, 3f + Mathf.absin(Time.time(), 5f, 2f) + cr); + Fill.circle(x, y, 3f + Mathf.absin(Time.time, 5f, 2f) + cr); Draw.color(1f, 1f, 1f, warmup); Draw.rect(topRegion, x, y); - Fill.circle(x, y, 1.9f + Mathf.absin(Time.time(), 5f, 1f) + cr); + Fill.circle(x, y, 1.9f + Mathf.absin(Time.time, 5f, 1f) + cr); Draw.color(); } diff --git a/core/src/mindustry/world/blocks/production/Incinerator.java b/core/src/mindustry/world/blocks/production/Incinerator.java index d51caf06c2..35765f6961 100644 --- a/core/src/mindustry/world/blocks/production/Incinerator.java +++ b/core/src/mindustry/world/blocks/production/Incinerator.java @@ -42,7 +42,7 @@ public class Incinerator extends Block{ float g = 0.3f; float r = 0.06f; - Draw.alpha(((1f - g) + Mathf.absin(Time.time(), 8f, g) + Mathf.random(r) - r) * heat); + Draw.alpha(((1f - g) + Mathf.absin(Time.time, 8f, g) + Mathf.random(r) - r) * heat); Draw.tint(flameColor); Fill.circle(x, y, 2f); diff --git a/desktop/src/mindustry/desktop/steam/SStat.java b/desktop/src/mindustry/desktop/steam/SStat.java index be67714d4d..7b6ad442b4 100644 --- a/desktop/src/mindustry/desktop/steam/SStat.java +++ b/desktop/src/mindustry/desktop/steam/SStat.java @@ -5,7 +5,6 @@ public enum SStat{ attacksWon, pvpsWon, timesLaunched, - zoneMechsUsed, //TODO blocksDestroyed, itemsLaunched, reactorsOverheated, diff --git a/gradle.properties b/gradle.properties index 12ed98ae75..77c3a0a37b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=f99aa02b0def1951452b67263439977d1d485ae7 +archash=1d931850b9bf4a02ddda134fbac041c2dab64d6d From 9df4eac2f8cd8f1822adad7c1b071b561d06f0da Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Mon, 30 Nov 2020 16:36:10 +0100 Subject: [PATCH 155/162] Update BuildingComp.java --- core/src/mindustry/entities/comp/BuildingComp.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 7bdc5d174a..37f9b59ec9 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -929,6 +929,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, //null is of type void.class; anonymous classes use their superclass. Class type = value == null ? void.class : value.getClass().isAnonymousClass() || value.getClass().getSimpleName().startsWith("adapter") ? value.getClass().getSuperclass() : value.getClass(); + if(value instanceof Block) type = Block.class; + if(builder != null && builder.isPlayer()){ lastAccessed = builder.getPlayer().name; } From 639702ae1acca6cf6a1a801ba47535c9e449f32e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 30 Nov 2020 11:12:09 -0500 Subject: [PATCH 156/162] Fixed unit tests --- core/assets/maps/fungalPass.msav | Bin 10918 -> 10916 bytes core/src/mindustry/content/UnitTypes.java | 14 +++++++------- gradle.properties | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/assets/maps/fungalPass.msav b/core/assets/maps/fungalPass.msav index 40b5ff376e0e874a64dcb3f961277599997d67b7..bc86d8c69c544c9a1f15a1c59465109a630d429e 100644 GIT binary patch literal 10916 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 literal 10918 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 diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index e053a8ee65..8866bd2578 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1006,7 +1006,7 @@ public class UnitTypes implements ContentList{ homingRange = 60f; keepVelocity = false; splashDamageRadius = 25f; - splashDamage = 14f; + splashDamage = 16f; lifetime = 60f; trailColor = Pal.unitBack; backColor = Pal.unitBack; @@ -1750,13 +1750,13 @@ public class UnitTypes implements ContentList{ top = false; ejectEffect = Fx.casing1; - bullet = new BasicBulletType(2.5f, 10){{ + bullet = new BasicBulletType(2.5f, 11){{ width = 7f; height = 9f; lifetime = 60f; shootEffect = Fx.shootSmall; smokeEffect = Fx.shootSmallSmoke; - tileDamageMultiplier = 0.02f; + tileDamageMultiplier = 0.01f; }}; }}); }}; @@ -1792,13 +1792,13 @@ public class UnitTypes implements ContentList{ spacing = 0f; ejectEffect = Fx.casing1; - bullet = new BasicBulletType(3f, 10){{ + bullet = new BasicBulletType(3f, 11){{ width = 7f; height = 9f; lifetime = 60f; shootEffect = Fx.shootSmall; smokeEffect = Fx.shootSmallSmoke; - tileDamageMultiplier = 0.02f; + tileDamageMultiplier = 0.01f; }}; }}); }}; @@ -1832,13 +1832,13 @@ public class UnitTypes implements ContentList{ shotDelay = 3f; ejectEffect = Fx.casing1; - bullet = new BasicBulletType(3.5f, 10){{ + bullet = new BasicBulletType(3.5f, 11){{ width = 6.5f; height = 11f; lifetime = 70f; shootEffect = Fx.shootSmall; smokeEffect = Fx.shootSmallSmoke; - tileDamageMultiplier = 0.02f; + tileDamageMultiplier = 0.01f; homingPower = 0.04f; }}; }}); diff --git a/gradle.properties b/gradle.properties index 77c3a0a37b..190a2e6b2e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=1d931850b9bf4a02ddda134fbac041c2dab64d6d +archash=e13f9a192be0bad00766ff15a6bf7d2897ba00d1 From 5c89fa2d2bdb750bdcb40810c3a7a0e130520dc9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 30 Nov 2020 12:52:10 -0500 Subject: [PATCH 157/162] Achievement cleanup --- core/src/mindustry/ui/dialogs/ResearchDialog.java | 13 ------------- .../src/mindustry/desktop/steam/SAchievement.java | 6 +++--- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index bb609cb167..49701dbe76 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -257,18 +257,6 @@ public class ResearchDialog extends BaseDialog{ return node.content.unlocked() || !node.objectives.contains(i -> !i.complete()); } - public void showToast(String info){ - Table table = new Table(); - table.actions(Actions.fadeOut(0.5f, Interp.fade), Actions.remove()); - table.top().add(info); - table.name = "toast"; - table.update(() -> { - table.toFront(); - table.setPosition(Core.graphics.getWidth() / 2f, Core.graphics.getHeight() - 21, Align.top); - }); - Core.scene.add(table); - } - boolean locked(TechNode node){ return node.content.locked(); } @@ -451,7 +439,6 @@ public class ResearchDialog extends BaseDialog{ void unlock(TechNode node){ node.content.unlock(); - showToast(Core.bundle.format("researched", node.content.localizedName)); checkNodes(root); hoverNode = null; treeLayout(); diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 71e04a2c3c..ffa429c868 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -5,8 +5,8 @@ public enum SAchievement{ kill100kEnemies(SStat.unitsDestroyed, 100_000), launch100kItems(SStat.itemsLaunched, 100_000), - produce1kMin(SStat.maxProduction, 1000), - produce20kMin(SStat.maxProduction, 20_000), + produce5kMin(SStat.maxProduction, 5000), + produce50kMin(SStat.maxProduction, 50_000), win10Attack(SStat.attacksWon, 10), win10PvP(SStat.pvpsWon, 10), defeatAttack5Waves, @@ -25,7 +25,7 @@ public enum SAchievement{ publishMap(SStat.mapsPublished, 1), defeatBoss(SStat.bossesDefeated, 1), captureAllSectors, - control10Sectors, + control10Sectors(SStat.sectorsControlled, 10), drop10kitems, powerupImpactReactor, obtainThorium, From 082a43da35dcb31bb2a416a126dd9fdbb602408d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ga=C5=A1par=C3=ADk?= Date: Mon, 30 Nov 2020 21:35:14 +0100 Subject: [PATCH 158/162] Czech translation up to date with final beta --- core/assets/bundles/bundle_cs.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index c4edd7f14e..3664e28aa4 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -21,7 +21,7 @@ gameover.pvp = Vyhrál tým [accent]{0}[]! highscore = [accent]Nový rekord! copied = Zkopírováno. indev.notready = Tato část hry ještě není připravena -indev.campaign = [accent]Završil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích. +indev.campaign = [accent]Blahopřejeme! Završil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích. load.sound = Zvuky load.map = Mapy @@ -147,6 +147,9 @@ unlocked = Byl odemmknut nový blok! available = Je zpřístupněn nový výzkum! completed = [accent]Dokončeno[] techtree = Technologie +research.legacy = Nalezena výzkumná data z verze [accent]5.0[].\nChceš [accent]tato data načíst[], nebo [accent]je zahodit[] a začít výzkum v nové kampani (což doporučujeme)? +research.load = Načíst +research.discard = Zahodit research.list = [lightgray]Výzkum:[] research = Výzkum researched = Dokončen výzkum technologie: [lightgray]{0}[]. From 44204db2bbff0e6a1367c52a0b02c8bc6b6585ee Mon Sep 17 00:00:00 2001 From: Felix Corvus Date: Tue, 1 Dec 2020 00:30:52 +0300 Subject: [PATCH 159/162] typo --- core/assets/bundles/bundle.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4854fcd313..87cfd5c8c7 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1254,16 +1254,16 @@ hint.respawn = To respawn as a ship, press [accent][[V][]. hint.respawn.mobile = You have switched control a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. -hint.placeDrill.mobile = Select the \ue85e[accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. +hint.placeDrill.mobile = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. -hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. +hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838 copper.\nUse conveyors and drills to supply them. hint.breaking = [accent]Right-click[] and drag to break blocks. hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.research = Use the \ue875 [accent]Research[] button to research new technology. hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. -hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or turrets. +hint.unitControl.mobile = [accent][[Double-tap][] to control friendly units or turrets. hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. @@ -1278,7 +1278,7 @@ hint.payloadDrop = Press [accent]][] to drop a payload. hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. -hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861 Duo/\uf859 Salvo ammunition to take Guardians down. item.copper.description = Used in all types of construction and ammunition. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. From 98700984579873f31d6e814b5653db0075d6b23f Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 30 Nov 2020 17:12:29 -0500 Subject: [PATCH 160/162] Updated Steam meta / Fixed #3673 --- core/src/mindustry/game/SectorInfo.java | 4 ++ core/src/mindustry/io/TypeIO.java | 5 +- .../mindustry/ui/fragments/HintsFragment.java | 2 +- .../metadata/steam/english/achievements.vdf | 58 ++++++++++--------- .../metadata/steam/english/description.txt | 34 ++++++----- 5 files changed, 60 insertions(+), 43 deletions(-) diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 045d9aa2e9..44ab291026 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -227,7 +227,11 @@ public class SectorInfo{ updateDelta(item, production, coreDeltas); updateDelta(item, rawProduction, productionDeltas); + //cap production/export by production production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean); + if(export.containsKey(item)){ + export.get(item).mean = Math.min(export.get(item).mean, rawProduction.get(item).mean); + } } Arrays.fill(coreDeltas, 0); diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 5eb9467e3c..9449a89b64 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -166,10 +166,13 @@ public class TypeIO{ } public static void writeUnit(Writes write, Unit unit){ - write.b(unit.isNull() ? 0 : unit instanceof BlockUnitc ? 1 : 2); + write.b(unit == null || unit.isNull() ? 0 : unit instanceof BlockUnitc ? 1 : 2); + //block units are special if(unit instanceof BlockUnitc){ write.i(((BlockUnitc)unit).tile().pos()); + }else if(unit == null){ + write.i(0); }else{ write.i(unit.id); } diff --git a/core/src/mindustry/ui/fragments/HintsFragment.java b/core/src/mindustry/ui/fragments/HintsFragment.java index f967518cb4..693e04953a 100644 --- a/core/src/mindustry/ui/fragments/HintsFragment.java +++ b/core/src/mindustry/ui/fragments/HintsFragment.java @@ -38,7 +38,7 @@ public class HintsFragment extends Fragment{ public void build(Group parent){ group.setFillParent(true); group.touchable = Touchable.childrenOnly; - group.visibility = () -> Core.settings.getBool("hints", true); + group.visibility = () -> Core.settings.getBool("hints", true) && ui.hudfrag.shown; group.update(() -> { if(current != null){ //current got completed diff --git a/fastlane/metadata/steam/english/achievements.vdf b/fastlane/metadata/steam/english/achievements.vdf index 93c5730a09..5ab7f51bfa 100644 --- a/fastlane/metadata/steam/english/achievements.vdf +++ b/fastlane/metadata/steam/english/achievements.vdf @@ -3,16 +3,12 @@ "Language" "english" "Tokens" { - "NEW_ACHIEVEMENT_20_0_NAME" "Verified" - "NEW_ACHIEVEMENT_20_0_DESC" "Complete the tutorial." "NEW_ACHIEVEMENT_20_1_NAME" "Scrapper" "NEW_ACHIEVEMENT_20_1_DESC" "Destroy 1000 enemy units." "NEW_ACHIEVEMENT_20_2_NAME" "Purge" "NEW_ACHIEVEMENT_20_2_DESC" "Destroy 100,000 enemy units." - "NEW_ACHIEVEMENT_20_3_NAME" "Atmospheric Transportation" - "NEW_ACHIEVEMENT_20_3_DESC" "Launch 10,000 items total." "NEW_ACHIEVEMENT_20_5_NAME" "Endless Shipments" - "NEW_ACHIEVEMENT_20_5_DESC" "Launch 1,000,000 items total." + "NEW_ACHIEVEMENT_20_5_DESC" "Launch 100,000 items total." "NEW_ACHIEVEMENT_20_6_NAME" "Conqueror" "NEW_ACHIEVEMENT_20_6_DESC" "Win 10 attack-mode matches." "NEW_ACHIEVEMENT_20_7_NAME" "Champion" @@ -20,15 +16,11 @@ "NEW_ACHIEVEMENT_20_8_NAME" "Blitz" "NEW_ACHIEVEMENT_20_8_DESC" "Destroy the enemy core in an attack zone in 5 waves or fewer." "NEW_ACHIEVEMENT_20_9_NAME" "Core Rain" - "NEW_ACHIEVEMENT_20_9_DESC" "Launch your core into a zone 30 times." + "NEW_ACHIEVEMENT_20_9_DESC" "Launch your core 30 times." "NEW_ACHIEVEMENT_20_10_NAME" "Tenacious" "NEW_ACHIEVEMENT_20_10_DESC" "Survive 100 waves." - "NEW_ACHIEVEMENT_20_11_NAME" "Unvanquished" - "NEW_ACHIEVEMENT_20_11_DESC" "Survive 500 waves." "NEW_ACHIEVEMENT_20_12_NAME" "Researcher" "NEW_ACHIEVEMENT_20_12_DESC" "Research everything." - "NEW_ACHIEVEMENT_20_13_NAME" "Shapeshifter" - "NEW_ACHIEVEMENT_20_13_DESC" "Unlock and transform into every mech in the game." "NEW_ACHIEVEMENT_20_14_NAME" "Overload" "NEW_ACHIEVEMENT_20_14_DESC" "Hit a water-covered enemy with electricity." "NEW_ACHIEVEMENT_20_15_NAME" "Deflection" @@ -51,44 +43,36 @@ "NEW_ACHIEVEMENT_20_24_DESC" "Defeat a boss." "NEW_ACHIEVEMENT_20_25_NAME" "Explorer" "NEW_ACHIEVEMENT_20_25_DESC" "Unlock all zones in the campaign." - "NEW_ACHIEVEMENT_20_26_NAME" "Completionist" - "NEW_ACHIEVEMENT_20_26_DESC" "Reach the configuration requirement wave on all zones." "NEW_ACHIEVEMENT_20_29_NAME" "Material II" "NEW_ACHIEVEMENT_20_29_DESC" "Unlock Thorium." "NEW_ACHIEVEMENT_20_31_NAME" "Material I" "NEW_ACHIEVEMENT_20_31_DESC" "Unlock Titanium." "NEW_ACHIEVEMENT_21_0_NAME" "Kamikaze" - "NEW_ACHIEVEMENT_21_0_DESC" "Fill your mech up with explosive materials and die, creating an explosion." + "NEW_ACHIEVEMENT_21_0_DESC" "Fill your mech up with explosive materials and die." "NEW_ACHIEVEMENT_21_1_NAME" "It Begins" - "NEW_ACHIEVEMENT_21_1_DESC" "Build a Dagger factory." + "NEW_ACHIEVEMENT_21_1_DESC" "Build a ground unit factory." "NEW_ACHIEVEMENT_21_2_NAME" "Direct Assault" "NEW_ACHIEVEMENT_21_2_DESC" "Issue the Attack command using the Command Center." "NEW_ACHIEVEMENT_21_3_NAME" "Swarm" "NEW_ACHIEVEMENT_21_3_DESC" "Have 100 units active at once." "NEW_ACHIEVEMENT_21_4_NAME" "Flock" - "NEW_ACHIEVEMENT_21_4_DESC" "Have 10 Phantom drones active at once." - "NEW_ACHIEVEMENT_21_5_NAME" "Volatile Army" - "NEW_ACHIEVEMENT_21_5_DESC" "Have 50 Crawler units active at once." + "NEW_ACHIEVEMENT_21_4_DESC" "Have 10 Phantom Poly drones active at once." + "NEW_ACHIEVEMENT_21_5_NAME" "Roboticist" + "NEW_ACHIEVEMENT_21_5_DESC" "Build every type of unit." "NEW_ACHIEVEMENT_21_6_NAME" "Legions" "NEW_ACHIEVEMENT_21_6_DESC" "Build 1000 units total." - "NEW_ACHIEVEMENT_21_7_NAME" "Super" - "NEW_ACHIEVEMENT_21_7_DESC" "Earn the S rank on any zone." - "NEW_ACHIEVEMENT_21_8_NAME" "Super Super" - "NEW_ACHIEVEMENT_21_8_DESC" "Earn the SS rank on any zone." "NEW_ACHIEVEMENT_21_9_NAME" "You Should've Listened" "NEW_ACHIEVEMENT_21_9_DESC" "Die in the drop point exclusion zone." - "NEW_ACHIEVEMENT_21_10_NAME" "Just Press Shift" - "NEW_ACHIEVEMENT_21_10_DESC" "Drown, somehow." + "NEW_ACHIEVEMENT_21_10_NAME" "There are naval units for that." + "NEW_ACHIEVEMENT_21_10_DESC" "Drown." "NEW_ACHIEVEMENT_21_11_NAME" "Collector" "NEW_ACHIEVEMENT_21_11_DESC" "Fill the core to maximum capacity with every type of material." "NEW_ACHIEVEMENT_21_12_NAME" "Crowd" "NEW_ACHIEVEMENT_21_12_DESC" "Host a server with 10 players on it." "NEW_ACHIEVEMENT_21_13_NAME" "Invulnerable" - "NEW_ACHIEVEMENT_21_13_DESC" "Build the Meltdown and Spectre." + "NEW_ACHIEVEMENT_21_13_DESC" "Build the Meltdown and, Spectre and Foreshadow.." "NEW_ACHIEVEMENT_21_14_NAME" "Liftoff" "NEW_ACHIEVEMENT_21_14_DESC" "Use the Launch Pad." - "NEW_ACHIEVEMENT_21_15_NAME" "Complacence" - "NEW_ACHIEVEMENT_21_15_DESC" "Skip launching twice, then have your core destroyed by the enemy." "NEW_ACHIEVEMENT_21_16_NAME" "Heresy" "NEW_ACHIEVEMENT_21_16_DESC" "Build two routers next to each other." "NEW_ACHIEVEMENT_21_17_NAME" "Lone Guardian" @@ -105,5 +89,27 @@ "NEW_ACHIEVEMENT_21_22_DESC" "Launch into a zone with 10,000 or more items configured." "NEW_ACHIEVEMENT_21_23_NAME" "Ignition" "NEW_ACHIEVEMENT_21_23_DESC" "Power up an Impact Reactor." + "NEW_ACHIEVEMENT_21_24_NAME" "Acceleration" + "NEW_ACHIEVEMENT_21_24_DESC" "Activate the Interplanteary Accelerator." + "NEW_ACHIEVEMENT_21_25_NAME" "The Spiral" + "NEW_ACHIEVEMENT_21_25_DESC" "Round and round it goes..." + "NEW_ACHIEVEMENT_21_26_NAME" "Escalation" + "NEW_ACHIEVEMENT_21_26_DESC" "Construct a Tier 5 unit." + "NEW_ACHIEVEMENT_21_27_NAME" "Architect" + "NEW_ACHIEVEMENT_21_27_DESC" "Create 20 schematics." + "NEW_ACHIEVEMENT_21_28_NAME" "Global Domination" + "NEW_ACHIEVEMENT_21_28_DESC" "Capture every sector on Serpulo." + "NEW_ACHIEVEMENT_21_29_NAME" "Airlift" + "NEW_ACHIEVEMENT_21_29_DESC" "Pick up a T5 unit in an Oct unit carrier." + "NEW_ACHIEVEMENT_21_30_NAME" "The Ultimate Form" + "NEW_ACHIEVEMENT_21_30_DESC" "Join them." + "NEW_ACHIEVEMENT_21_31_NAME" "Production I" + "NEW_ACHIEVEMENT_21_31_DESC" "Reach 5,000 items/min total production in the campaign." + "NEW_ACHIEVEMENT_26_0_NAME" "Production II" + "NEW_ACHIEVEMENT_26_0_DESC" "Reach 50,000 items/min total production in the campaign." + "NEW_ACHIEVEMENT_26_1_NAME" "Assured Victory" + "NEW_ACHIEVEMENT_26_1_DESC" "Capture a sector while playing on a different sector." + "NEW_ACHIEVEMENT_26_2_NAME" "Small Empire" + "NEW_ACHIEVEMENT_26_2_DESC" "Control 10 sectors at once." } } diff --git a/fastlane/metadata/steam/english/description.txt b/fastlane/metadata/steam/english/description.txt index ff9dfca4d7..08947fbfc6 100644 --- a/fastlane/metadata/steam/english/description.txt +++ b/fastlane/metadata/steam/english/description.txt @@ -1,28 +1,30 @@ -Create elaborate supply chains of conveyor belts to feed ammo into your turrets, produce materials to use for building, and defend your structures from waves of enemies. Play with your friends in cross-platform multiplayer co-op games, or challenge them in team-based PvP matches. - [img]{STEAM_APP_IMAGE}/extras/ezgif-4-0e70c282f775.gif[/img] [h2]Gameplay[/h2] [list] -[*] Create drills and conveyors to move resources into your Core. -[*] Use production blocks to create advanced materials. -[*] Build drones for automatically mining resources, assisting in building and protecting your base. -[*] Distribute liquids and fight outbreaks of fire. -[*] Boost production by supplying optional coolant and lubricant to your defense and production blocks. +[*] Create elaborate supply chains of conveyor belts to feed ammo into your turrets and produce materials to use for building +[*] Use production blocks to create a wide variety of advanced materials +[*] Defend your structures from waves of enemies +[*] Play with your friends in cross-platform multiplayer co-op games, or challenge them in team-based PvP matches +[*] Distribute liquids and fight constant challenges, like outbreaks of fire or enemy flier raids +[*] Get the most out of your production by supplying optional coolant and lubricant +[*] Produce a wide variety of units for automatic management of your base or assault on enemy bases [/list] +[img]{STEAM_APP_IMAGE}/extras/ezgif-1-8679abe089cd.gif[/img] + [h2]Campaign[/h2] [list] -[*] Advance through 12 replayable built-in zones with randomized spawn points -[*] Collect and launch resources +[*] Conquer the planet Serpulo as you advance through 250+ procedurally generated sectors and 16 hand-made maps +[*] Capture territory and set up factories to produce resources while you play other sectors +[*] Defend your sectors from periodic invasions +[*] Coordinate resource distribution between sectors via launch pads [*] Research new blocks to fuel progress -[*] Configure launch loadouts to bring resources to each zone -[*] Variety of mission objectives and goals [*] Invite your friends to complete missions together [*] 120+ technology blocks to master -[*] 19 different types of drones, mechs and ships +[*] 33 different types of drones, mechs and ships [*] 50+ achievements to complete [/list] @@ -30,15 +32,17 @@ Create elaborate supply chains of conveyor belts to feed ammo into your turrets, [list] [*] [b]Survival[/b]: Build turrets to defend from enemies in tower-defense based gameplay. Survive as long as possible, optionally launching your core to use your collected resources for research. Prepare your base for intermittent attacks from airborne bosses. -[*] [b]Attack[/b]: Build factories for units to destroy the enemy cores, while simultaneously defending your base from waves of enemy units. Create a variety of different types of support and offensive unit to assist you in your goals. +[*] [b]Attack[/b]: Build factories for units to destroy the enemy cores, while simultaneously defending your base from waves of enemy units. Create a variety of different types of support and offensive unit to assist you in your goals. Optionally enable an AI that builds defensive structures to an extra challenge. [*] [b]PvP[/b]: Compete with other players on up to 4 different teams to destroy each other's cores. Create units, or attack other bases directly with your mechs. [*] [b]Sandbox[/b]: Play around with infinite resources and no enemy threat. Use sandbox-specific item and liquid source blocks to test out designs, and spawn in enemies on request. [/list] +[img]{STEAM_APP_IMAGE}/extras/2020-11-30_10-46-02.gif[/img] + [h2]Custom Games & Cross-Platform Multiplayer[/h2] [list] -[*] 12 built in maps for custom games, in addition to campaign +[*] 16 built in maps for custom games, in addition to campaign [*] Play Co-op, PvP or sandbox [*] Join a public dedicated server, or invite friends to your own private session [*] Customizable game rules: Change block costs, enemy stats, starting items, wave timing and more @@ -57,5 +61,5 @@ Create elaborate supply chains of conveyor belts to feed ammo into your turrets, [*] Configure enemy wave layouts [*] Share exported maps on the Steam Workshop [*] Customize base map rules -[*] Use 75+ different environmental blocks +[*] Use 80+ different environmental blocks [/list] From 8dae9bababc2d213b7241371e1e73d6f12eb5bcc Mon Sep 17 00:00:00 2001 From: Felix Corvus Date: Tue, 1 Dec 2020 01:27:34 +0300 Subject: [PATCH 161/162] not typo --- core/assets/bundles/bundle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 87cfd5c8c7..4cf9af41f0 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1257,7 +1257,7 @@ hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the botto hint.placeDrill.mobile = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. -hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838 copper.\nUse conveyors and drills to supply them. +hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. hint.breaking = [accent]Right-click[] and drag to break blocks. hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.research = Use the \ue875 [accent]Research[] button to research new technology. @@ -1278,7 +1278,7 @@ hint.payloadDrop = Press [accent]][] to drop a payload. hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. -hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861 Duo/\uf859 Salvo ammunition to take Guardians down. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. item.copper.description = Used in all types of construction and ammunition. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. From d868ff81bfe29df2116eeead624c692afee6200c Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 30 Nov 2020 17:49:20 -0500 Subject: [PATCH 162/162] Dependency resolution fix --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/content/Liquids.java | 1 - .../src/mindustry/ui/dialogs/PlanetDialog.java | 5 +++-- core/src/mindustry/world/Block.java | 18 ++++++++---------- .../mindustry/world/consumers/Consumers.java | 8 ++++++++ 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4854fcd313..37306b5814 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1251,7 +1251,7 @@ hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manuall hint.desktopShoot = [accent][[Left-click][] to shoot. hint.depositItems = To transfer items, drag from your ship to the core. hint.respawn = To respawn as a ship, press [accent][[V][]. -hint.respawn.mobile = You have switched control a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] +hint.respawn.mobile = You have switched control to a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. hint.placeDrill.mobile = Select the \ue85e[accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. diff --git a/core/src/mindustry/content/Liquids.java b/core/src/mindustry/content/Liquids.java index 91b7186f6b..b087b41a94 100644 --- a/core/src/mindustry/content/Liquids.java +++ b/core/src/mindustry/content/Liquids.java @@ -13,7 +13,6 @@ public class Liquids implements ContentList{ water = new Liquid("water", Color.valueOf("596ab8")){{ heatCapacity = 0.4f; effect = StatusEffects.wet; - alwaysUnlocked = true; }}; slag = new Liquid("slag", Color.valueOf("ffa166")){{ diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 710fc29895..4a96776cf6 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -249,9 +249,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ boolean canSelect(Sector sector){ if(mode == select) return sector.hasBase(); + //preset sectors can only be selected once unlocked + if(sector.preset != null) return sector.preset.unlocked() || sector.hasBase(); - return sector.hasBase() || sector.near().contains(Sector::hasBase) //near an occupied sector - || (sector.preset != null && sector.preset.unlocked()); //is an unlocked preset + return sector.hasBase() || sector.near().contains(Sector::hasBase); //near an occupied sector } Sector findLauncher(Sector to){ diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 5e38bfa8a8..1bce0ffb2d 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -632,18 +632,16 @@ public class Block extends UnlockableContent{ cons.get(stack.item); } - if(consumes.any()){ - //also requires inputs - for(Consume c : consumes.all()){ - if(c instanceof ConsumeItems i){ - for(ItemStack stack : i.items){ - cons.get(stack.item); - } - }else if(c instanceof ConsumeLiquid i){ - cons.get(i.liquid); + //also requires inputs + consumes.each(c -> { + if(c instanceof ConsumeItems i){ + for(ItemStack stack : i.items){ + cons.get(stack.item); } + }else if(c instanceof ConsumeLiquid i){ + cons.get(i.liquid); } - } + }); } @Override diff --git a/core/src/mindustry/world/consumers/Consumers.java b/core/src/mindustry/world/consumers/Consumers.java index ee0c76a2a7..73ad0b0b96 100644 --- a/core/src/mindustry/world/consumers/Consumers.java +++ b/core/src/mindustry/world/consumers/Consumers.java @@ -20,6 +20,14 @@ public class Consumers{ return results != null && results.length > 0; } + public void each(Cons c){ + for(var cons : map){ + if(cons != null){ + c.get(cons); + } + } + } + public void init(){ results = Structs.filter(Consume.class, map, m -> m != null); optionalResults = Structs.filter(Consume.class, map, m -> m != null && m.isOptional());

XMR2Tw#Pdjo$Gkx5%wsmS)3w2G3pDo+-2G@@A{Z_q1+)ptfYf{`mrT>wc>= zH$Rs8&CSQS&S}SqHlsgM6^F{*)%s%-_v*@XIYc~nRCoU%{`WcW#e?k;*$bEtcl`RC z82;=d*TW}uHkL2-xgIQeDDvVEoBoua-MJp;^BuCMI4%2c@}jKr-y*5{zE}4fo^3Sx z8vp6bN#?{UCoQw&Q$PIf_RyV_`syU(@4wmWV|_l&`2NOL&GMh+-T0+-bHaam_gA+} ze|%E(QM33v<*w-a4Sv7$gkxRb+s<3sn=FALnBoABdXdp+Z)?}Eo3 m{?GlFbmH&tjOzS*?5X>YwBPnSb1kYz6@MVN!Dd literal 15448 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 V%hzxG|GNLb)?fYq?D2_8RsgugB8UJ0 diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 31becb5f57..6d82895b97 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -98,11 +98,11 @@ public class TechTree implements ContentList{ node(platedConduit, () -> { }); - }); - node(rotaryPump, () -> { - node(thermalPump, () -> { + node(rotaryPump, () -> { + node(thermalPump, () -> { + }); }); }); }); diff --git a/core/src/mindustry/content/Weathers.java b/core/src/mindustry/content/Weathers.java index 86dac06f7b..0d5c47e56a 100644 --- a/core/src/mindustry/content/Weathers.java +++ b/core/src/mindustry/content/Weathers.java @@ -53,10 +53,11 @@ public class Weathers implements ContentList{ baseSpeed = 5.4f; attrs.set(Attribute.light, -0.1f); attrs.set(Attribute.water, -0.1f); - opacityMultiplier = 0.5f; + opacityMultiplier = 0.4f; force = 0.1f; sound = Sounds.wind; - soundVol = 0.3f; + soundVol = 0.8f; + duration = 7f * Time.toMinutes; }}; sporestorm = new ParticleWeather("sporestorm"){{ @@ -77,7 +78,8 @@ public class Weathers implements ContentList{ opacityMultiplier = 0.75f; force = 0.1f; sound = Sounds.wind; - soundVol = 0.3f; + soundVol = 0.7f; + duration = 7f * Time.toMinutes; }}; fog = new ParticleWeather("fog"){{ diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 02222bd327..210ca1eced 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -109,6 +109,13 @@ public class Logic implements ApplicationListener{ } state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f; state.rules.waveTeam.rules().infiniteResources = true; + + //fill enemy cores by default. + for(var core : state.rules.waveTeam.cores()){ + for(Item item : content.items()){ + core.items.set(item, core.block.itemCapacity); + } + } } //save settings diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index fca91f0417..efe05f4f0c 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -977,27 +977,6 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } } - /** - * Returns the flammability of the Used for fire calculations. - * Takes flammability of floor liquid into account. - */ - public float getFlammability(){ - if(!block.hasItems){ - if(floor().isLiquid && !block.solid){ - return floor().liquidDrop.flammability; - } - return 0; - }else{ - float result = items.sum((item, amount) -> item.flammability * amount); - - if(block.hasLiquids){ - result += liquids.sum((liquid, amount) -> liquid.flammability * amount / 3f); - } - - return result; - } - } - public String getDisplayName(){ return block.localizedName; } diff --git a/core/src/mindustry/entities/comp/FireComp.java b/core/src/mindustry/entities/comp/FireComp.java index 43fc3cdae9..dd5fb04ea8 100644 --- a/core/src/mindustry/entities/comp/FireComp.java +++ b/core/src/mindustry/entities/comp/FireComp.java @@ -26,7 +26,7 @@ abstract class FireComp implements Timedc, Posc, Firec, Syncc{ @Override public void update(){ - if(Mathf.chance(0.1 * Time.delta)){ + if(Mathf.chance(0.09 * Time.delta)){ Fx.fire.at(x + Mathf.range(4f), y + Mathf.range(4f)); } @@ -59,7 +59,7 @@ abstract class FireComp implements Timedc, Posc, Firec, Syncc{ } if(baseFlammability < 0 || block != tile.block()){ - baseFlammability = tile.build == null ? 0 : tile.build.getFlammability(); + baseFlammability = tile.build == null ? 0 : tile.getFlammability(); block = tile.block(); } @@ -77,12 +77,12 @@ abstract class FireComp implements Timedc, Posc, Firec, Syncc{ } } - if(Mathf.chance(0.1 * Time.delta)){ + if(Mathf.chance(0.05 * Time.delta)){ Puddlec p = Puddles.get(tile); puddleFlammability = p != null ? p.getFlammability() / 3f : 0; if(damage){ - entity.damage(0.4f); + entity.damage(0.8f); } Damage.damageUnits(null, tile.worldx(), tile.worldy(), tilesize, 3f, unit -> !unit.isFlying() && !unit.isImmune(StatusEffects.burning), diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 5f2bbdb637..4cd9d704f5 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -225,7 +225,7 @@ public class ContentParser{ currentContent = block; read(() -> { - if(value.has("consumes")){ + if(value.has("consumes") && value.get("consumes").isObject()){ for(JsonValue child : value.get("consumes")){ if(child.name.equals("item")){ block.consumes.item(find(ContentType.item, child.asString())); diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 9daaf11087..a9741b5241 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -21,7 +21,7 @@ import static mindustry.Vars.*; public abstract class Weather extends UnlockableContent{ /** Default duration of this weather event in ticks. */ - public float duration = 9f * Time.toMinutes; + public float duration = 10f * Time.toMinutes; public float opacityMultiplier = 1f; public Attributes attrs = new Attributes(); public Sound sound = Sounds.none; diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index e8a27b7c05..b91b26d699 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -103,6 +103,28 @@ public class Tile implements Position, QuadTreeObject, Displayable{ return -1; } + /** + * Returns the flammability of the Used for fire calculations. + * Takes flammability of floor liquid into account. + */ + public float getFlammability(){ + if(!block.hasItems){ + if(floor.liquidDrop != null && !block.solid){ + return floor.liquidDrop.flammability; + } + return 0; + }else if(build != null){ + float result = build.items.sum((item, amount) -> item.flammability * amount); + + if(block.hasLiquids){ + result += build.liquids.sum((liquid, amount) -> liquid.flammability * amount / 3f); + } + + return result; + } + return 0; + } + /** Convenience method that returns the building of this tile with a cast. * Method name is shortened to prevent conflict. */ @SuppressWarnings("unchecked") From ef63c5073a51f363ae7e07e6dfa9ac8b72595345 Mon Sep 17 00:00:00 2001 From: YellOw139 <70975516+YellOw139@users.noreply.github.com> Date: Thu, 26 Nov 2020 21:11:55 +0200 Subject: [PATCH 091/162] Legacy prompts --- core/assets/bundles/bundle_ro.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 8b3932269a..1d4a4815ac 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -23,7 +23,7 @@ gameover.waiting = [accent]Se așteaptă următoarea hartă... highscore = [accent]Scor maxim nou! copied = Copiat. indev.notready = Această secțiune a jocului nu este gata încă. -indev.campaign = [accent]Ai ajuns la finalul campaniei![]\n\nAi mers cât de departe se poate momentan. Călătoria interplanetară va fi adăugată într-un update viitor. +indev.campaign = [accent]Felicitări! Ai ajuns la finalul campaniei![]\n\nAi mers cât de departe se poate momentan. Călătoria interplanetară va fi adăugată într-un update viitor. load.sound = Sunete load.map = Hărți @@ -149,6 +149,9 @@ unlocked = Nou conținut deblocat! available = Poți cerceta noi tehnologii! completed = [accent]Finalizat techtree = Cercetează +research.legacy = Au fost găsite date de cercetare din versiunea [accent]5.0[].\n Dorești să [accent]păstrezi aceste date[], sau [accent]să renunți la ele[] și să reîncepi cercetarea în noua campanie (recomandat)? +research.load = Păstrează Datele +research.discard = Renunță research.list = [lightgray]Cercetare: research = Cercetează researched = [lightgray]{0} cercetat. From 84474040c02de3255d55c0018514918178f91ca0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 14:24:35 -0500 Subject: [PATCH 092/162] Fungal Pass map fixes --- core/assets/maps/fungalPass.msav | Bin 10664 -> 10918 bytes .../src/mindustry/entities/comp/FireComp.java | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/maps/fungalPass.msav b/core/assets/maps/fungalPass.msav index f0edb0987b194fa4d8699fa50ed682d210cd2532..40b5ff376e0e874a64dcb3f961277599997d67b7 100644 GIT binary patch delta 10920 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 literal 10664 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 diff --git a/core/src/mindustry/entities/comp/FireComp.java b/core/src/mindustry/entities/comp/FireComp.java index dd5fb04ea8..7981e061b6 100644 --- a/core/src/mindustry/entities/comp/FireComp.java +++ b/core/src/mindustry/entities/comp/FireComp.java @@ -77,12 +77,12 @@ abstract class FireComp implements Timedc, Posc, Firec, Syncc{ } } - if(Mathf.chance(0.05 * Time.delta)){ + if(Mathf.chance(0.025 * Time.delta)){ Puddlec p = Puddles.get(tile); puddleFlammability = p != null ? p.getFlammability() / 3f : 0; if(damage){ - entity.damage(0.8f); + entity.damage(1.6f); } Damage.damageUnits(null, tile.worldx(), tile.worldy(), tilesize, 3f, unit -> !unit.isFlying() && !unit.isImmune(StatusEffects.burning), From d3f58c0e830ae3202ce129c492306f87cfe009c5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 15:31:19 -0500 Subject: [PATCH 093/162] Campaign bugfixes --- core/src/mindustry/ai/types/FormationAI.java | 2 +- core/src/mindustry/ai/types/MinerAI.java | 2 +- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/core/NetServer.java | 5 +++++ core/src/mindustry/entities/comp/MinerComp.java | 4 ++-- core/src/mindustry/input/InputHandler.java | 9 --------- .../mindustry/world/blocks/storage/CoreBlock.java | 13 +++++++++---- gradle.properties | 2 +- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index 2379b28e07..bb4182c254 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -67,7 +67,7 @@ public class FormationAI extends AIController implements FormationMember{ if(core != null && leader.mineTile.drop() != null && unit.within(core, unit.type.range) && !unit.acceptsItem(leader.mineTile.drop())){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ - Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); + Call.transferItemTo(unit, unit.stack.item, unit.stack.amount, unit.x, unit.y, core); unit.clearItem(); } diff --git a/core/src/mindustry/ai/types/MinerAI.java b/core/src/mindustry/ai/types/MinerAI.java index 97d8198bb2..28306deb84 100644 --- a/core/src/mindustry/ai/types/MinerAI.java +++ b/core/src/mindustry/ai/types/MinerAI.java @@ -65,7 +65,7 @@ public class MinerAI extends AIController{ if(unit.within(core, unit.type.range)){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ - Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); + Call.transferItemTo(unit, unit.stack.item, unit.stack.amount, unit.x, unit.y, core); } unit.clearItem(); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 363256dc83..b324b24190 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1388,7 +1388,7 @@ public class Blocks implements ContentList{ size = 5; unitCapModifier = 24; - researchCostMultiplier = 0.05f; + researchCostMultiplier = 0.06f; }}; vault = new StorageBlock("vault"){{ diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index c0a35c625b..5f7dfd100b 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -447,6 +447,11 @@ public class NetServer implements ApplicationListener{ return; } + if(currentlyKicking[0].target.team() != player.team()){ + player.sendMessage("[scarlet]You can't vote for other teams."); + return; + } + if(!arg[0].toLowerCase().equals("y") && !arg[0].toLowerCase().equals("n")){ player.sendMessage("[scarlet]Vote either 'y' (yes) or 'n' (no)."); return; diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 9368918d8c..f10a217105 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -55,7 +55,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ if(core != null && mineTile != null && mineTile.drop() != null && !acceptsItem(mineTile.drop()) && within(core, mineTransferRange) && !offloadImmediately()){ int accepted = core.acceptStack(item(), stack().amount, this); if(accepted > 0){ - Call.transferItemTo(item(), accepted, + Call.transferItemTo(self(), item(), accepted, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core); clearItem(); @@ -77,7 +77,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ mineTimer = 0; if(core != null && within(core, mineTransferRange) && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ - Call.transferItemTo(item, 1, + Call.transferItemTo(self(), item, 1, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core); }else if(acceptsItem(item)){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 2df91588b6..f0b749fbfd 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -95,15 +95,6 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ createItemTransfer(item, 1, x, y, to, () -> to.addItem(item)); } - @Remote(called = Loc.server, unreliable = true) - public static void transferItemTo(Item item, int amount, float x, float y, Building build){ - if(build == null || build.items == null) return; - for(int i = 0; i < Mathf.clamp(amount / 5, 1, 8); i++){ - Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {})); - } - build.items.add(item, amount); - } - @Remote(called = Loc.server, unreliable = true) public static void transferItemTo(Unit unit, Item item, int amount, float x, float y, Building build){ if(build == null || build.items == null) return; diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index 995834c977..e53bd84eff 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -229,12 +229,12 @@ public class CoreBlock extends StorageBlock{ @Override public boolean acceptItem(Building source, Item item){ - return items.get(item) < getMaximumAccepted(item) || incinerate(); + return items.get(item) < getMaximumAccepted(item); } @Override public int getMaximumAccepted(Item item){ - return storageCapacity; + return incinerate() ? storageCapacity * 2 : storageCapacity; } @Override @@ -270,10 +270,15 @@ public class CoreBlock extends StorageBlock{ @Override public void handleStack(Item item, int amount, Teamc source){ - super.handleStack(item, amount, source); + int realAmount = Math.min(amount, storageCapacity - items.get(item)); + super.handleStack(item, realAmount, source); if(team == state.rules.defaultTeam && state.isCampaign()){ state.rules.sector.info.handleCoreItem(item, amount); + + if(realAmount == 0){ + Fx.coreBurn.at(x, y); + } } } @@ -377,7 +382,7 @@ public class CoreBlock extends StorageBlock{ state.rules.sector.info.handleCoreItem(item, 1); } - if(items.get(item) >= getMaximumAccepted(item)){ + if(items.get(item) >= storageCapacity){ //create item incineration effect at random intervals if(!noEffect){ incinerateEffect(this, source); diff --git a/gradle.properties b/gradle.properties index e5c7e5fe4d..cd20e76ae5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=7a2a357f6cfdc3725ce581093a0ced91f4474222 +archash= From 1d8ec9abd9593be8ec92bd7de9ac767a6db04b8c Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 15:31:19 -0500 Subject: [PATCH 094/162] Campaign bugfixes --- core/src/mindustry/ai/types/FormationAI.java | 2 +- core/src/mindustry/ai/types/MinerAI.java | 2 +- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/core/NetServer.java | 5 +++++ core/src/mindustry/entities/comp/MinerComp.java | 4 ++-- core/src/mindustry/input/InputHandler.java | 9 --------- .../mindustry/world/blocks/storage/CoreBlock.java | 13 +++++++++---- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index 2379b28e07..bb4182c254 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -67,7 +67,7 @@ public class FormationAI extends AIController implements FormationMember{ if(core != null && leader.mineTile.drop() != null && unit.within(core, unit.type.range) && !unit.acceptsItem(leader.mineTile.drop())){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ - Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); + Call.transferItemTo(unit, unit.stack.item, unit.stack.amount, unit.x, unit.y, core); unit.clearItem(); } diff --git a/core/src/mindustry/ai/types/MinerAI.java b/core/src/mindustry/ai/types/MinerAI.java index 97d8198bb2..28306deb84 100644 --- a/core/src/mindustry/ai/types/MinerAI.java +++ b/core/src/mindustry/ai/types/MinerAI.java @@ -65,7 +65,7 @@ public class MinerAI extends AIController{ if(unit.within(core, unit.type.range)){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ - Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); + Call.transferItemTo(unit, unit.stack.item, unit.stack.amount, unit.x, unit.y, core); } unit.clearItem(); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 363256dc83..b324b24190 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1388,7 +1388,7 @@ public class Blocks implements ContentList{ size = 5; unitCapModifier = 24; - researchCostMultiplier = 0.05f; + researchCostMultiplier = 0.06f; }}; vault = new StorageBlock("vault"){{ diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index c0a35c625b..5f7dfd100b 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -447,6 +447,11 @@ public class NetServer implements ApplicationListener{ return; } + if(currentlyKicking[0].target.team() != player.team()){ + player.sendMessage("[scarlet]You can't vote for other teams."); + return; + } + if(!arg[0].toLowerCase().equals("y") && !arg[0].toLowerCase().equals("n")){ player.sendMessage("[scarlet]Vote either 'y' (yes) or 'n' (no)."); return; diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 9368918d8c..f10a217105 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -55,7 +55,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ if(core != null && mineTile != null && mineTile.drop() != null && !acceptsItem(mineTile.drop()) && within(core, mineTransferRange) && !offloadImmediately()){ int accepted = core.acceptStack(item(), stack().amount, this); if(accepted > 0){ - Call.transferItemTo(item(), accepted, + Call.transferItemTo(self(), item(), accepted, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core); clearItem(); @@ -77,7 +77,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ mineTimer = 0; if(core != null && within(core, mineTransferRange) && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ - Call.transferItemTo(item, 1, + Call.transferItemTo(self(), item, 1, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core); }else if(acceptsItem(item)){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 2df91588b6..f0b749fbfd 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -95,15 +95,6 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ createItemTransfer(item, 1, x, y, to, () -> to.addItem(item)); } - @Remote(called = Loc.server, unreliable = true) - public static void transferItemTo(Item item, int amount, float x, float y, Building build){ - if(build == null || build.items == null) return; - for(int i = 0; i < Mathf.clamp(amount / 5, 1, 8); i++){ - Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {})); - } - build.items.add(item, amount); - } - @Remote(called = Loc.server, unreliable = true) public static void transferItemTo(Unit unit, Item item, int amount, float x, float y, Building build){ if(build == null || build.items == null) return; diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index 995834c977..e53bd84eff 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -229,12 +229,12 @@ public class CoreBlock extends StorageBlock{ @Override public boolean acceptItem(Building source, Item item){ - return items.get(item) < getMaximumAccepted(item) || incinerate(); + return items.get(item) < getMaximumAccepted(item); } @Override public int getMaximumAccepted(Item item){ - return storageCapacity; + return incinerate() ? storageCapacity * 2 : storageCapacity; } @Override @@ -270,10 +270,15 @@ public class CoreBlock extends StorageBlock{ @Override public void handleStack(Item item, int amount, Teamc source){ - super.handleStack(item, amount, source); + int realAmount = Math.min(amount, storageCapacity - items.get(item)); + super.handleStack(item, realAmount, source); if(team == state.rules.defaultTeam && state.isCampaign()){ state.rules.sector.info.handleCoreItem(item, amount); + + if(realAmount == 0){ + Fx.coreBurn.at(x, y); + } } } @@ -377,7 +382,7 @@ public class CoreBlock extends StorageBlock{ state.rules.sector.info.handleCoreItem(item, 1); } - if(items.get(item) >= getMaximumAccepted(item)){ + if(items.get(item) >= storageCapacity){ //create item incineration effect at random intervals if(!noEffect){ incinerateEffect(this, source); From 6b3919e8f73bd1224356a954277f4a21d20e3b1d Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 16:49:01 -0500 Subject: [PATCH 095/162] Added Call#setItem --- core/src/mindustry/entities/comp/BuildingComp.java | 2 +- core/src/mindustry/input/InputHandler.java | 12 ++++++++++-- gradle.properties | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index efe05f4f0c..533e99b24b 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -435,7 +435,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } /** Handle a stack input. */ - public void handleStack(Item item, int amount, Teamc source){ + public void handleStack(Item item, int amount, @Nullable Teamc source){ noSleep(); items.add(item, amount); } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index f0b749fbfd..551fd5e82d 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -96,9 +96,17 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } @Remote(called = Loc.server, unreliable = true) - public static void transferItemTo(Unit unit, Item item, int amount, float x, float y, Building build){ + public static void setItem(Building build, Item item, int amount){ if(build == null || build.items == null) return; - unit.stack.amount = Math.max(unit.stack.amount - amount, 0); + build.items.set(item, amount); + } + + @Remote(called = Loc.server, unreliable = true) + public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){ + if(build == null || build.items == null) return; + + if(unit != null) unit.stack.amount = Math.max(unit.stack.amount - amount, 0); + for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){ Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {})); } diff --git a/gradle.properties b/gradle.properties index cd20e76ae5..e5c7e5fe4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash= +archash=7a2a357f6cfdc3725ce581093a0ced91f4474222 From dae46ceb6d91740ae03969afa08f5e9d8e861838 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 18:53:20 -0500 Subject: [PATCH 096/162] Campaign bugfixes / Balancing --- core/assets/maps/overgrowth.msav | Bin 33635 -> 33706 bytes core/src/mindustry/content/Bullets.java | 16 +---------- core/src/mindustry/content/UnitTypes.java | 26 ++++++++++++++---- .../mindustry/entities/comp/FlyingComp.java | 4 +-- .../src/mindustry/entities/comp/UnitComp.java | 6 ++-- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/core/assets/maps/overgrowth.msav b/core/assets/maps/overgrowth.msav index 0fd4902d1d9c5d79485d426f7ea840ccd5f5e485..a51978cb0f656fd8c33fc02a5f6fa531c9737216 100644 GIT binary patch literal 33706 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 literal 33635 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 =RwHY2 zUYqydZSUaUm!>Z)I&Zak9YX}$!5#ORwrbtkzsizVWV`eVw_8W2Ja{UwZ>je~ej(9+ z`+iq0cU*YhtRpj(<>AQ%JB-)sYrFDa)hw-j@M7w2JAY+Xd&XrF-={y0I5=(F>+`bb zo*9*7uk!!I@9CEI_1BYZo}PD}`YR{D`|)FYS^QJQ-+NDaKJzX3a(vmjzJ#CoNxyBk zwl~=CU=y0>^1UKCVcNsi7yk=)y)TTJEp~j)z1C*YV?UHWrkfR{Zc(MU z$zPSb?{~}+Ir`&OlYypvOxs_SVbX?iaP5d|6w`!|>ko=U;za z<_Pok(F!v2CF%}e+hOC9rE9q+8# zQ+I#&y~17fmH&GK{Z3xLs(-!e6i@cTmFNF|`qg~)=l*|LBHOP0`gnGKl;e`x|9>a+ iFRZcqzd!!D_uBRUo~2)|-~IdMoB8!0|F07_>I47}0@8^9 diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index c7fa47a62b..04a04ffbb1 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -37,7 +37,7 @@ public class Bullets implements ContentList{ waterShot, cryoShot, slagShot, oilShot, heavyWaterShot, heavyCryoShot, heavySlagShot, heavyOilShot, //environment, misc. - damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig; + damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt; @Override public void load(){ @@ -374,20 +374,6 @@ public class Bullets implements ContentList{ knockback = 0.7f; }}; - healBullet = new LaserBoltBulletType(5.2f, 13){{ - healPercent = 3f; - collidesTeam = true; - backColor = Pal.heal; - frontColor = Color.white; - }}; - - healBulletBig = new LaserBoltBulletType(5.2f, 15){{ - healPercent = 5.5f; - collidesTeam = true; - backColor = Pal.heal; - frontColor = Color.white; - }}; - fireball = new BulletType(1f, 4){ { pierce = true; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 83f3aa3db7..3dd1d1f20f 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -292,6 +292,7 @@ public class UnitTypes implements ContentList{ shootSound = Sounds.lasershoot; bullet = new LaserBoltBulletType(5.2f, 14){{ + lifetime = 37f; healPercent = 5f; collidesTeam = true; backColor = Pal.heal; @@ -311,7 +312,7 @@ public class UnitTypes implements ContentList{ mineTier = 2; mineSpeed = 5f; - commandLimit = 8; + commandLimit = 9; abilities.add(new ShieldRegenFieldAbility(20f, 40f, 60f * 5, 60f)); ammoType = AmmoTypes.power; @@ -975,7 +976,7 @@ public class UnitTypes implements ContentList{ zenith = new UnitType("zenith"){{ health = 700; - speed = 1.7f; + speed = 1.8f; accel = 0.04f; drag = 0.016f; flying = true; @@ -997,7 +998,7 @@ public class UnitTypes implements ContentList{ velocityRnd = 0.2f; shootSound = Sounds.missile; - bullet = new MissileBulletType(3f, 12){{ + bullet = new MissileBulletType(3f, 14){{ width = 8f; height = 8f; shrinkY = 0f; @@ -1005,7 +1006,7 @@ public class UnitTypes implements ContentList{ homingRange = 60f; keepVelocity = false; splashDamageRadius = 25f; - splashDamage = 10f; + splashDamage = 14f; lifetime = 60f; trailColor = Pal.unitBack; backColor = Pal.unitBack; @@ -1264,6 +1265,7 @@ public class UnitTypes implements ContentList{ engineSize = 3f; payloadCapacity = (2 * 2) * tilePayload; buildSpeed = 2.6f; + isCounted = false; ammoType = AmmoTypes.power; @@ -1274,7 +1276,13 @@ public class UnitTypes implements ContentList{ x = 8f; y = -6f; rotate = true; - bullet = Bullets.healBulletBig; + bullet = new LaserBoltBulletType(5.2f, 10){{ + lifetime = 35f; + healPercent = 5.5f; + collidesTeam = true; + backColor = Pal.heal; + frontColor = Color.white; + }}; }}, new Weapon("heal-weapon-mount"){{ shootSound = Sounds.lasershoot; @@ -1282,7 +1290,13 @@ public class UnitTypes implements ContentList{ x = 4f; y = 5f; rotate = true; - bullet = Bullets.healBullet; + bullet = new LaserBoltBulletType(5.2f, 8){{ + lifetime = 35f; + healPercent = 3f; + collidesTeam = true; + backColor = Pal.heal; + frontColor = Color.white; + }}; }}); }}; diff --git a/core/src/mindustry/entities/comp/FlyingComp.java b/core/src/mindustry/entities/comp/FlyingComp.java index be7b003baa..d37a6da899 100644 --- a/core/src/mindustry/entities/comp/FlyingComp.java +++ b/core/src/mindustry/entities/comp/FlyingComp.java @@ -46,8 +46,8 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } void wobble(){ - x += Mathf.sin(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; - y += Mathf.cos(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; + x += Mathf.sin(Time.time() + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; + y += Mathf.cos(Time.time() + (id() % 10) * 12, 25f, 0.05f) * Time.delta * elevation; } void moveAt(Vec2 vector, float acceleration){ diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 9451fc7278..f80a092417 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -399,7 +399,9 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I public void destroy(){ float explosiveness = 2f + item().explosiveness * stack().amount / 3f; float flammability = item().flammability * stack().amount / 3f; - Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); + if(!spawnedByCore){ + Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); + } float shake = hitSize / 3f; @@ -415,7 +417,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } //if this unit crash landed (was flying), damage stuff in a radius - if(type.flying){ + if(type.flying && !spawnedByCore){ Damage.damage(team,x, y, Mathf.pow(hitSize, 0.94f) * 1.25f, Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 5f, true, false, true); } From 91c50ae1260d72ea1e41bf88ed52f8c936f60878 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 19:25:26 -0500 Subject: [PATCH 097/162] Disabled explosion fires for item flammability <= 1 coming soon: spore bombing? --- core/assets/maps/extractionOutpost.msav | Bin 20013 -> 20024 bytes core/src/mindustry/entities/Damage.java | 14 ++++++++++---- .../mindustry/entities/comp/BuildingComp.java | 2 +- .../src/mindustry/entities/comp/UnitComp.java | 7 ++++--- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/assets/maps/extractionOutpost.msav b/core/assets/maps/extractionOutpost.msav index dfffe540439702f2695cf5762fb386ea3e14e1f0..7ce6a6904ef7acbd790b88e8055f0dfc9dc11d54 100644 GIT binary patch delta 19581 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 P{@ky4{+~HMr(_=hIL29( delta 19552 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 Lightning.create(Team.derelict, Pal.power, 3, x, y, Mathf.random(360f), branches + Mathf.range(2))); } - for(int i = 0; i < Mathf.clamp(flammability / 4, 0, 30); i++){ - Time.run(i / 2f, () -> Call.createBullet(Bullets.fireball, Team.derelict, x, y, Mathf.random(360f), Bullets.fireball.damage, 1, 1)); + if(fire){ + for(int i = 0; i < Mathf.clamp(flammability / 4, 0, 30); i++){ + Time.run(i / 2f, () -> Call.createBullet(Bullets.fireball, Team.derelict, x, y, Mathf.random(360f), Bullets.fireball.damage, 1, 1)); + } } int waves = Mathf.clamp((int)(explosiveness / 4), 0, 30); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 533e99b24b..9c971c3272 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -970,7 +970,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, }); } - Damage.dynamicExplosion(x, y, flammability, explosiveness * 3.5f, power, tilesize * block.size / 2f, Pal.darkFlame, state.rules.damageExplosions); + Damage.dynamicExplosion(x, y, flammability, explosiveness * 3.5f, power, tilesize * block.size / 2f, state.rules.damageExplosions); if(!floor().solid && !floor().isLiquid){ Effect.rubble(x, y, block.size); diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index f80a092417..7834898598 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -397,10 +397,11 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I /** Actually destroys the unit, removing it and creating explosions. **/ public void destroy(){ - float explosiveness = 2f + item().explosiveness * stack().amount / 3f; - float flammability = item().flammability * stack().amount / 3f; + float explosiveness = 2f + item().explosiveness * stack().amount * 1.4f; + float flammability = item().flammability * stack().amount / 1.9f; + if(!spawnedByCore){ - Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); + Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1); } float shake = hitSize / 3f; From 9863cbc9919e5f61113c973ec18b747b03b41e25 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 19:30:49 -0500 Subject: [PATCH 098/162] Disabled unit explosion team damage --- core/src/mindustry/entities/Damage.java | 6 +++--- core/src/mindustry/entities/comp/UnitComp.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 9614f895a6..64c08f318c 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -33,11 +33,11 @@ public class Damage{ /** Creates a dynamic explosion based on specified parameters. */ public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){ - dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true); + dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true, null); } /** Creates a dynamic explosion based on specified parameters. */ - public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire){ + public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){ if(damage){ for(int i = 0; i < Mathf.clamp(power / 20, 0, 6); i++){ int branches = 5 + Mathf.clamp((int)(power / 30), 1, 20); @@ -55,7 +55,7 @@ public class Damage{ for(int i = 0; i < waves; i++){ int f = i; Time.run(i * 2f, () -> { - Damage.damage(x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), explosiveness / 2f); + Damage.damage(ignoreTeam, x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), explosiveness / 2f, false); Fx.blockExplosionSmoke.at(x + Mathf.range(radius), y + Mathf.range(radius)); }); } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 7834898598..3465bf733f 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -401,7 +401,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I float flammability = item().flammability * stack().amount / 1.9f; if(!spawnedByCore){ - Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1); + Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1, team); } float shake = hitSize / 3f; From 0a290d2e1080a717b4687f89f759f5d08b0f8c9e Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 20:19:13 -0500 Subject: [PATCH 099/162] Auto-rebuilding of broken attack sector blocks on restart --- core/assets/maps/impact0078.msav | Bin 22370 -> 22299 bytes core/assets/maps/windsweptIslands.msav | Bin 13484 -> 13486 bytes core/src/mindustry/core/Control.java | 12 ++++++++++++ .../src/mindustry/entities/comp/UnitComp.java | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav index 56f5570bfb115b770568f015ee22a2d6653594ee..778982f92eadd0599e92e13531d221d5b1428586 100644 GIT binary patch literal 22299 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 literal 22370 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 diff --git a/core/assets/maps/windsweptIslands.msav b/core/assets/maps/windsweptIslands.msav index 2c8547f6f9676540b7aef2129f4291928ccdfd01..690a92471679dfe2ce578d23af5fb08dace93a09 100644 GIT binary patch delta 11482 zcmZ3Jxh`{phs+VrlVPDck&{Hdr@3@qNeb!~wcc2_@_`^2+wF+i@YUbe8(gs{e29UHkcY?azZ3 zRnKaim16!}v;1Oq;tSEV(2|+b@+Q@ZI5XJHs{SZ}uU}>u$0EKJdRm!yI$*WVt)NX)5|YPc4@D=5`WFFByH#I5as6?N6yrg7e;okTDkY9*ZPHm zTa8}TuZUT^HgWPE?u86}-l(&Z(J}XPzR1-Z-qT*A zKilfJjZ$rnrFlk1;tPi@32L_ak2=NHYGvq6UVWiy$AaBY&YS+~J?9{*S5hi4v)-k9 z-Np?!4En?RS4Mb;b6Xl2D1Ex8wS4bRtylGFK89v;ZkN4o zm==o6UUTA1ac9D<<6OG~f(;mQ_=Sac)PFAU%z7L1Ho4vL$#3zh!^O3|2X~mt-!6*w zzjw%}f8x*Wb)6x_X&17$rp;QiGc{zzELqF@7yH6CZ#fVb6#7?VY4uON5c8_Uwj+<) zS=TOVyBl=PZrlBGm08cZX8NTctH?HeD4I5lS6Awk-Jes;i60XpY?iE2**o*;v7pt9 zV|T^ZTM10zV_Uj&fryjknp4YCKCC!Y^!kpaEb|uE?C*E8%fICCTwY_XacOfY=a&@U zJsH+7E{0YKg$Ed_ma!|J%Ri&@TBh@d(HovyF)KDtp7BzDo5rP;f#HVtrO$0Qb=0a_ zayK&Q^#hll_yredt$*XMw{=VZWg(M!E(uqkS8Lz>JU6j^x8>#=byHfN{o$CdeeL`W zr+MyEf31Dm_Rj6X?6>>2bzNJu%=vrTU*neP)7xcxH~pP)aB-x8@%>9TqksP?Sh!T{ zt?Jul(PAD)i!QwSFe7}%#gD$_>nyk3loNKG`1{JU>r-mLhRr6&-twx_H0n^SV;f@X)p1-^H0 zES+{>(nj51S8Lwwb3JZoG;iIrEnz3Sb=McMOg+2q+=|!Fckiv--&`hp>wD(ItoH#| zq)In#U6g&iWp9wF;0m$uKC`Oss9U~QMD82K%rf7&d0lgO@xs<+f~P$+pKr~Qs%Oo4 z-6i+4a@~pVyPSWm%{Y4LR8gKs%e4%(TW9po>SVO9b89=oGDW*PiZ%U=k7?xT-l=}u zFMcU3=51c5zfB`L=XFg&TIG%%Yqa*R<5Se$wm@{r)#wsmR^FwSIs75M*_-D!X!d3F z@w~Z{TfF>l*d`@+TXEC#a)G6K9OZ5YWZUZB&PeWh`t+S@E`#^oWpSAgXNI;JH!)sa zz2oMxxYlAd(YQdU_4@9;9t~-{pcd688F2DVAYrjVEuAcnXRdykJklfc4N4>3!c`H|%#$2(>n5V53 z_1%PfM?(Ey!E)1&^~=7#SdhMO>hqI@aa*R8-JZMPq($mnc9WCRFQ0#&Vqx0juxeRS zrp5hC-mg+$lbo9aRikpuPI#_-RM08XQPlfv!|KmwyT4qBTEl)WKHy@j+wQ}eDf^tc z1@CUYczK$4-KNW#Hmi=uT>9publLHv(!mVf4CQM#Pb{#%!d-uFTh}@M%+xiP&p+jR zs;B)~)+_1M^UQ}e3ol;bbX&N8jqdj4Yp2?5To<`W_2VO@*2JQ9Pb9^vO!Vj4U)mBL z;`+QPXoaq+UeJLjkAArYuitpm{!3KVrd#*g+QOrK{zP62TsHC2u8m(`Y*IUu<#xlw zG=sM)GkKM*tf7hG>DakfR@MvJE?hY8DcAJXVJCmzUHHx4@2`H@ZC_b6wzaO;1B_UM z-=FD?p0o4g48QahwX;Is_+>9N+;8NZwaj$$O0^wHE2i@v>R37Dl%&@p^QEQ{e5;F= zFXX-DBzx32`=8pWxawQpI$L}4GtZpgZk1!&>MAQ=TDSP?^PuVlUzhK@G4Flp$$I1S zw->~|FA?9uSRpDNrlGOO>A7FGOHbRaiH9tU%uTJse)~u5d%-DeYn+&RbWO)r&KVOj zxYs;X-uA@AE@-0n)!eSRm&=ys9)8NZQ7Zi6q?6mu^HzIr@ea0GZ+z=VI z`x0?#y8c!+t!tj8#jP_g7|yo(S?A3DXW2Qmdf!hDvZb2qcP?x0KDRVRU~~Uxm$_QE zROjaPXBe*FZC0A8C)QJcf!}K0*Q#6QW}mZW1^sAco!oTk)q)kvZ4ETL%${7^6xs9T zi&uT8TG7UZpPszR-235LVsqW%?zMi+VYPd^Z&_bh^hik6y3qNxmE^agXz$bopR9so zF8&IaD3Py!tM|J7hR*rSorz(0wDPa7TD4;FuY!*;>lbqA?zM`(7Ph|l@zQnYF7KWz z`gcvKpQ}`5uyHhV-`Q)8&!pGx3C#&Rr*%DlYv`R=nJk0C#fz0Y(ptkz_xfaJv@h5# zxR^`p*;217m)D)qQ~mO3$@UYSJ8I9(eXlp=%c*TSp}&3C#$B)1GwmzSh+kK=@A}m( z^5%a_bMnhIAIM#QS-0Fa;-Jy$Ytq}M?>hYNBzM~S{I7ZsGwxeld3JZp-Uai2W%bx@ z`F7|#5Bup@-u*RoJGNYSamTxRtx;!;aH;3!wM$GNS$M{V-_|g)u0Gsr#he>>M{>)% z?D^N%9kuxA_I`$6gY{bXt262&9%#yb-V*%cN=TS-{tg$p9m`ekhQ1O$dZya=eWcmIZDDzz3Zn} zw|F=ow0bq^GN1eZ<@2+?Oc8z3nOLf5lilw7$$(iw*iQ6?ruqUU#!`LJ>?;Aw^;oOA zUTXUL{}kC1nkBJRPr8Mvq;l_p)f}I6Y;%2P{=2*F#R8XUb9a5-Ca{Ui^ii3l7-#a? z4R3?Or<_w?V$5-hoA2^YmAUzglkT0mWT+!lf1>TE=*ybbCFi$GUEh6 zPi@B37IDwJTPDmF_H*iqW_htKVCg4Cjpi3sRa$KfX5CX$ofu|*$aD!g;8Sq!mA69Z z;A8h_7K$tmdn$W4DKUpBMCMmVuHuC?Thg53t{#n^!eX<>)wf55 z>ulC+i>pO1WcB&y(V`6MTIuFb!su~;D0PmMWudF33l$#MFNX6(`Vp}{hLw@$^Uqsuod{xA$& zGN(aaI5KUmU)G0>4d+`HF&yUkF{i=&vqU_%jZCsg5P!IV&^e(8>&2^2x1QqPK2KON z-RXP4ew_;~%~FE$)9SY#Dz=*G%{WWgZ3^oPwTsgWC-U40cl|WS<5Gjh9J_{TEHBb# zK5b#$&lZp(!VtwRx>>{Fd&jovK|Py=+B$!5HOA?3h5Hzu%#rwxjsfLqc zzpz|;8g!uFD{A7i$YjGedzDtKVbJ9Yh=@~}BBsiHs%=-a2cx~V!@<~khF;aA=`0yj z9;q+fZTVXA+a|djfe%kbK2!?ES+d&1c&q$$3tW+Idi%77d5cVckbvkK=dzAdmss;O z8SCa8a94c)S~KWGdk2s5wuo!K9$Bo>rT(d>m+gI3_v<*9rI_g2?k=&G1wJdZIH#l* z{!eb&Bd|@(Y0Av40mqa+w-_BstXFCKy!N)leyP;BfV9+UKLt|V{x~wF`qii(N>cgq zbg7>D=d&HFQf#;R|N2>xbMgYq(-wAxjOGawxpP+wOqwV>+i~v1FH;n{Ql44PtPG6U z^GDByB}$BY6ihbjglnJB+qhyEtLT$@ z=hx1cl1}&T{Zq2F$Mp5f{UVLCHcGd$zjo%bm|W;z?W9pJI!p6PQuhTTtq*aEjrR;5 ztxsLUwRYmBRlz;iZ9{d}t654L{{7||Yse}mc8g7}z36$~v8AQu9<{z-6b#K*IK)0k zRk`O>f7kXOr!ROuZ%K2`)S1FmRPQ)vsgQrHu-$Xjim9sie{>ssJQXMA z9_F)F>BEG*Vy;}t)26))y~iH+@4WM#$4zUcjvZVj5n=Zw@ymJ5Ys|~%J{34F-`VbL zbE@60u-4*qPr-=?x+m{!km+<;m3lkh^qzbKcd4AjyMnn1(&BS{3e44unfvB=nC3e- zos$ja^50+Y?=PLYud>lb@{z9hB!O<0&3r{d`e}Z1&#R?me)*DGbxY)&dH&Y}59bP; zUD>ro=!Vkl!;Oy*-r~CPuVLP{wvW1vxj`Fxy|UxB6uUf|_O(J@XZ5Ef`TL@?jFnn@ zKDc&@cN_`hUUdG@<;yy{;+`9x$cb}ZYoFA2w`23f7b!A9q4i?-XNs=+C%7^ToPkSrsPVn(H z`POm8m%}WFo7p|AK*V`JcaDCyNYcY7kz@1T&XX@+>(*`FV!@@T`{49xqxd5YF&)XX zpSv>W-qJ|UR^nfCYN2yrMrw!VZPw#EzDoN|6J2=kJNxv*-(n~BRAlM9*R#hdzm$En z^w^PRg~y&L{F045mwRHk;%?5d>OK1^V#~QJp-1g3EX%~AM1H-R=RYT5Q6XT4_`SWOjs@TZ`Y>BIr=lRbO(Jixc@^t$cr14VYiKCKG^5hJkKinmY za~@yY;!} zkosxY`jZ?fXRnHIO>r@e+rj>Cfy$;cZAHxY0uSzv{2-+xXsN&HOt*P+?o8pi&spx8`^oiXAM7^np3f$ED`fMP z*LCqrm&+dNz24EPwun0?w6on=dlP$(PrdIKOYxwp`pE(O+Rd>_%a3KUJ<1B)VK{Tr z?1||Xsb9V%NGNW2caD>9O@z?K-70YjI;zUX7DkGEXBJC6N_bs(yRGzNTATBIf!srd zib^hSN|SR=&ppL?FGF|F)&RH2g$iQx)HF_Xxu!b#bDS65eIr?O#^)yw3qqWu58M-4 z-+#w$(#@j>JN@b%E&d%hTJ&JiJI%=WTbFxu=k>_kI~7%-JhL(>IOh-7N57T|<%6e# zO6Pnzzv;pJ=Gb#R6|XE<*9&z|-?}n3^U|$T>w?Xylkc8M-WY0M%>7M*_g=44{G&-H z<=YEItNBanALr;D>8@kDy<=*n!D*JI6CY?)hdm4Heyqrsb252vKs|?Q@J0)!oak$Z zj%oXDKXiAK7@y0eJ!j3o8EwmDvQ*z~dsU#w?^ojDZ8{bko-bST)_PWXrwGpzdCn&h z3bX61owN`0F+NLlyP$Vj^4PNZJllNd`DMw}Ygl~BYq|O+voU6};EdEz9lLx*`RxzR zKRCyCZL9s19bEmH74;^r|IN7S`?@k>z=&`^I}`?t?@gL`Ui@n%m$Z|t|+yB2w+ zr)V|j6EV&Yo4m{2ma(3!xT1bQ+0*n(V(}|2QI+?W(lHOO&E=ZHlImDt@Urvv$9kFDSeD^pCjI^R(&QF-lsFV`gx%q&6rQD6mr;A+d-`tqtscgLdlot2QpK5`&&El)) zTFg<{6trgM2KQ+PW|td%`gXX0nf>+sIROe?FXu9dxhP-CIO(D7qnvNMdU1k{%Edzabo(J`CT$Fcs-TJh(R8<(x-+;%pl zE;2Dkhb@e6;(i&cJO%ex?EdOgrJvlr zAk6Zr#p0Imo28pHUHV%8tykDJu~coQimvpeX*b?AoXRgYbiJq>o-VMRd*^oV*PQFm z1ymio&fLSXqJHAMKh5Fpw%bC?TCdDLV)d!-qwLqzzzMqbVJG-fWrRB0dM>c5_M~iV z_x6m~k(|k5&f|4ba_-rs0kd}MER`wq>o_WXv}EqaPsgK#R>!R=&^~m-<=Bi3Q(`;> zLY8X$n{s~cT!))?=Wvu?x$AY#fa$yXUu(|QnSqMBk%gHN;R(6^$~h`>qOUbus&#KX zJlv=D;HV<&ZKvHwcGWM^Dbw5eHuK*8BAWxMe9i}_x3WiAKmH_MR$cIKT1Ruo^V=zN zWtLxXdcJ!3&vmmthezuBSx5}@LfxM~=ne5+m~FV_1K0JZ zk0+VWJ$Q9Li=%3wUW9|53dd{?8P9LOx3N9r;{nHnlM&(XSD4?c|6T6IMv__og?xjy$8oE}(_T3tC-P#&0e|e^y74kHS+fuZ4NAa2H(&Ll0oqZ1$ zMq2JD__I4nlU3V>Wy@6-QCG=7-1Y13&)9HTo%!UEEh+m}Py8Kzd-=~GD>3`DeWiwv zRteOLc*-(`>XxLqUNpG(?a-$8E$cVV+`8hH&V^A#!JqW<}T0%QG5&w;Gt9mky>~@b+zTeAS?X|6W696<)1pIZ}*Hj+vG~bvNC>tPrOwz^@H5? z0tpfRxi$oXYMVc&9xU{OH{-#9I@1PkU8Kn7? zAKXs#*^$&KtFLn0bf$FQx$Z~n7wF%1jhejZyM@^?*U~j&f3N$?o)vCV*8k)Ez~G9y zo|VX6o&%A|N`G0+V)Ew-%rc($x!`At$^>;6t{vyB6W3mQ=quy*C`kK5{j|eR_}I5> z_`#yPQDthOMe&;D-Cf50!8?vvKgwKln&AL%0BiWH8>MDaW?EIP;R^dT0=yQ5M^t%e z*tgnhR7`zyzjxK1GeX&AFM?%0Ho>}$Z~eilDaRC-s!sGVTXN-0 zhO`@o3xRh{+<(QP(=#4sP2}|4mx>m(WVRxS(ge;^L-LdUQK# zA8gpH5XbuQj>mqjU(e&G%@kX?>%>cUEBE`$ZSIzC^4XKsuROhH%d_AY(!49zpVn~< z)my^Vu74xI`HwDl?SyE(CH#h#g?k0&-#p;Wv%@7b%H7rf^uqYhZ!=EqkLlW8XRlf{ z;X-Ty$L#9RnfmqX><<5aa7l8(gG1h~7L}D=f`YuY`?V~Ye*|p|VNG|~k(Rn)rgmuO z>)_Oj;?Ac#wmh=ZFWP)0H8keoIgaZEJzP-*YneV~XvuJ|XL=vZvGUL@ewkff8HTt1 zdA>~7SkW!k%=AHIwqo>Q9p>eCTrURKY*rM{`nDxw`N#18F+Zk@*1sxL5^UY_BxTfIAX_M}ZWE?ju`%kP#Ww>T$WY*FVwuDvHR=fgQJz9UAvG!yy1 zYN>&UiWqH1Y`f(ljY8NKC8cd zZM8*Cgk(~^k+{>bI^lJ%ezKpvT*97ls{h7;Z?+$KYOcK9pt^4vqvXSGhsuL($%~GB z)ogyu?$j;0Tb0#a#bU$mhM!_A>?MDuYFZS0%xm8w)*>Cz{M3o_(CxJAhZ3LsJ}kgx zmk=T%-+jIK!zSK17g^!TJ(o83U!Ac1bO+0mdX1Kz8u8!X8)5{0Dzzo~hKrvU0}54|dq za#NpGyL_=!uP9VJzQ)w+T2+&_@`U`r9gS}c^yN6qg?jStXp}}CY};)idT?5Wz1(a5 z1m|@!-1XZQU75-%9X9L!hL2}2hKpt{-P_9_dw5~Sty^5b>;I*iyB`ev=&SZPt`<|;t?8;!zhl9n{GC3*8O7VDgmx(N zolS5O;bi=Nb)i+AuR^-*QbxY?ZxMe~?zKm#TZC}&J-)P0>d}I)haxRCELP76ntx2Q z#`4JzHtzgc_hnCVf8DR|ckKBs6a9&W8MDRv)bIUc>+2Qj>g!ZuWakmfx0&&lbIJCg=_WUsqGc;985;osOn`Gd8MyHQsbb zHCb3ZS&x6IniSh_1AjGL>8ZQ2EchKX+mb&s>5FOHPSvqFd_A|I^h)v@wwdjc){@Ht zpUs;s^xCZAd&`9R{tLClPNX*WeAllRKAt1ZV)Qq8y7z8p&N^iut7S_>ZjbAEutrv^RUUM!(E#Ez9w%niij!_?_~dWP0|%xSi{@sN z`aR}tF%0bHm7Q;PR82kbyJ^Xs1GA@>aKCp{duI0N;-fsVYe5AriKqHUJUYqCd3$O52Oji8=;piHT7Mauap9Hv-YD$EoZ~n03P!bkXT+gHW zS9YPvZn2b{2MIF+zprpQQ@mEqPx|D8>}a;z;!iX`CYt43PL|wx@0ViAiF5ChHa795 zr|kR`$~OD?8*a@XHntCI)1O>vtN&^+Uxst9vW7>(>XS9;YnII2V(0E(kuSaPWQ_6A zNjii;u6+s(BDjN`_=Tb zi<>z(`o1zdd86w{>zeR({kvBEGZ#GgoaDaIL;K?{jdePXT>nHXewey5rkMz>`)=&S zxai>f6FM6?d-FY#-cA?XQ-7l9`jKew&dLgLOZAG4+oVM6yWV&Bcxjt`zjpGBw_^K^ z&Fk*nxb-UX&(jZ1x0k!{U;1z;KgF4=B0A5M^|lS4{89p1yl z<)s;&eS2?RAA9A@iy2(3&$PLco0#*h+%z|vSbVVcesCa)cQwnNe0y*I*{tqO%n z+SwcZra8$+Pmnx#oGChN!$aTAJ{Iv2^>X)qADLcqs)<)>qv8|pZ>&7=WgKRE9g)&@w1=27uGW5t5lkOGhb%gZ*uhbyUzFVy&SB2s%AZyp8MeS2ivGWFD0L_ ze-N}@8t=E|vIqD5Pb;JOcE{km!SsLzN<_d7=v$R-bP=!&{-;sb^8v z<$S;X$$HE1|iHUF^tgV>Hs(|^pm<#+R~W7*!X zn?xj5hB@clSlG_{Zqig4g=BqZ_KF*o`Ym&GynHNrAIVH&I?lbYzR~>fQlH1N zg>Q4cGz=~+TF*K6(7S0fkB2_0ZD7{_`1lOl#%+3^S9HdyhPi$a+wpHkMXA-tdH>B> z<<<%NMx4kC?aP+0Kk>SZvu{>~{QuXRHe_x;75+$f!u`i<&5K*pz25AZ)5JT?M$YXr zOJ9DQouH9XvGM))NB%il9tjlmn`RqlS$lBlg#1poD{JC>Cz$#Ex_{!f?yQclTKgUa z@_k=gpl0stAMK>k86Ga2Z}R*2F~%odXKV^{OShkK?zGvEJlSHxG1hvvn*Dl-(f7qp zJ~;IGt67upiLBd&MPa`Vs?WOHaOCvQ8w%}*XKUAQ*{@$=ZGfe#tUe)?VG;F%=bd1WzzQ9s!Lio`>!e3tSBP9JfCav!JZf1 zk6u|Qu`Jl5WA{kyA)`@oOpSkxL;Z1YrVSd(+uxrQUh^icG3QOWKUd0}lt)2Z{~x`{ z`Hz|9ddq?{&$Ir_p2>Kj^ibKKwcBl#7Vqi(U2*glBLnLXFN=Ru4(F{7@(UGWcp&%3 z{MGW*$wI5d8SV;a?Pl!a2;+D<+m|tl?`3nvizTm1k~mwbIhB)^S!w8YwtY=QXFE{*(L_$*Srw7xuL(=WbX3A z>+@m`8aQ7F-L&OMZ>aI-i3K;-9AUj&*}mrS##_f$F^dO(47cZNW7xKw;Y8)3Vm%r8 zDApB+ABz0xUv9xI>w7buq2f;8L6&@uo1ITAlpX5bgUmc0M6L5;Z0(-FaJ0^7MqN@Y zcYynvCZChbm)yP2L2V8`SFUJPC8?RjLzi=fG0j4m!!EM%O?^Y502 zo6^RYcZ8n(`0mQQf15(A*TUmD-0!;+4=Yb9ZahD8LbgDSdyM?QOPYMIjTD91jkYON zc4k&QS}tz*Qr-EiTgLC5e?G^5wU_+*`RK?0-|Xjy7XNzq|K5N5`lTM8Z$4lCGw1RB zHA<~pp6Yzxx#Gl}XJ7tr>z}sIY@%iEl!jvde(B&Pr?_ItGfQZ_Riex*UOgwtG7M;rOtQa!dt&?&xo6K{_UUWq(egYd%VrO)^YMFEg3U+p2v!5|G)42W8nWk^__oek-h%Q`{o;F zO}_oxY`W*#leYUNXzX86|338E+Pp`fY`GFw9r$`bX|jyAD@XhD->Xbd-A|pIsqM_! z|MTIi*KgSNo!`7wyOxo0*<@o~XGW{Z<+={)Mt&d6OXvQc|6;+vG9JxWWv=Qgju_r< zHf_dR3sC!t>p8Us^mqxUeoyc1skO_3PBe7dan)Dv`Nj3Qe(#y8Uk3ff6?Z-z$ThoEQ@%Ow zf?AgI%`ZK_a#R2LZvH1Y|Geg@{J{hSx^AHJMZeQNmn_}Y6r`U`G;JnjD|cA0zS)3|s4 z1K-&%+VHA$_FnUi^|C+yE)#ik|7Y{zJN?go^3SZ7maIQ_*t^Q~^e?B`2cEQ>SN@$- zCzDcp@6=z8dwi`nKN>c*%go+eHofvl_=SD(H%)4#FMEI9HSOz{fJO7(RLoz#-T2PC z2XV(A8_C&c$b}pKl~1?mIv#)ab6H*C>g(@WZlCVu+RdOBmFIf@O>!4@c(%QNb+Rv$bw}T8`%_=7CGC&yd#iIjc>2owM?d#e z{tLYp-c&y8YV&u=H~xyZF8+ZB z^~#Ozu#56Fid+`f{IPWP-nwx0UlZ@FOSa)RtgY1xuDP>rgVC}(4{N*f{@wi4bExZ< ztkA{!>&5$D@2s8QRKKjwU**>Gh<)q+S+zPFryn=z=${(H&4FRT>o!=MQRj# z?WCt(MaxUi?N8X-vBT$We`VDwo4*Uc)gODSmpA$Dg~XrgJLdhla`?`Bq0_$|k6ljx zt5&nO~>qS=%gnW7YTO!DTI*o_gPF*7iH6 zzCCo+-Nt^E`tJWc=hgkL{NJ{z{mK;iyOTA7_kE1KCax8H@1tev-xllI&#&JHpQzWA zU-ILRb&vY9s$1umR{XC#Hhs;1rtjqiX*>UQ+t{1Ozw%!m7awN!zOYj5>B`D??uB2p zJHIJ&{hR;k?)`9!tEbg&tq+d~ubKM$ZvC2qj>5Ui{m*O9R=@XX>+U@%QHtmPwr%?P zLYAwN_o?&!M<3NiuL(|>U+11U_w}~(n*VH92z=L=|F`jw)k7=R{nc>~g}CN={Rwz@ zMf-fkokFpbn-BlJyRW(1+&-Y=cwU?;zyFcPV#1GOfA>ecR};}=-I2VZf&1qh z%n5w=-6yQ|bmY18y?0kvPy78>NAKj#Zr83--;HnXyq{S(b!o1j^3Usgd{5RN&p7+p o{MY_9UVq=;P~Tp2mpxT(`~6>!uj}3Wwb1_8wf~I!Uq-tF0LvLcH~;_u delta 11463 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�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 bul$tCJ9V%9<91iPZvXe;_J8(_bN Date: Thu, 26 Nov 2020 20:46:17 -0500 Subject: [PATCH 100/162] Fixed Impact0078 ore gen / Misc campaign fixes --- core/assets/maps/impact0078.msav | Bin 22299 -> 22304 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/core/Control.java | 19 ++++++++++-------- .../mindustry/ui/dialogs/PlanetDialog.java | 2 +- .../world/blocks/campaign/LaunchPad.java | 5 +++++ 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav index 778982f92eadd0599e92e13531d221d5b1428586..3f639c045b0db08265b66d1a6e85bb5c30f55bb8 100644 GIT binary patch literal 22304 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 literal 22299 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 diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 21a8b3fb45..436d3939da 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -88,7 +88,7 @@ public class Vars implements Loadable{ /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; /** chance of an invasion per turn, 1 = 100% */ - public static final float baseInvasionChance = 1f / 75f; + public static final float baseInvasionChance = 1f / 80f; /** how many turns have to pass before invasions start */ public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index ba1c30492f..7b4ed65208 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -338,17 +338,20 @@ public class Control implements ApplicationListener, Loadable{ //reset win wave?? state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; - //replace all broken blocks - for(var plan : state.rules.waveTeam.data().blocks){ - Tile tile = world.tile(plan.x, plan.y); - if(tile != null){ - tile.setBlock(content.block(plan.block), state.rules.waveTeam, plan.rotation); - if(plan.config != null && tile.build != null){ - tile.build.configure(plan.config); + //if there's still an enemy base left, fix it + if(state.rules.attackMode){ + //replace all broken blocks + for(var plan : state.rules.waveTeam.data().blocks){ + Tile tile = world.tile(plan.x, plan.y); + if(tile != null){ + tile.setBlock(content.block(plan.block), state.rules.waveTeam, plan.rotation); + if(plan.config != null && tile.build != null){ + tile.build.configure(plan.config); + } } } + state.rules.waveTeam.data().blocks.clear(); } - state.rules.waveTeam.data().blocks.clear(); //kill all units, since they should be dead anyway Groups.unit.clear(); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 347c18c4a2..121fb41d57 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -562,7 +562,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(t.getChildren().any()){ c.add(name).left().row(); - c.add(t).padLeft(10f).row(); + c.add(t).padLeft(10f).left().row(); } }; diff --git a/core/src/mindustry/world/blocks/campaign/LaunchPad.java b/core/src/mindustry/world/blocks/campaign/LaunchPad.java index d72c1f133a..ef60f9a482 100644 --- a/core/src/mindustry/world/blocks/campaign/LaunchPad.java +++ b/core/src/mindustry/world/blocks/campaign/LaunchPad.java @@ -56,6 +56,11 @@ public class LaunchPad extends Block{ bars.add("items", entity -> new Bar(() -> Core.bundle.format("bar.items", entity.items.total()), () -> Pal.items, () -> (float)entity.items.total() / itemCapacity)); } + @Override + public boolean outputsItems(){ + return false; + } + public class LaunchPadBuild extends Building{ @Override From 869c329fbf609632a12a6d53da195b449c1b093a Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Nov 2020 21:29:22 -0500 Subject: [PATCH 101/162] Fixed Nuclear Complex gen / Increased damage simulation harshness --- core/assets/maps/impact0078.msav | Bin 22304 -> 22313 bytes core/assets/maps/nuclearComplex.msav | Bin 14864 -> 14951 bytes core/src/mindustry/Vars.java | 2 +- .../mindustry/entities/comp/BuildingComp.java | 2 ++ core/src/mindustry/maps/SectorDamage.java | 4 ++-- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav index 3f639c045b0db08265b66d1a6e85bb5c30f55bb8..44279fec16e1fcceb428922fa8d9480d9b7698e0 100644 GIT binary patch delta 17845 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