From 159813a7fdd6a45b18bd9244e83a2117284938da Mon Sep 17 00:00:00 2001 From: Redstonneur1256 <29004178+Redstonneur1256@users.noreply.github.com> Date: Sun, 11 May 2025 16:43:37 +0200 Subject: [PATCH 01/11] Logic color unpacking (#10794) * `unpackcolor` * Add description --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/logic/LExecutor.java | 26 ++++++++++++++++++-- core/src/mindustry/logic/LStatements.java | 29 +++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 2f9f520307..a2098265a6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nIf the success result variable is [accent]@wait[],\nwill wait until the previous message finishes.\nOtherwise, outputs whether displaying the message succeeded. lst.cutscene = Manipulate the player camera. diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 3b505c20f7..043dcc9f7c 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -1216,8 +1216,7 @@ public class LExecutor{ this.a = a; } - public PackColorI(){ - } + public PackColorI(){} @Override public void run(LExecutor exec){ @@ -1225,6 +1224,29 @@ public class LExecutor{ } } + public static class UnpackColorI implements LInstruction{ + public LVar r, g, b, a, value; + + public UnpackColorI(LVar r, LVar g, LVar b, LVar a, LVar value){ + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.value = value; + } + + public UnpackColorI(){} + + @Override + public void run(LExecutor exec){ + var color = Tmp.c1.fromDouble(value.num()); + r.setnum(color.r); + g.setnum(color.g); + b.setnum(color.b); + a.setnum(color.a); + } + } + public static class CutsceneI implements LInstruction{ public CutsceneAction action = CutsceneAction.stop; public LVar p1, p2, p3, p4; diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 4a61bb70c0..827d561715 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -897,6 +897,35 @@ public class LStatements{ } } + @RegisterStatement("unpackcolor") + public static class UnpackColorStatement extends LStatement{ + public String r = "r", g = "g", b = "b", a = "a", value = "color"; + + @Override + public void build(Table table){ + fields(table, r, str -> r = str); + fields(table, g, str -> g = str); + fields(table, b, str -> b = str); + fields(table, a, str -> a = str); + + row(table); + + table.add(" = unpack "); + + fields(table, value, str -> value = str); + } + + @Override + public LInstruction build(LAssembler builder){ + return new UnpackColorI(builder.var(r), builder.var(g), builder.var(b), builder.var(a), builder.var(value)); + } + + @Override + public LCategory category(){ + return LCategory.operation; + } + } + @RegisterStatement("end") public static class EndStatement extends LStatement{ @Override From e444f40d4c865aee64fd59a2675437de381787d4 Mon Sep 17 00:00:00 2001 From: BalaM314 <71201189+BalaM314@users.noreply.github.com> Date: Sun, 11 May 2025 20:13:51 +0530 Subject: [PATCH 02/11] Ignore colors when sorting maps (#10790) --- core/src/mindustry/maps/Map.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/maps/Map.java b/core/src/mindustry/maps/Map.java index be740c3891..36877c4124 100644 --- a/core/src/mindustry/maps/Map.java +++ b/core/src/mindustry/maps/Map.java @@ -239,7 +239,7 @@ public class Map implements Comparable, Publishable{ int modes = Boolean.compare(Gamemode.pvp.valid(this), Gamemode.pvp.valid(map)); if(modes != 0) return modes; - return name().compareTo(map.name()); + return Strings.stripColors(name()).compareTo(Strings.stripColors(map.name())); } @Override From c6ce5a200ffcf2de89669ba0074f6fdfec9f5cd2 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sun, 11 May 2025 14:45:04 +0000 Subject: [PATCH 03/11] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 4eb49384e3..7c540f7f1d 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index c50ef5e841..95c1b5cc76 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -2488,6 +2488,7 @@ lst.explosion = Създава експлозия на избрано място lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Поставяне на правило за игра. lst.flushmessage = Извежда съобщение на екрана от текстовия буфер.\nИзчаква до приключването на предишното съобщение. lst.cutscene = Манипулира камерата на играча. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 847f06fbd4..2cc2771af6 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -2488,6 +2488,7 @@ lst.explosion = Crea una explosió en una posició. lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic. lst.fetch = Cerca unitats, nuclis, jugadors o estructures mitjançant el seu índex.\nEls índexs van des del 0 fins al total del nombre d’elements. lst.packcolor = Empaqueta els components RGBA [0, 1] en un sol nombre per a dibuixar o establir regles. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Estableix una regla de la partida. lst.flushmessage = Mostra un missatge a la pantalla a partir dels continguts de la cua de text.\nEsperarà fins que acabi el missatge anterior. lst.cutscene = Manipula la càmera del jugador. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 18fb886347..0bc5bd515f 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 673cc5359b..2d7af2122f 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 1c0aae63c0..fd56c0fb0c 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -2488,6 +2488,7 @@ lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion. lst.setrate = Setzt die Ausführungsgeschwindigkeit von Prozessoren in Anweisungen/tick. lst.fetch = Finde Einheiten, Kerne, Spieler oder Blöcke nach Zahl.\nZahlen fangen bei 0 an und hören bei dem jeweiligen Count auf. lst.packcolor = Kombiniere [0, 1] RGBA Komponenten zu einer Zahl. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Setze eine Spielregel. lst.flushmessage = Zeige eine Nachricht aus dem Textspeicher auf dem Bildschirm.\nWartet, bis die vorherige Nachricht wieder verschwindet. lst.cutscene = Verschiebe die Spielerkamera. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6446872b96..c2167d1371 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -2488,6 +2488,7 @@ lst.explosion = Crea una explosión en una localización. lst.setrate = Establece la velocidad de ejecución de los procesadores lógicos en formato instrucción/tick. lst.fetch = Busca unidades, núcleos, jugadores o estructuras por índice.\nLos índices comienzan en 0 y finalizan devolviendo el total que se ha contado. lst.packcolor = Agrupa los componentes RGBA [0, 1] en un solo número para dibujar gráficos o establecer reglas. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Establece una regla de la partida. lst.flushmessage = Muestra un mensaje en pantalla desde la lista de espera de texto.\nEsperará a que finalice el mensaje anterior. lst.cutscene = Manipula la cámara del jugador. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 4c9540e207..ccdeb2a02f 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index eb8bf185bc..a5e2d30886 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 4bd39a1e4d..f457b166ea 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -2488,6 +2488,7 @@ lst.explosion = Luo räjähdys tietyssä sijainnissa. lst.setrate = Aseta prosessorin suoritusnopeus ohjeessa/sekunti. lst.fetch = Etsi yksiköitä, ytimiä, pelaajia tai rakennuksia luettelon perusteella.\nLuettelo alkaa nollasta ja päättyy osiensa lukumäärän. lst.packcolor = Pakkaa [0, 1] RGBA -komponentteja yhteen numeroon piirtämistä tai sääntöjen asettamista varten. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Aseta pelisääntö. lst.flushmessage = Näytä näytöllä viesti tekstipuskurista.\nOdottaa, kunnes edellinen viesti loppuu. lst.cutscene = Hallitse pelaajan kameraa. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 6245bdc27a..a4242fc278 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 6ceedf5a38..cb158cfe19 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -2488,6 +2488,7 @@ lst.explosion = Crée une explosion à un emplacement. lst.setrate = Définit la vitesse d'exécution d'un processeur en instructions/tick. lst.fetch = Cherche les unités, noyaux, joueurs ou constructions par index. Commence à 0 et termine par le nombre retourné. lst.packcolor = Compresse les composants RGBA [0, 1] en un seul nombre pour les opérations de dessins ou les changements de règles. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Change une règle du jeu. lst.flushmessage = Affiche un message sur l'écran depuis la mémoire tampon de texte.\nAttendra la fin du message précédent avant l'affichage du nouveau. lst.cutscene = Manipule la caméra du joueur. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index fcb156181b..a6008a2733 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -2488,6 +2488,7 @@ lst.explosion = Robbanás létrehozása az adott helyen. lst.setrate = A processzor végrehajtási sebességének beállítása utasítás/órajelciklusban. lst.fetch = Egységek, támaszpontok, játékosok, vagy épületek lekérdezése index szerint.\nAz indexek 0-tól indulnak és a visszaadott számuknál végződnek. lst.packcolor = Egyetlen számba tömöríti a [0, 1] RGBA komponenseket a rajzoláshoz vagy szabálymeghatározáshoz. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Játékszabály beállítása. lst.flushmessage = Üzenet megjelenítése a képernyőn a szövegpufferből. Ha a sikeres válasz változója [accent]@wait[],\nakkor, megvárja, amíg az előző üzenet befejeződik.\nMáskülönben a kimenet független attól, hogy az üzenet megjelenítése sikeres volt-e. lst.cutscene = A játékos kamerájának mozgatása. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index cb1e1aadef..9eec13d42f 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -2488,6 +2488,7 @@ lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan. lst.setrate = Menentukan kecepatan eksekusi prosesor dalam instruksi per tick. lst.fetch = Mencari unit, inti, pemain atau bangunan dari indeks.\nIndeks dimulai dari 0 dan berakhir pada jumlah yang dikembalikan. lst.packcolor = Memadatkan [0, 1] komponen RGBA menjadi satu angka untuk menggambar atau rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Menentukan suatu peraturan permainan. lst.flushmessage = Tampilkan sebuah pesan di layar dari antrian teks.\nAkan menunggu hingga pesan sebelumnya selesai. lst.cutscene = Mengendalikan kamera pemain. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 512d175046..9a1ba71c60 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 1e0261ee1b..c09dc24d25 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -2488,6 +2488,7 @@ lst.explosion = ある場所で爆発を起こします。 lst.setrate = プロセッサーの実行速度を1命令/tickで設定します。 lst.fetch = ユニット、コア、プレイヤー、建物を番号で検索します。\n番号は0から始まり、返された回数で終わります。 lst.packcolor = [0, 1] RGBA 成分を1つの数値にまとめて、描画やルール設定に利用します。 +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = ゲームルールを設定します。 lst.flushmessage = テキストバッファから画面にメッセージを表示します。\n前のメッセージが終了するまで待ちます。 lst.cutscene = プレイヤーのカメラを操作します。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 31cd72e290..66eca86845 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -2488,6 +2488,7 @@ lst.explosion = 특정 위치에 폭발을 생성합니다. lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정합니다. lst.fetch = 유닛, 코어, 플레이어 또는 건물을 엔티티 번호로 조회합니다.\n번호는 0에서 시작하여 엔티티 번호-1에서 끝납니다. lst.packcolor = 그리기 혹은 규칙 설정을 위해 [0, 1] RGBA 단일 요소로 묶습니다. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = 게임 규칙을 설정합니다. lst.flushmessage = 텍스트 버퍼로부터 화면에 메세지를 표시합니다.\n이전 메세지가 완료될 때까지 기다립니다. lst.cutscene = 플레이어 카메라를 조작합니다. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index b679966484..a5777616ee 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 29ccf62387..388d43d9ba 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 85ea38f1e6..4ce0a9690e 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 174702b2a6..260a82bd89 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -2488,6 +2488,7 @@ lst.explosion = Stwórz eksplozję w lokalizacji. lst.setrate = Ustaw szybkość wykonywania procesora w instrukcjach/tick. lst.fetch = Wyszukaj jednostki, rdzenie, graczy lub budynki według indeksu.\nIndeksy zaczynają się od 0 i kończą na ich zwróconej liczbie. lst.packcolor = Spakuj [0, 1] komponenty RGBA w jedną liczbę do rysowania lub ustawiania reguł. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Ustaw zasady gry. lst.flushmessage = Wyświetl wiadomość na ekranie z bufora tekstowego.\nPoczeka najpierw na zakończenie wyświetlania poprzedniej wiadomości. lst.cutscene = Manipuluj kamerą gracza. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index df5e1e007f..f407bafac1 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -2488,6 +2488,7 @@ lst.explosion = Crie uma explosão em um local. lst.setrate = Defina a velocidade de execução do processador em instruções/tick. lst.fetch = Pesquise unidades, núcleos, jogadores ou edifícios por índice.\nOs índices começam em 0 e terminam na contagem retornada. lst.packcolor = Empacote [0, 1] componentes RGBA em um único número para desenho ou configuração de regra. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Defina uma regra do jogo. lst.flushmessage = Exibe uma mensagem na tela do buffer de texto.\nAguardará até que a mensagem anterior termine. lst.cutscene = Manipule a câmera do jogador. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index c0ff8b00cd..ae76623896 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -2488,6 +2488,7 @@ lst.explosion = Crie uma explosão em um local. lst.setrate = Defina a velocidade de execução do processador em instruções/tick. lst.fetch = Pesquise unidades, núcleos, jogadores ou edifícios por índice.\nOs índices começam em 0 e terminam na contagem retornada. lst.packcolor = Empacote [0, 1] componentes RGBA em um único número para desenho ou configuração de regra. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Defina uma regra do jogo. lst.flushmessage = Exibe uma mensagem na tela do buffer de texto.\nAguardará até que a mensagem anterior termine. lst.cutscene = Manipule a câmera do jogador. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 32d6c54eea..621169d964 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 334f91c675..bf71eebfa9 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -2488,6 +2488,7 @@ lst.explosion = Создает взрыв на локации. lst.setrate = Устанавливает скорость выполнения процессора в инструкциях/тиках. lst.fetch = Ищет единицы, ядра, игроков или зданий по индексу.\nИндексы начинаются с 0 и заканчиваются возвращаемым числом. lst.packcolor = Упаковывает компоненты RGBA [0, 1] в один номер для рисования или установки правил. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Устанавливает игровое правило. lst.flushmessage = Отображает сообщение из текстового буфера на экране игрока.\nБудет ожидать окончание предыдущего сообщения. lst.cutscene = Управляет камерой игрока. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 65b77a0e2f..46b6a00aa3 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -2488,6 +2488,7 @@ lst.explosion = Izazovi eksploziju na mestu. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Postavi pravilo igre. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 164f75d3c5..ffe6dbeaae 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 302192c2b2..f7b8ebb662 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -2488,6 +2488,7 @@ lst.explosion = สร้างระเบิดที่ตำแหน่ง lst.setrate = ตั้งค่าความเร็วการสั่งเป็นคำสั่งใน คำสั่ง/ติก lst.fetch = ค้นหายูนิต แกนกลาง ผู้เล่น หรือสิ่งก่อสร้างตามดัชนี\nดัชนีเริ่มที่ 0 และจบที่ค่าที่จะส่งกลับ lst.packcolor = แพ็ค [0, 1] ส่วนประกอบ RGBA มาเป็นเลขบรรทัดเดียวสำหรับการวาดหรือการตั้งค่ากฎ +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = ตั้งค่ากฎของเกม lst.flushmessage = แสดงข้อความบนหน้าจอจากบัฟเฟอร์ข้อความ\nถ้าตัวแปรผลลัพธ์ออกมาเป็น [accent]@wait[]\nจะรอจนกว่าข้อความก่อนหน้าจะเสร็จสิ้น\nนอกจากนั้น จะส่งออกว่าการแสดงผลข้อความสำเร็จหรือไม่ lst.cutscene = ควบคุมมุมกล้องของผู้เล่น diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 7eaba0119e..a498bf910f 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -2488,6 +2488,7 @@ lst.explosion = Create an explosion at a location. lst.setrate = Set processor execution speed in instructions/tick. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.packcolor = Pack [0, 1] RGBA components into a single number for drawing or rule-setting. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Set a game rule. lst.flushmessage = Display a message on the screen from the text buffer.\nWill wait until the previous message finishes. lst.cutscene = Manipulate the player camera. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index be08900451..3c6b3fbce8 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -2488,6 +2488,7 @@ lst.explosion = Bir Noktada Patlama oluştur. lst.setrate = İşlemci Hızını Ayarla (işlem/tick) lst.fetch = Numara ile Merkez, Birim veya Oyuncu Ara.\nNumaralar, 0dan başlar ve birim sayısında biter. lst.packcolor = Derle [0, 1] RGBA bileşenleri, çizim veya kural belirleme için tek bir sayıya dönüştürülür. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Bir Oyun Kuralı Ata. lst.flushmessage = Ekranda bir yazı göster.\nBir önceki yazı kaybolana kadar bekler. lst.cutscene = Oyuncu Kamerasını hareket ettir. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index d80f18ce8d..2188523398 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -2488,6 +2488,7 @@ lst.explosion = Створює вибух у певному місці. lst.setrate = Установлює швидкість виконання процесора в інструкціях за такт. lst.fetch = Пошук одиниць, ядер, гравців або будівель за індексом.\nІндекси починаються з 0 і закінчуються на поверненій кількості. lst.packcolor = Упаковує [0, 1] компоненти RGBA в єдине число для малювання або встановлення правил. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Установлює ігрове правило. lst.flushmessage = Показує повідомлення на екрані з текстового буфера.\nЧекатиме, поки не закінчиться попереднє повідомлення. lst.cutscene = Керує камерою гравця. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 26b81436f2..b6cd5e027d 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -2488,6 +2488,7 @@ lst.explosion = Tạo ra một vụ nổ tại một vị trí. lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ lệnh/tích-tắc. lst.fetch = Tra cứu các đơn vị, lõi, người chơi hoặc công trình bằng chỉ số.\nCác chỉ số bắt đầu từ 0 và kết thúc tại số lượng đếm của chúng. lst.packcolor = Đóng gói màu thành phần RGBA [0, 1] thành một số đơn dùng cho vẽ hoặc thiết lập quy tắc. +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = Thiết đặt một quy tắc trò chơi. lst.flushmessage = Hiển thị một tin nhắn trên màn hình từ bộ đệm văn bản.\nNếu giá trị [accent]thành công[] (success) trả về là [accent]@wait[],\nsẽ đợi cho đến khi tin nhắn trước đó hoàn tất.\nNgược lại, xuất ra liệu rằng tin nhắn đã hiển thị thành công. lst.cutscene = Điều khiển máy quay của người chơi. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 5a02fda15f..a2b1686e48 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -2488,6 +2488,7 @@ lst.explosion = 在某个位置生成爆炸。 lst.setrate = 在指令/时间刻的时间下设置处理器处理速度。 lst.fetch = 按索引查找单位、核心、玩家或建筑物\n索引从 0 开始,以其返回的计数结束。 lst.packcolor = 将 [0,1] 范围内的 RGBA 分量整合成单个数字,用于绘图或规则设置。 +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = 设置地图规则。 lst.flushmessage = 在屏幕中央投影文字缓存区的内容\n会等待上一个文字显示结束。 lst.cutscene = 控制玩家游戏视角。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index d98986ca61..6ecba66c23 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -2488,6 +2488,7 @@ lst.explosion = 在某一位置製造爆炸 lst.setrate = 以指令/每時刻設置處理器速度 lst.fetch = 按索引查找單位、核心、玩家或建築物\n索引從 0 開始,以返回的計數結束 lst.packcolor = 將 [0, 1] 範圍內的 RGBA 分量合爲單個數字,用於繪圖或設置規則 +lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. lst.setrule = 設置遊戲規則 lst.flushmessage = 从文本緩存中讀取並於屏幕上顯示一條消息\n會等待上一條消息結束 lst.cutscene = 控制玩家鏡頭 From 9730bbd58d002a23f98cf5cc7efd7013fec686bb Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 11 May 2025 21:25:45 -0400 Subject: [PATCH 04/11] Sign logic op --- core/src/mindustry/logic/LogicOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/mindustry/logic/LogicOp.java b/core/src/mindustry/logic/LogicOp.java index 994dfdc1a4..571e67438b 100644 --- a/core/src/mindustry/logic/LogicOp.java +++ b/core/src/mindustry/logic/LogicOp.java @@ -36,6 +36,7 @@ public enum LogicOp{ len("len", true, (x, y) -> Mathf.dst((float)x, (float)y)), noise("noise", true, (x, y) -> Simplex.raw2d(0, x, y)), abs("abs", a -> Math.abs(a)), //not a method reference because it fails to compile for some reason + sign("sign", Math::signum), log("log", Math::log), log10("log10", Math::log10), floor("floor", Math::floor), From f1390f39334f9b65d53d0788e760e2fc042b4dce Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 May 2025 10:24:15 -0400 Subject: [PATCH 05/11] Fixed #10807 --- core/src/mindustry/entities/comp/UnitComp.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 540a171a49..2c191a7d71 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -35,7 +35,7 @@ import static mindustry.logic.GlobalVars.*; @Component(base = true) abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Syncc, Shieldc, Displayable, Ranged, Minerc, Builderc, Senseable, Settable{ private static final Vec2 tmp1 = new Vec2(), tmp2 = new Vec2(); - static final float warpDst = 30f; + static final float warpDst = 20f; @Import boolean dead, disarmed; @Import float x, y, rotation, maxHealth, drag, armor, hitSize, health, shield, ammo, dragMultiplier, armorOverride, speedMultiplier; @@ -647,6 +647,9 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I if(y > top) dy -= (y - top)/warpDst; velAddNet(dx * Time.delta, dy * Time.delta); + float margin = tilesize * 2f; + x = Mathf.clamp(x, left - margin, right - tilesize + margin); + y = Mathf.clamp(y, bot - margin, top - tilesize + margin); } //clamp position if not flying From c5f3d584f03c12e5d9afff03c7e5df7c7246f76e Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 May 2025 10:29:05 -0400 Subject: [PATCH 06/11] Fixed #10801 --- core/src/mindustry/logic/LStatement.java | 4 ++++ core/src/mindustry/logic/LStatements.java | 4 +++- core/src/mindustry/logic/LogicDialog.java | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/logic/LStatement.java b/core/src/mindustry/logic/LStatement.java index 76bcd781b3..a7a384084f 100644 --- a/core/src/mindustry/logic/LStatement.java +++ b/core/src/mindustry/logic/LStatement.java @@ -244,6 +244,10 @@ public abstract class LStatement{ } + public String typeName(){ + return getClass().getSimpleName().replace("Statement", ""); + } + public String name(){ return Strings.insertSpaces(getClass().getSimpleName().replace("Statement", "")); } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 827d561715..e1b39969ce 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -1634,6 +1634,8 @@ public class LStatements{ case mapArea -> { table.add(" = "); + row(table); + fields(table, "x", p1, s -> p1 = s); fields(table, "y", p2, s -> p2 = s); row(table); @@ -1653,7 +1655,7 @@ public class LStatements{ case ban, unban -> { table.add(" block/unit "); - field(table, value, s -> value = s); + fields(table, value, s -> value = s); } default -> { table.add(" = "); diff --git a/core/src/mindustry/logic/LogicDialog.java b/core/src/mindustry/logic/LogicDialog.java index 047e54c99c..f5b09226f3 100644 --- a/core/src/mindustry/logic/LogicDialog.java +++ b/core/src/mindustry/logic/LogicDialog.java @@ -295,7 +295,8 @@ public class LogicDialog extends BaseDialog{ for(Prov prov : LogicIO.allStatements){ LStatement example = prov.get(); - if(example instanceof InvalidStatement || example.hidden() || (example.privileged() && !privileged) || (example.nonPrivileged() && privileged) || (!text.isEmpty() && !example.name().toLowerCase(Locale.ROOT).contains(text))) continue; + if(example instanceof InvalidStatement || example.hidden() || (example.privileged() && !privileged) || (example.nonPrivileged() && privileged) || + (!text.isEmpty() && !example.name().toLowerCase(Locale.ROOT).contains(text) && !example.typeName().toLowerCase(Locale.ROOT).contains(text))) continue; if(matched[0] == null){ matched[0] = prov; From 8951a2698e31cb243dbdd737530dfcf0b3bd3c7c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 May 2025 11:19:10 -0400 Subject: [PATCH 07/11] Stricter construct checks --- core/src/mindustry/entities/comp/BuilderComp.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 866717c452..65bacbbd2c 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -147,7 +147,7 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ if(hasAll){ Call.beginPlace(self(), current.block, team, current.x, current.y, current.rotation); - if(current.block.instantBuild){ + if(!net.client() && current.block.instantBuild){ if(plans.size > 0){ plans.removeFirst(); } @@ -188,7 +188,7 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ //otherwise, update it. if(current.breaking){ entity.deconstruct(self(), core, bs); - }else if(entity.current != null && entity.current.unlockedNowHost()){ //only allow building unlocked blocks + }else if(entity.current != null && (state.isEditor() || (state.rules.waves && team == state.rules.waveTeam && entity.current.isVisible()) || (entity.current.unlockedNowHost() && entity.current.environmentBuildable() && entity.current.isPlaceable()))){ //only allow building unlocked blocks entity.construct(self(), core, bs, current.config); } From e1e5bd5b3f7868320195210e55da36ab8edf1ae0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 May 2025 12:06:35 -0400 Subject: [PATCH 08/11] Fixed #10806 / Fixed crash --- core/src/mindustry/game/MapObjectives.java | 1 + core/src/mindustry/game/SectorInfo.java | 10 ++--- core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/io/SaveVersion.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 48 ++++++++++++---------- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index 7e7d5af4af..36773e7c51 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -1242,6 +1242,7 @@ public class MapObjectives implements Iterable, Eachable timeDestroyBase){ health = 0f; //return current wave if simulating - if(retWave) return i - waveBegin; + if(retWave) return Math.max(i - waveBegin - 1, waveBegin); break; } @@ -132,7 +135,7 @@ public class SectorDamage{ /** Applies wave damage based on sector parameters. */ public static void applyCalculatedDamage(){ //calculate base damage fraction - float damage = getDamage(state.rules.sector.info); + float damage = getDamage(state.rules.sector); //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.2f); @@ -187,7 +190,8 @@ public class SectorDamage{ } /** Calculates damage simulation parameters before a game is saved. */ - public static void writeParameters(SectorInfo info){ + public static void writeParameters(Sector sector){ + var info = sector.info; Building core = state.rules.defaultTeam.core(); Seq spawns = new Seq<>(); spawner.eachGroundSpawn((x, y) -> spawns.add(world.tile(x, y))); @@ -370,7 +374,7 @@ public class SectorDamage{ info.curEnemyDps = curEnemyDps*cmult; info.curEnemyHealth = curEnemyHealth*cmult; - info.wavesSurvived = getWavesSurvived(info); + info.wavesSurvived = getWavesSurvived(sector); } public static void apply(float fraction){ From 4e84bbc547b6c8b1e09bc9102f7c5740c1e4f731 Mon Sep 17 00:00:00 2001 From: "nuri (smol)" <75618732+SMOLKEYS@users.noreply.github.com> Date: Thu, 15 May 2025 01:02:55 +0800 Subject: [PATCH 09/11] make launch args easily accessible (desktop) (#10802) * make launch args easily accessible * staticnt --- desktop/src/mindustry/desktop/DesktopLauncher.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/desktop/src/mindustry/desktop/DesktopLauncher.java b/desktop/src/mindustry/desktop/DesktopLauncher.java index 9e18ce5a54..5fd21d90f1 100644 --- a/desktop/src/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/mindustry/desktop/DesktopLauncher.java @@ -30,6 +30,8 @@ import static mindustry.Vars.*; public class DesktopLauncher extends ClientLauncher{ public final static long discordID = 610508934456934412L; + public final String[] args; + boolean useDiscord = !OS.hasProp("nodiscord"), loadError = false; Throwable steamError; @@ -72,6 +74,8 @@ public class DesktopLauncher extends ClientLauncher{ } public DesktopLauncher(String[] args){ + this.args = args; + Version.init(); boolean useSteam = Version.modifier.contains("steam"); testMobile = Seq.with(args).contains("-testMobile"); From f99153e2efb56a15dec83c959a6820c3cd925589 Mon Sep 17 00:00:00 2001 From: 1ue999 <106450442+1ue999@users.noreply.github.com> Date: Wed, 14 May 2025 19:03:12 +0200 Subject: [PATCH 10/11] opround thing (#10805) --- core/src/mindustry/logic/LogicOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/mindustry/logic/LogicOp.java b/core/src/mindustry/logic/LogicOp.java index 571e67438b..3181e3b4c3 100644 --- a/core/src/mindustry/logic/LogicOp.java +++ b/core/src/mindustry/logic/LogicOp.java @@ -41,6 +41,7 @@ public enum LogicOp{ log10("log10", Math::log10), floor("floor", Math::floor), ceil("ceil", Math::ceil), + round("round", Math::round), sqrt("sqrt", Math::sqrt), rand("rand", d -> GlobalVars.rand.nextDouble() * d), From 185ad13e490c1f693c66ef59cef59835224c9ecf Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 15 May 2025 18:30:40 -0400 Subject: [PATCH 11/11] 25% flying unit wreck health / 50% flying unit crash damage --- core/src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/type/UnitType.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 2c191a7d71..950226b0c1 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -774,7 +774,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //move down elevation -= type.fallSpeed * Time.delta; - if(isGrounded() || health <= -maxHealth){ + if(isGrounded() || health <= -maxHealth * type.wreckHealthMultiplier){ Call.unitDestroy(id); } } @@ -869,7 +869,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 && !spawnedByCore && type.createWreck && state.rules.unitCrashDamage(team) > 0){ var shields = indexer.getEnemy(team, BlockFlag.shield); - float crashDamage = Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 5f * state.rules.unitCrashDamage(team); + float crashDamage = Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * 2.5f * state.rules.unitCrashDamage(team); if(shields.isEmpty() || !shields.contains(b -> b instanceof ExplosionShield s && s.absorbExplosion(x, y, crashDamage))){ Damage.damage(team, x, y, Mathf.pow(hitSize, 0.94f) * 1.25f, crashDamage, true, false, true); } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 6f2b6d784b..071c5f923b 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -93,6 +93,8 @@ public class UnitType extends UnlockableContent implements Senseable{ buildRange = Vars.buildingRange, /** multiplier for damage this (flying) unit deals when crashing on enemy things */ crashDamageMultiplier = 1f, + /** multiplier for health that this flying unit has for its wreck, based on its max health. */ + wreckHealthMultiplier = 0.25f, /** a VERY ROUGH estimate of unit DPS; initialized in init() */ dpsEstimate = -1, /** graphics clipping size; <0 to calculate automatically */