From 85712c9f3c4079dc8be376ae17d8dcf92f87dd88 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:24:59 +0300 Subject: [PATCH 001/460] Update rvsb.json --- patches/rvsb.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 7609b138..848a683b 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -220,9 +220,9 @@ unit.emanate.range: 320 unit.emanate.maxRange: 400 unit.emanate.faceTarget: false unit.emanate.fogRadius: 20 -unit.emanate.flyingLayer: -11000 +unit.emanate.flyingLayer: -500 unit.emanate.useUnitCap: false -unit.emanate.health: 1500 +unit.emanate.health: 750 unit.emanate.hittable: true unit.emanate.targetable: true @@ -248,7 +248,7 @@ recoil: 0 recoils: 0 recoilTime: 0 name: "assembly-drone" -layerOffset: 11085 +layerOffset: 585 shootSound: spark controllable: false autoTarget: true @@ -265,7 +265,7 @@ pierceArmor: true name: small-mount-weapon x: 0 y: -5 -layerOffset: 11085.0001 +layerOffset: 585.0001 type: pointDefenseWeapon reload: 4 targetInterval: 4 @@ -287,7 +287,7 @@ damage: 20 x: 0 y: 0 name: "vanquish-point-weapon" -layerOffset: 11085.0001 +layerOffset: 585.0001 controllable: false autoTarget: true recoils: 0 From f2736f4ed57aa89505dd0878c21eb799b8dea9ea Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:25:49 +0300 Subject: [PATCH 002/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 848a683b..7cc6f840 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -468,7 +468,7 @@ unit.disrupt-missile.weapons: [ suppressionRange: 140f width: 49.6f height: 49.6f - damage: 80f + damage: 100f pierce: true shootEffect: { type: ExplosionEffect @@ -543,7 +543,7 @@ unit.quell-missile.weapons: [ suppressionRange: 140f width: 49.6f height: 49.6f - damage: 140f + damage: 170f pierce: true shootEffect: { type: ExplosionEffect From fe8e6c329486ca048a469030efe168236effe2d1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:28:19 +0300 Subject: [PATCH 003/460] Update Evolution.java --- src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index f5122174..2731f348 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -57,7 +57,7 @@ public enum Evolution { CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "elude", "nova", "flare", "mono" }), SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }), - DISRUPT(UnitTypes.disrupt, 10, 800*multp, new String[] { "nova", "flare", "dagger"}), + DISRUPT(UnitTypes.disrupt, 10, 500*multp, new String[] { "nova", "flare", "dagger"}), OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "elude", "nova", "dagger", "mono" }); From d22d25c105474d4d15bc63a089acf191cebbdf8f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 4 Dec 2025 20:19:43 +0300 Subject: [PATCH 004/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 7cc6f840..85234ce7 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -543,7 +543,7 @@ unit.quell-missile.weapons: [ suppressionRange: 140f width: 49.6f height: 49.6f - damage: 170f + damage: 145f pierce: true shootEffect: { type: ExplosionEffect From 06275fc3fc623649d57dc044ec48edd1a697875d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 7 Dec 2025 12:14:23 +0300 Subject: [PATCH 005/460] Update rvsb.json --- patches/rvsb.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 85234ce7..a46fd964 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -7,7 +7,7 @@ unit.disrupt.speed: 2 //disrupt ability "wings" unit.disrupt.weapons.+: [ { alwaysShooting: true -minShootVelocity: 3.6 +minShootVelocity: 3.9 x: 0 y: 0 name: small-mount-weapon @@ -105,7 +105,7 @@ heatColor: fc4e03 //disrupt ability additional sfx { alwaysShooting: true -minShootVelocity: 3.6 +minShootVelocity: 3.9 reload: 20 shootSound: spellLoop bullet: { @@ -120,7 +120,7 @@ shake: 7 alwaysShooting: true x: 0 y: 0 -minShootVelocity: 3.6 +minShootVelocity: 3.9 reload: 540 shoot: { firstShotDelay: 60 From 7b9e8c4bbba3d502b96f242a99f188b052afdce7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 7 Dec 2025 12:24:53 +0300 Subject: [PATCH 006/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index a46fd964..876ead7d 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -208,7 +208,7 @@ spawnUnit: emanate //disrupt drone(emanate) unit.emanate.localizedName: "Disruption drone" -unit.emanate.hitSize: 0 +unit.emanate.hitSize: 1 unit.emanate.flyingLayer: 85 unit.emanate.region: "unit-assembly-drone-full" unit.emanate.fullIcon: "unit-assembly-drone-preview" @@ -222,7 +222,7 @@ unit.emanate.faceTarget: false unit.emanate.fogRadius: 20 unit.emanate.flyingLayer: -500 unit.emanate.useUnitCap: false -unit.emanate.health: 750 +unit.emanate.health: 350 unit.emanate.hittable: true unit.emanate.targetable: true From 3f008a094b297ebef24d23c728adc43939258703 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 7 Dec 2025 12:48:49 +0300 Subject: [PATCH 007/460] Update rvsb.json --- patches/rvsb.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 876ead7d..6c8d1d8f 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -7,7 +7,7 @@ unit.disrupt.speed: 2 //disrupt ability "wings" unit.disrupt.weapons.+: [ { alwaysShooting: true -minShootVelocity: 3.9 +minShootVelocity: 3.6 x: 0 y: 0 name: small-mount-weapon @@ -105,7 +105,7 @@ heatColor: fc4e03 //disrupt ability additional sfx { alwaysShooting: true -minShootVelocity: 3.9 +minShootVelocity: 3.6 reload: 20 shootSound: spellLoop bullet: { @@ -120,7 +120,7 @@ shake: 7 alwaysShooting: true x: 0 y: 0 -minShootVelocity: 3.9 +minShootVelocity: 3.6 reload: 540 shoot: { firstShotDelay: 60 From 4b9194479c25d7f5f44f28b5685769457a848431 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:57:56 +0300 Subject: [PATCH 008/460] fix drone bs --- patches/rvsb.json | 50 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 6c8d1d8f..9d8ae113 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -197,7 +197,7 @@ fragBullets: 1 fragBullet: { speed: 0f keepVelocity: false -spawnUnit: emanate +spawnUnit: incite } } } @@ -206,28 +206,27 @@ spawnUnit: emanate -//disrupt drone(emanate) -unit.emanate.localizedName: "Disruption drone" -unit.emanate.hitSize: 1 -unit.emanate.flyingLayer: 85 -unit.emanate.region: "unit-assembly-drone-full" -unit.emanate.fullIcon: "unit-assembly-drone-preview" -unit.emanate.uiIcon: "unit-assembly-drone-ui" -unit.emanate.playerControllable: false -unit.emanate.logicControllable: false -unit.emanate.allowedInPayloads: false -unit.emanate.range: 320 -unit.emanate.maxRange: 400 -unit.emanate.faceTarget: false -unit.emanate.fogRadius: 20 -unit.emanate.flyingLayer: -500 -unit.emanate.useUnitCap: false -unit.emanate.health: 350 -unit.emanate.hittable: true -unit.emanate.targetable: true +//disrupt drone(incite) +unit.incite.localizedName: "Disruption drone" +unit.incite.hitSize: 1 +unit.incite.flyingLayer: 85 +unit.incite.region: "unit-assembly-drone-full" +unit.incite.fullIcon: "unit-assembly-drone-preview" +unit.incite.uiIcon: "unit-assembly-drone-ui" +unit.incite.playerControllable: false +unit.incite.logicControllable: false +unit.incite.allowedInPayloads: false +unit.incite.range: 320 +unit.incite.maxRange: 400 +unit.incite.faceTarget: false +unit.incite.fogRadius: 20 +unit.incite.useUnitCap: false +unit.incite.health: 350 +unit.incite.hittable: true +unit.incite.targetable: true //drone timed death -unit.emanate.abilities.+: [ +unit.incite.abilities.+: [ { type: RepairFieldAbility amount: -1 @@ -238,8 +237,7 @@ activeEffect: hitFlameSmall } ] -unit.emanate.weapons: [ -//drone body because you cant edit engines for some reason so they go to -11000 +unit.incite.weapons: [ { x: 0 y: 0 @@ -248,7 +246,7 @@ recoil: 0 recoils: 0 recoilTime: 0 name: "assembly-drone" -layerOffset: 585 +layerOffset: 0 shootSound: spark controllable: false autoTarget: true @@ -265,7 +263,7 @@ pierceArmor: true name: small-mount-weapon x: 0 y: -5 -layerOffset: 585.0001 +layerOffset: 0.0001 type: pointDefenseWeapon reload: 4 targetInterval: 4 @@ -287,7 +285,7 @@ damage: 20 x: 0 y: 0 name: "vanquish-point-weapon" -layerOffset: 585.0001 +layerOffset: 0.0001 controllable: false autoTarget: true recoils: 0 From febbc43cfa4159def4d709588d48261ce0298572 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:22:30 +0300 Subject: [PATCH 009/460] Update rvsb.json --- patches/rvsb.json | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 9d8ae113..3a35a1d0 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,5 +1,28 @@ name: rvsb +// obviate shield +unit.obviate.flyingLayer: 115 +unit.obviate.abilities.+: [ { + type: forceFieldAbility + sides: 4 + radius: 40 + max: 600 + regen: 0.5 + cooldown: 600 +} +] +// flare shield +unit.flare.abilities.+: [ +{ + type: shieldRegenFieldAbility + max: 40 + amount: 10 + reload: 120 + range: 30 +} +] + + //disrupt ability by alphy unit.disrupt.speed: 2 From 6835738ea3b56494f1d5a8be55d49bd0c5cf89d9 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:56:30 +0300 Subject: [PATCH 010/460] Update Evolution.java --- src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index 2731f348..f5122174 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -57,7 +57,7 @@ public enum Evolution { CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "elude", "nova", "flare", "mono" }), SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }), - DISRUPT(UnitTypes.disrupt, 10, 500*multp, new String[] { "nova", "flare", "dagger"}), + DISRUPT(UnitTypes.disrupt, 10, 800*multp, new String[] { "nova", "flare", "dagger"}), OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "elude", "nova", "dagger", "mono" }); From 8e0f57e7e43958d29fdb58220aa4c73e8ebf91a2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:17:35 +0300 Subject: [PATCH 011/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 3a35a1d0..93efd761 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,6 +1,7 @@ name: rvsb // obviate shield +unit.obviate.hitSize: 2.49 unit.obviate.flyingLayer: 115 unit.obviate.abilities.+: [ { type: forceFieldAbility From a7ca3ac93f1753207aa7084764517d45f928a9c7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:18:12 +0300 Subject: [PATCH 012/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 93efd761..51bd10a6 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,7 +1,7 @@ name: rvsb // obviate shield -unit.obviate.hitSize: 2.49 +unit.obviate.hitSize: 24.9 unit.obviate.flyingLayer: 115 unit.obviate.abilities.+: [ { type: forceFieldAbility From a47aba4e67c1fe3291a9ab245721d56a7665ea7c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:06:42 +0300 Subject: [PATCH 013/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index a5803d15..5e366eec 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -459,6 +459,12 @@ public void registerClientCommands(CommandHandler handler) { } }); + + handler.register("pin-map","", "Admin only", (args, player) -> { + if (player.admin) { + MapVote.pinnedMaps.add(args[0]); + } + }); handler.register("gameover", "Only for admins", (args, player) -> { if (player.admin) { From 2265caf832ef98860545b553285c4b25ed91e84d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:10:19 +0300 Subject: [PATCH 014/460] pinned maps command --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index 4c65d99a..1db7adb9 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -19,7 +19,8 @@ public class MapVote { private static final Map playersVotesMap = new HashMap<>(); - private static ArrayList avaibleMapnumbers = new ArrayList(); + private static Seq avaibleMapnumbers = new ArrayList(); + public static Seq pinnedMaps = new Seq(); public static void callMapVoting() { if (!Utils.voting) { @@ -43,7 +44,7 @@ public void run() { int[] mapVotes = getMapVotes(); for (int j = 0; j < getMaps().size; j++) { - if (avaibleMapnumbers.contains(j) || maps.get(j).file.name().startsWith("[blue]")) { + if (avaibleMapnumbers.contains(j) || pinnedMaps.contains(maps.get(j).file.name())) { int mapNumber = j + 1; mapsList.append("\n[lightgray]").append(mapNumber).append(" [gray]| [gold]").append(mapVotes[j]).append(" [gray]| ").append(maps.get(j).file.name().replace(".msav", "")); } @@ -89,7 +90,7 @@ private static int[] getMapVotes() { public static void registerVote(Player player, Integer voteNumber) { if (!playersVotesMap.containsKey(player.uuid())) { - if (avaibleMapnumbers.contains(voteNumber-1) || getMaps().get(voteNumber-1).file.name().startsWith("[blue]")) { + if (avaibleMapnumbers.contains(voteNumber-1) || pinnedMaps.contains(getMaps().get(voteNumber-1).file.name())) { playersVotesMap.put(player.uuid(), voteNumber-1); } } From 6bf5e4f23ec4d5ec966919793fa5cc1bf7dc88bf Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:11:24 +0300 Subject: [PATCH 015/460] Update MapVote.java --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index 1db7adb9..bb94912a 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -19,7 +19,7 @@ public class MapVote { private static final Map playersVotesMap = new HashMap<>(); - private static Seq avaibleMapnumbers = new ArrayList(); + private static Seq avaibleMapnumbers = new Seq(); public static Seq pinnedMaps = new Seq(); public static void callMapVoting() { From b68b41b9aaac5ef91e13e477cdaaf2a48fe24794 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:22:32 +0300 Subject: [PATCH 016/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 5e366eec..16721ffc 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,9 +460,13 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("pin-map","", "Admin only", (args, player) -> { + handler.register("pin-map",", ", "Admin only", (args, player) -> { if (player.admin) { + if (args[1] == "add") { MapVote.pinnedMaps.add(args[0]); + } else if (args[1] == "remove") { + MapVote.pinnedMaps.remove(args[0]); + } } }); From 5a76a65f0a98d213970ff5e17ca820f0412077b8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:24:30 +0300 Subject: [PATCH 017/460] pin map command finish --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index bb94912a..93262188 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -44,9 +44,11 @@ public void run() { int[] mapVotes = getMapVotes(); for (int j = 0; j < getMaps().size; j++) { - if (avaibleMapnumbers.contains(j) || pinnedMaps.contains(maps.get(j).file.name())) { + if (avaibleMapnumbers.contains(j)) { int mapNumber = j + 1; mapsList.append("\n[lightgray]").append(mapNumber).append(" [gray]| [gold]").append(mapVotes[j]).append(" [gray]| ").append(maps.get(j).file.name().replace(".msav", "")); + } else if (pinnedMaps.contains(maps.get(j).file.name())) { + mapsList.append("\n[lightgray]").append(mapNumber).append(" [gray]| [gold]").append(mapVotes[j]).append(" [gray]| ").append("[blue]").append(maps.get(j).file.name().replace(".msav", "")); } } From f9944d78fdb6c8edc109f3a354cc004b35dad768 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:27:54 +0300 Subject: [PATCH 018/460] Update MapVote.java --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index 93262188..c8deea1b 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -48,6 +48,7 @@ public void run() { int mapNumber = j + 1; mapsList.append("\n[lightgray]").append(mapNumber).append(" [gray]| [gold]").append(mapVotes[j]).append(" [gray]| ").append(maps.get(j).file.name().replace(".msav", "")); } else if (pinnedMaps.contains(maps.get(j).file.name())) { + int mapNumber = j + 1; mapsList.append("\n[lightgray]").append(mapNumber).append(" [gray]| [gold]").append(mapVotes[j]).append(" [gray]| ").append("[blue]").append(maps.get(j).file.name().replace(".msav", "")); } } From 2246bd5051b5a61ccfeb5e94b894da9b1e8baebd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:28:09 +0300 Subject: [PATCH 019/460] Update RedVsBluePlugin.java --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 16721ffc..170f7cb6 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -462,10 +462,13 @@ public void registerClientCommands(CommandHandler handler) { handler.register("pin-map",", ", "Admin only", (args, player) -> { if (player.admin) { - if (args[1] == "add") { - MapVote.pinnedMaps.add(args[0]); - } else if (args[1] == "remove") { - MapVote.pinnedMaps.remove(args[0]); + try { + if (args[1] == "add") { + MapVote.pinnedMaps.add(args[0]); + } else if (args[1] == "remove") { + MapVote.pinnedMaps.remove(args[0]); + } + } catch (Exception e) { } } }); From 41bb2096d2923e501153cf163805a3f05e722b9c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:36:57 +0300 Subject: [PATCH 020/460] random map at 0 votes --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index c8deea1b..9067512a 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -76,10 +76,15 @@ private static mindustry.maps.Map getMostVotedMap() { Seq maps = getMaps(); int[] votes = getMapVotes(); int largest = 0; + Random rand = new Random(); for (int i = 0; i < votes.length; i++) { largest = votes[i] > votes[largest] ? i : largest; } + + if (votes[largest] == 0) { + largest == rand.nextInt(getMaps().length()-1); + } return maps.get(largest); From 26475acba38b74209eeb1df4fce02febbbab271f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:37:54 +0300 Subject: [PATCH 021/460] Update MapVote.java --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index 9067512a..cb862a22 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -83,7 +83,7 @@ private static mindustry.maps.Map getMostVotedMap() { } if (votes[largest] == 0) { - largest == rand.nextInt(getMaps().length()-1); + largest = rand.nextInt(getMaps().length()-1); } return maps.get(largest); From ac6ff2904bce76b79827dc1a48c7de9b3a965f1b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:39:07 +0300 Subject: [PATCH 022/460] Update MapVote.java --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index cb862a22..5631c932 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -83,7 +83,7 @@ private static mindustry.maps.Map getMostVotedMap() { } if (votes[largest] == 0) { - largest = rand.nextInt(getMaps().length()-1); + largest = rand.nextInt(getMaps().size()-1); } return maps.get(largest); From 1c19c4a22a1e0041a9adcdac7f7cd8913d5a8aa7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 17:41:28 +0300 Subject: [PATCH 023/460] i am stupid --- src/main/java/net/voiddustry/redvsblue/util/MapVote.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java index 5631c932..506cad9a 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/MapVote.java +++ b/src/main/java/net/voiddustry/redvsblue/util/MapVote.java @@ -83,7 +83,7 @@ private static mindustry.maps.Map getMostVotedMap() { } if (votes[largest] == 0) { - largest = rand.nextInt(getMaps().size()-1); + largest = rand.nextInt(getMaps().size-1); } return maps.get(largest); From 3bbf4048e3d77ee7d109f78c3151b224d073b0de Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:38:48 +0300 Subject: [PATCH 024/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 170f7cb6..df2bacc5 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,7 +460,7 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("pin-map",", ", "Admin only", (args, player) -> { + handler.register("pin-map"," ", "Admin only", (args, player) -> { if (player.admin) { try { if (args[1] == "add") { From bc468e6c0d531ac04f338d3e91552549d6bb2c0c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:47:20 +0300 Subject: [PATCH 025/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index df2bacc5..b9819b9c 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -469,6 +469,7 @@ public void registerClientCommands(CommandHandler handler) { MapVote.pinnedMaps.remove(args[0]); } } catch (Exception e) { + Log.info("Failed to pin/unpin a map" + e) } } }); From 83e7cfc73c13e0e99e97f198f7cd3fd0a89f0c21 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:48:13 +0300 Subject: [PATCH 026/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b9819b9c..268e9535 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -469,7 +469,7 @@ public void registerClientCommands(CommandHandler handler) { MapVote.pinnedMaps.remove(args[0]); } } catch (Exception e) { - Log.info("Failed to pin/unpin a map" + e) + Log.info("Failed to pin/unpin a map" + e); } } }); From ccfe0f55cea8aa72deea14bdade7a312b93a0451 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:49:24 +0300 Subject: [PATCH 027/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 268e9535..a8ecab32 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,7 +460,7 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("pin-map"," ", "Admin only", (args, player) -> { + handler.register("pin-map"," ", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { if (args[1] == "add") { From d6e900d337dfaa0e3cc3e45bc73af1f2887c8d1b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:52:49 +0300 Subject: [PATCH 028/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index a8ecab32..4eebc5ef 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -464,9 +464,9 @@ public void registerClientCommands(CommandHandler handler) { if (player.admin) { try { if (args[1] == "add") { - MapVote.pinnedMaps.add(args[0]); + MapVote.pinnedMaps.add(args[0].trim()); } else if (args[1] == "remove") { - MapVote.pinnedMaps.remove(args[0]); + MapVote.pinnedMaps.remove(args[0].trim()); } } catch (Exception e) { Log.info("Failed to pin/unpin a map" + e); From f1ec44e877ac9ede19423979b451c6bee4a92619 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 19:01:33 +0300 Subject: [PATCH 029/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 4eebc5ef..ebb6bc69 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,13 +460,19 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("pin-map"," ", "[scarlet]Admin only", (args, player) -> { + handler.register("pin-map"," ", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { - if (args[1] == "add") { - MapVote.pinnedMaps.add(args[0].trim()); - } else if (args[1] == "remove") { - MapVote.pinnedMaps.remove(args[0].trim()); + if (args[0] == "add") { + MapVote.pinnedMaps.add(args[1].trim()); + } else if (args[0] == "remove") { + MapVote.pinnedMaps.remove(args[1].trim()); + } else if (args[0] == "list") { + String mapList = ""; + for (String mn : MapVote.pinnedMaps) { + mapList = mapList+"\n"+mn; + } + player.sendMessage(mapList); } } catch (Exception e) { Log.info("Failed to pin/unpin a map" + e); From 36d3b0f5481d52d81d4147d2d304f65b38360de6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 19:02:24 +0300 Subject: [PATCH 030/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ebb6bc69..cf273e8e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -475,7 +475,7 @@ public void registerClientCommands(CommandHandler handler) { player.sendMessage(mapList); } } catch (Exception e) { - Log.info("Failed to pin/unpin a map" + e); + player.sendMessage("Failed to pin/unpin a map" + e); } } }); From 28e1d3941f169b50ac8cfd419a5dc45b2e521242 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 19:11:14 +0300 Subject: [PATCH 031/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index cf273e8e..b2f1c0f6 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,22 +460,36 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("pin-map"," ", "[scarlet]Admin only", (args, player) -> { + handler.register("list-pinned-maps","", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { - if (args[0] == "add") { - MapVote.pinnedMaps.add(args[1].trim()); - } else if (args[0] == "remove") { - MapVote.pinnedMaps.remove(args[1].trim()); - } else if (args[0] == "list") { - String mapList = ""; - for (String mn : MapVote.pinnedMaps) { - mapList = mapList+"\n"+mn; - } - player.sendMessage(mapList); + String mapList = ""; + for (String mn : MapVote.pinnedMaps) { + mapList = mapList+"\n"+mn; } + player.sendMessage(mapList); + } catch (Exception e) { + player.sendMessage("Failed to list pinned maps" + e); + } + } + }); + + handler.register("pin-map","", "[scarlet]Admin only", (args, player) -> { + if (player.admin) { + try { + MapVote.pinnedMaps.add(args[0].trim()); + } catch (Exception e) { + player.sendMessage("Failed to pin a map" + e); + } + } + }); + + handler.register("unpin-map","", "[scarlet]Admin only", (args, player) -> { + if (player.admin) { + try { + MapVote.pinnedMaps.remove(args[1].trim()); } catch (Exception e) { - player.sendMessage("Failed to pin/unpin a map" + e); + player.sendMessage("Failed to unpin a map" + e); } } }); From b40b4a011eba4fcfcbd6524914a679c64c4582bb Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 19:13:36 +0300 Subject: [PATCH 032/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b2f1c0f6..378710dc 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -460,7 +460,7 @@ public void registerClientCommands(CommandHandler handler) { }); - handler.register("list-pinned-maps","", "[scarlet]Admin only", (args, player) -> { + handler.register("list-pinned-maps", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { String mapList = ""; From 42165ef835c51e240f54d4451cafba27fe831871 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 22:02:07 +0300 Subject: [PATCH 033/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 378710dc..3d7efaba 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -484,12 +484,12 @@ public void registerClientCommands(CommandHandler handler) { } }); - handler.register("unpin-map","", "[scarlet]Admin only", (args, player) -> { + handler.register("clear-pinned-maps", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { - MapVote.pinnedMaps.remove(args[1].trim()); + MapVote.pinnedMaps.clear() } catch (Exception e) { - player.sendMessage("Failed to unpin a map" + e); + player.sendMessage("Failed to clear pinned maps" + e); } } }); From d17e1d4444e2d3529868bb76d50b74ad116f460b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 13 Dec 2025 22:03:12 +0300 Subject: [PATCH 034/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 3d7efaba..7bc4d4b1 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -487,7 +487,7 @@ public void registerClientCommands(CommandHandler handler) { handler.register("clear-pinned-maps", "[scarlet]Admin only", (args, player) -> { if (player.admin) { try { - MapVote.pinnedMaps.clear() + MapVote.pinnedMaps.clear(); } catch (Exception e) { player.sendMessage("Failed to clear pinned maps" + e); } From 30a456a41f58d42a3801d473190f490e47d13c2d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 15 Dec 2025 18:51:51 +0300 Subject: [PATCH 035/460] fuck miners --- src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index ab199822..3395010d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -44,7 +44,7 @@ public static void initTimer() { } public static void buyMiner(Player player) { - if (players.get(player.uuid()).getScore() < 20) { + if ((!(players.get(player.uuid()) == null)) && players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", 20)); } else { if (!minersMap.containsKey(player.uuid())) { From b92d9d63433744b2f3d4e829ef402b663742e477 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:50:13 +0300 Subject: [PATCH 036/460] what the fuck --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 7bc4d4b1..c7a217af 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -143,7 +143,7 @@ public void init() { }); Events.on(EventType.PlayerChatEvent.class, event -> { - Call.sound(Sounds.chatMessage, 2, 2, 1); + Call.sound(Sounds.uiChat, 2, 2, 1); if (Utils.voting) { if (Strings.canParseInt(event.message)) { MapVote.registerVote(event.player, Strings.parseInt(event.message)); From 82789a5127415044fa55a9d7cf8b78943ab374e4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:52:18 +0300 Subject: [PATCH 037/460] fucking mingameversion --- src/main/resources/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.json b/src/main/resources/plugin.json index 7971c5e6..0a376970 100644 --- a/src/main/resources/plugin.json +++ b/src/main/resources/plugin.json @@ -7,5 +7,5 @@ "hidden": false, "java": true, "version": "3.08", - "minGameVersion": 153 + "minGameVersion": 154.2 } From e9e8306c9683e5b8704e8331e8e0fdee21d38203 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:05:13 +0300 Subject: [PATCH 038/460] Update rvsb.json --- patches/rvsb.json | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 51bd10a6..c49be97a 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -232,7 +232,7 @@ spawnUnit: incite //disrupt drone(incite) unit.incite.localizedName: "Disruption drone" -unit.incite.hitSize: 1 +unit.incite.hitSize: 9 unit.incite.flyingLayer: 85 unit.incite.region: "unit-assembly-drone-full" unit.incite.fullIcon: "unit-assembly-drone-preview" @@ -245,10 +245,11 @@ unit.incite.maxRange: 400 unit.incite.faceTarget: false unit.incite.fogRadius: 20 unit.incite.useUnitCap: false -unit.incite.health: 350 +unit.incite.health: 100 unit.incite.hittable: true unit.incite.targetable: true + //drone timed death unit.incite.abilities.+: [ { @@ -282,6 +283,19 @@ pierceArmor: true } } +//invulnerability +{ + alwaysShooting: true + reload: 99999999999999 + shootStatus: invincible + shootStatusDuration: 2400 + bullet: { + type: lightningBulletType + lightningLength: 1 + damage: 0 + } +} + // parallax with very low reload and range { name: small-mount-weapon @@ -315,7 +329,7 @@ autoTarget: true recoils: 0 recoil: 5 recoilTime: 120 -reload: 600 +reload: 1200 shootSound: malignShoot rotate: true alwaysShooting: true @@ -353,7 +367,7 @@ y: 0 shootSound: unlock rotate: true alwaysShooting: true -reload: 600 +reload: 1200 shoot: { firstShotDelay: 70 } @@ -375,7 +389,7 @@ y: 0 shootSound: unlock rotate: true alwaysShooting: true -reload: 600 +reload: 1200 shoot: { firstShotDelay: 30 } From 37359a202b09d021bc0bab8b65e79a7449590b30 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:27:14 +0300 Subject: [PATCH 039/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index c49be97a..cee43d66 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -245,7 +245,7 @@ unit.incite.maxRange: 400 unit.incite.faceTarget: false unit.incite.fogRadius: 20 unit.incite.useUnitCap: false -unit.incite.health: 100 +unit.incite.health: 60 unit.incite.hittable: true unit.incite.targetable: true From 8947943063eea8fd0017abe0da08b06746442ff8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:47:50 +0300 Subject: [PATCH 040/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index cee43d66..2f415a5b 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,7 +1,7 @@ name: rvsb // obviate shield -unit.obviate.hitSize: 24.9 +unit.obviate.hitSize: 19.9 unit.obviate.flyingLayer: 115 unit.obviate.abilities.+: [ { type: forceFieldAbility @@ -256,7 +256,7 @@ unit.incite.abilities.+: [ type: RepairFieldAbility amount: -1 reload: 60 -range: 1 +range: 0.1 healEffect: hitFlameSmall activeEffect: hitFlameSmall } From 19615c94084855da5a8035769345a0b7606978d1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:51:38 +0300 Subject: [PATCH 041/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 2f415a5b..5fa587ec 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -288,7 +288,7 @@ pierceArmor: true alwaysShooting: true reload: 99999999999999 shootStatus: invincible - shootStatusDuration: 2400 + shootStatusDuration: 1800 bullet: { type: lightningBulletType lightningLength: 1 From b48d5e7c941d10db0e5a34069e89474869be7375 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:57:13 +0300 Subject: [PATCH 042/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 5fa587ec..bb0be224 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -780,6 +780,7 @@ unit.mega.weapons.2.bullet.damage: 30 unit.mega.weapons.3.bullet.damage: 30 //blocks +block.launch-pad.itemCapacity: 50000 block.combustion-generator.health: 320 block.mender.health: 120 From 1f596552fcc411b7dd0ee87e1b024b77778c4dfc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 17:01:51 +0300 Subject: [PATCH 043/460] Update rvsb.json From 005330692d1f4b84c89afcb78c0c88edc9448ce3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 29 Dec 2025 17:06:55 +0300 Subject: [PATCH 044/460] Update rvsb.json --- patches/rvsb.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index bb0be224..d7ac362c 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -2,16 +2,16 @@ name: rvsb // obviate shield unit.obviate.hitSize: 19.9 -unit.obviate.flyingLayer: 115 -unit.obviate.abilities.+: [ { - type: forceFieldAbility - sides: 4 - radius: 40 - max: 600 - regen: 0.5 - cooldown: 600 -} -] +//unit.obviate.flyingLayer: 115 +//unit.obviate.abilities.+: [ { + //type: forceFieldAbility + //sides: 4 + //radius: 40 + //max: 600 + //regen: 0.5 + //cooldown: 600 +//} +//] // flare shield unit.flare.abilities.+: [ { From 75ac759e8e6dcc0e2eece6b82defeeba422e347e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 16:59:06 +0300 Subject: [PATCH 045/460] dont recycle ability items --- .../redvsblue/game/stations/Recycler.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index 0b1452e4..ce31f717 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -15,6 +15,8 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import mindustry.content.Items; + import static net.voiddustry.redvsblue.RedVsBluePlugin.players; public class Recycler { @@ -36,11 +38,13 @@ public static void initTimer() { if (p.team() == Team.blue && p.unit() != null) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { - int add = p.unit().stack.amount/20; - Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); - p.unit().stack.amount -= add * 20; - - players.get(p.uuid()).addScore(add); + if (!((p.unit.stack.item == Items.plastanium) || (p.unit.stack.item == Items.sporePod) || (p.unit.stack.item == Items.surgeAlloy) || (p.unit.stack.item == Items.carbide))) { + int add = p.unit().stack.amount/20; + Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); + p.unit().stack.amount -= add * 20; + + players.get(p.uuid()).addScore(add); + } } } } From e402a5bb3a6ef186cdf5b19bbc60af9c1a9baaed Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 17:00:21 +0300 Subject: [PATCH 046/460] Update Recycler.java --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index ce31f717..b3d7068e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -38,7 +38,7 @@ public static void initTimer() { if (p.team() == Team.blue && p.unit() != null) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { - if (!((p.unit.stack.item == Items.plastanium) || (p.unit.stack.item == Items.sporePod) || (p.unit.stack.item == Items.surgeAlloy) || (p.unit.stack.item == Items.carbide))) { + if (!((p.unit().stack.item == Items.plastanium) || (p.unit().stack.item == Items.sporePod) || (p.unit().stack.item == Items.surgeAlloy) || (p.unit().stack.item == Items.carbide))) { int add = p.unit().stack.amount/20; Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); p.unit().stack.amount -= add * 20; From d428e76d52f891d8f9bb559191aa82249ecae7be Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 17:11:24 +0300 Subject: [PATCH 047/460] Update RedVsBluePlugin.java From 109018fe259614698f93ff2339be20e2e4a38d27 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 20:56:40 +0300 Subject: [PATCH 048/460] crux crawler buff 1 --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c7a217af..4139ee74 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -13,6 +13,7 @@ import mindustry.content.Fx; import mindustry.content.StatusEffects; import mindustry.content.UnitTypes; +import mindustry.type.*; import mindustry.game.EventType; import mindustry.game.Team; import mindustry.gen.*; @@ -155,6 +156,12 @@ public void init() { HashMap spawnedUnitOwnership = new HashMap<>(); HashMap killCredit = new HashMap<>(); + //situations where kills should not be registered + noRegisterKills = new StatusEffect("noRegisterKills") {{ + show = false; + }} + + Events.on(EventType.UnitDamageEvent.class, event -> { if (event.unit != null && event.bullet.owner() instanceof Unit damager) { if ((damager.isPlayer() || (spawnedUnitOwnership.get(damager) != null && spawnedUnitOwnership.get(damager).isPlayer())) && damager.team == Team.blue) { From 38e12474ef63a8c86ec5b3b75274b480e4940e62 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 20:58:18 +0300 Subject: [PATCH 049/460] Update rvsb.json --- patches/rvsb.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index d7ac362c..f5a608fe 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -752,6 +752,10 @@ ammoMultiplier: 2 } } +//dont register crawlers that manually explode +unit.crawler.shootStatus: noRegisterKills +unit.crawler.shootStatusDuration: 1000 + //update unit and block stats // Health From db44b49334480fed6b10eff2fa654c01412154e3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:11:28 +0300 Subject: [PATCH 050/460] Update RedVsBluePlugin.java --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 4139ee74..3171a3cf 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -159,7 +159,7 @@ public void init() { //situations where kills should not be registered noRegisterKills = new StatusEffect("noRegisterKills") {{ show = false; - }} + }}; Events.on(EventType.UnitDamageEvent.class, event -> { @@ -181,6 +181,11 @@ public void init() { //blue kill registration Events.on(EventType.UnitDestroyEvent.class, event -> { + + if (event.unit.hasEffect("noRegisterKills")) { + break; + } + Player killerPlayer = killCredit.get(event.unit); killCredit.remove(event.unit); From 35a130b5d5be7466e52f103410f66c1e3c2b23be Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:13:30 +0300 Subject: [PATCH 051/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 3171a3cf..ea20c75b 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -182,31 +182,29 @@ public void init() { //blue kill registration Events.on(EventType.UnitDestroyEvent.class, event -> { - if (event.unit.hasEffect("noRegisterKills")) { - break; - } - - Player killerPlayer = killCredit.get(event.unit); - killCredit.remove(event.unit); - - if (killerPlayer == null) { - float minDist = 69420; - for (Player p : Groups.player) { - if (((!(p.unit() == null)) && event.unit.dst(p) Date: Wed, 31 Dec 2025 21:15:24 +0300 Subject: [PATCH 052/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ea20c75b..397929af 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -157,7 +157,7 @@ public void init() { HashMap killCredit = new HashMap<>(); //situations where kills should not be registered - noRegisterKills = new StatusEffect("noRegisterKills") {{ + noRegisterKills = new StatusEffect(Vars.content.statusEffect"noRegisterKills") {{ show = false; }}; From 566aa22358f2a40fd1eb1dfc9c31d3c886937208 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:16:53 +0300 Subject: [PATCH 053/460] crux crawler buff 2 --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 397929af..5e9afcba 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -157,7 +157,7 @@ public void init() { HashMap killCredit = new HashMap<>(); //situations where kills should not be registered - noRegisterKills = new StatusEffect(Vars.content.statusEffect"noRegisterKills") {{ + noRegisterKills = new StatusEffect("noRegisterKills") {{ show = false; }}; @@ -182,7 +182,7 @@ public void init() { //blue kill registration Events.on(EventType.UnitDestroyEvent.class, event -> { - if (!(event.unit.hasEffect("noRegisterKills"))) { + if (!(event.unit.hasEffect(Vars.content.statusEffect("noRegisterKills")))) { Player killerPlayer = killCredit.get(event.unit); killCredit.remove(event.unit); From ad06365fe68cde449237bbda288eccec369eea08 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:19:49 +0300 Subject: [PATCH 054/460] no recycle ability items 2 --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index b3d7068e..9c7cbd90 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -16,6 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; import mindustry.content.Items; +import mindustry.content.UnitTypes; import static net.voiddustry.redvsblue.RedVsBluePlugin.players; @@ -38,7 +39,7 @@ public static void initTimer() { if (p.team() == Team.blue && p.unit() != null) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { - if (!((p.unit().stack.item == Items.plastanium) || (p.unit().stack.item == Items.sporePod) || (p.unit().stack.item == Items.surgeAlloy) || (p.unit().stack.item == Items.carbide))) { + if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { int add = p.unit().stack.amount/20; Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); p.unit().stack.amount -= add * 20; From 35725663f1e8da9314b1fd92e954cdeada2752b6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:20:51 +0300 Subject: [PATCH 055/460] eeeeeeeeeeeeeeeeeeeee --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 5e9afcba..2764571a 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -157,7 +157,7 @@ public void init() { HashMap killCredit = new HashMap<>(); //situations where kills should not be registered - noRegisterKills = new StatusEffect("noRegisterKills") {{ + StatusEffect noRegisterKills = new StatusEffect("noRegisterKills") {{ show = false; }}; From 856ae8e4670385920113a7675f094eb8de6ac1ca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:24:08 +0300 Subject: [PATCH 056/460] crawling --- patches/rvsb.json | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index f5a608fe..28bbd2a4 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -31,7 +31,7 @@ unit.disrupt.speed: 2 //disrupt ability "wings" unit.disrupt.weapons.+: [ { alwaysShooting: true -minShootVelocity: 3.6 +minShootVelocity: 28.8 x: 0 y: 0 name: small-mount-weapon @@ -41,7 +41,7 @@ recoilTime: 0 reload: 10 shake: 3.5f inaccuracy: 360 -shootSound: flux +shootSound: loopFlux bullet: { type: lightningBulletType lightningLength: 1 @@ -129,9 +129,9 @@ heatColor: fc4e03 //disrupt ability additional sfx { alwaysShooting: true -minShootVelocity: 3.6 +minShootVelocity: 28.8 reload: 20 -shootSound: spellLoop +shootSound: loopMalign bullet: { lifetime: 0 speed: 0 @@ -144,13 +144,13 @@ shake: 7 alwaysShooting: true x: 0 y: 0 -minShootVelocity: 3.6 +minShootVelocity: 28.8 reload: 540 shoot: { firstShotDelay: 60 } shootSound: none -chargeSound: lasercharge2 +chargeSound: chargeVela bullet: { splashDamagePierce: true despawnHit: true @@ -180,8 +180,8 @@ lifetime: 25f fragBullets: 5 fragRandomSpread: 360f fragVelocityMin: 0.3f -hitSound: plasmaboom -despawnSound: plasmaboom +hitSound: explosionQuad +despawnSound: explosionQuad hitEffect: { lifetime: 90f type: explosionEffect @@ -229,7 +229,6 @@ spawnUnit: incite ] - //disrupt drone(incite) unit.incite.localizedName: "Disruption drone" unit.incite.hitSize: 9 @@ -272,7 +271,7 @@ recoils: 0 recoilTime: 0 name: "assembly-drone" layerOffset: 0 -shootSound: spark +shootSound: shootArc controllable: false autoTarget: true bullet: { @@ -309,7 +308,7 @@ targetSwitchInterval: 4 recoil: 0 recoils: 0 recoilTime: 0 -shootSound: lasershoot +shootSound: shootLaser bullet: { shootEffect: sparkShoot hitEffect: pointHit @@ -330,7 +329,7 @@ recoils: 0 recoil: 5 recoilTime: 120 reload: 1200 -shootSound: malignShoot +shootSound: shootMalign rotate: true alwaysShooting: true shoot: { @@ -364,7 +363,7 @@ controllable: false autoTarget: true x: 0 y: 0 -shootSound: unlock +shootSound: uiUnlock rotate: true alwaysShooting: true reload: 1200 @@ -386,7 +385,7 @@ controllable: false autoTarget: true x: 0 y: 0 -shootSound: unlock +shootSound: uiUnlock rotate: true alwaysShooting: true reload: 1200 @@ -409,7 +408,7 @@ shoot: { shots: 3 shotDelay: 1 } -shootSound: spark +shootSound: shootArc inaccuracy: 360f rotate: false x: 0 @@ -436,7 +435,7 @@ shoot: { shots: 10 shotDelay: 6 } -shootSound: spark +shootSound: shootArc reload: 270 alwaysShooting: true inaccuracy: 360f @@ -489,7 +488,7 @@ unit.disrupt-missile.weapons: [ shootCone: 360f mirror: false reload: 3f - shootSound: flame + shootSound: shootFlame shootStatusDuration: 2 shootStatus: slow shootOnDeath: true @@ -564,7 +563,7 @@ unit.quell-missile.weapons: [ shootCone: 360f mirror: false reload: 3f - shootSound: flame + shootSound: shootFlame shootStatusDuration: 2 shootStatus: slow shootOnDeath: true @@ -635,14 +634,14 @@ unit.anthicus.weapons: [ x: 0 y: 0 shootY: 11.75f - shootSound: torch + shootSound: shootSublimate bullet: { status: freezing range: 350 maxRange: 350 type: railBulletType pierceCap: 1 - damage: 1.6 + damage: 0 length: 340 pierceDamageFactor: 0.1 pointEffect: railTrail @@ -670,14 +669,14 @@ unit.anthicus.weapons: [ x: 0 y: 0 shootY: 11.75f - shootSound: spellLoop + shootSound: loopMalign bullet: { range: 350 maxRange: 350 type: continuousFlameBulletType flareColor: 89cffa pierceCap: 1 - damage: 0 + damage: 1.6 length: 350 pierceDamageFactor: 0.1 width: 4f @@ -698,7 +697,7 @@ unit.anthicus.weapons: [ recoil: 2f recoils: 1 recoilTime: 120f - shootSound: beam + shootSound: beamMeltdown bullet: { range: 350 maxRange: 350 @@ -722,7 +721,7 @@ name: "retusa-weapon" x: 0 y: -2f rotate: true -shootSound: lasershoot +shootSound: shootLaser reload: 125f cooldownTime: 40f useAttackRange: true From da1b4f497671ad19ef5c3682491fd595b5e5c6ed Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:25:56 +0300 Subject: [PATCH 057/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 28bbd2a4..c4962343 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -752,8 +752,8 @@ ammoMultiplier: 2 } //dont register crawlers that manually explode -unit.crawler.shootStatus: noRegisterKills -unit.crawler.shootStatusDuration: 1000 +unit.crawler.weapons.0.shootStatus: noRegisterKills +unit.crawler.weapons.0.shootStatusDuration: 1000 //update unit and block stats // Health From 8651139cd81213a12378a28ea5ab36f6c3571aac Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 11:50:54 +0300 Subject: [PATCH 058/460] Add files via upload From f1db2838f1fd49c430ad3186760fa03e43cb6942 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 15:07:16 +0300 Subject: [PATCH 059/460] fuck anuke why triple disrupt damage for no reason --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index c4962343..11cb9377 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -503,7 +503,7 @@ unit.disrupt-missile.weapons: [ suppressionRange: 140f width: 49.6f height: 49.6f - damage: 100f + damage: 33f pierce: true shootEffect: { type: ExplosionEffect @@ -578,7 +578,7 @@ unit.quell-missile.weapons: [ suppressionRange: 140f width: 49.6f height: 49.6f - damage: 145f + damage: 45f pierce: true shootEffect: { type: ExplosionEffect From b3aa113ce3dd9ce9adbd435f398fc4b4ffd1bef6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 15:21:11 +0300 Subject: [PATCH 060/460] Update rvsb.json --- patches/rvsb.json | 674 +++++++++++++++++++++++----------------------- 1 file changed, 337 insertions(+), 337 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 11cb9377..5e3e7f71 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -29,204 +29,204 @@ unit.flare.abilities.+: [ unit.disrupt.speed: 2 //disrupt ability "wings" -unit.disrupt.weapons.+: [ { -alwaysShooting: true -minShootVelocity: 28.8 -x: 0 -y: 0 -name: small-mount-weapon -recoil: 0 -recoils: 0 -recoilTime: 0 -reload: 10 -shake: 3.5f -inaccuracy: 360 -shootSound: loopFlux -bullet: { -type: lightningBulletType -lightningLength: 1 -lightningLengthRand: 15 -damage: 100 -} -parts: [ { -name: obviate -rotation: -85 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: 14 -y: 4 -xScl: 0.4 -yScl: 2.5 -heatColor: fc4e03 -} -{ -name: obviate -rotation: -90 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: 16 -y: -4 -xScl: 0.6 -yScl: 3.4 -heatColor: fc4e03 +//unit.disrupt.weapons.+: [ { +//alwaysShooting: true +//minShootVelocity: 28.8 +//x: 0 +//y: 0 +//name: small-mount-weapon +//recoil: 0 +//recoils: 0 +//recoilTime: 0 +//reload: 10 +//shake: 3.5f +//inaccuracy: 360 +//shootSound: loopFlux +//bullet: { +//type: lightningBulletType +//lightningLength: 1 +//lightningLengthRand: 15 +//damage: 100 +//} +//parts: [ { +//name: obviate +//rotation: -85 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: 14 +//y: 4 +//xScl: 0.4 +//yScl: 2.5 +//heatColor: fc4e03 } { -name: obviate -rotation: -103 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: 18 -y: -12 -xScl: 0.8 -yScl: 4.5 -heatColor: fc4e03 -} +//name: obviate +//rotation: -90 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: 16 +//y: -4 +//xScl: 0.6 +//yScl: 3.4 +//heatColor: fc4e03 +//} +//{ +//name: obviate +//rotation: -103 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: 18 +//y: -12 +//xScl: 0.8 +//yScl: 4.5 +//heatColor: fc4e03 +//} //mirror parts -{ -name: obviate -rotation: 85 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: -14 -y: 4 -xScl: 0.4 -yScl: 2.5 -heatColor: fc4e03 -} -{ -name: obviate -rotation: 90 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: -16 -y: -4 -xScl: 0.6 -yScl: 3.4 -heatColor: fc4e03 -} -{ -name: obviate -rotation: 103 -type: regionPart -layerOffset: -11000f -heatLayerOffset: 10999.5f -x: -18 -y: -12 -xScl: 0.8 -yScl: 4.5 -heatColor: fc4e03 -} +//{ +//name: obviate +//rotation: 85 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: -14 +//y: 4 +//xScl: 0.4 +//yScl: 2.5 +//heatColor: fc4e03 +//} +//{ +//name: obviate +//rotation: 90 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: -16 +//y: -4 +//xScl: 0.6 +//yScl: 3.4 +//heatColor: fc4e03 +//} +//{ +//name: obviate +//rotation: 103 +//type: regionPart +//layerOffset: -11000f +//heatLayerOffset: 10999.5f +//x: -18 +//y: -12 +//xScl: 0.8 +//yScl: 4.5 +//heatColor: fc4e03 +//} -] -} +//] +//} //disrupt ability additional sfx -{ -alwaysShooting: true -minShootVelocity: 28.8 -reload: 20 -shootSound: loopMalign -bullet: { -lifetime: 0 -speed: 0 -} -} +//{ +//alwaysShooting: true +//minShootVelocity: 28.8 +//reload: 20 +//shootSound: loopMalign +//bullet: { +//lifetime: 0 +//speed: 0 +//} +//} // disrupt ability bombs -{ -shake: 7 -alwaysShooting: true -x: 0 -y: 0 -minShootVelocity: 28.8 -reload: 540 -shoot: { -firstShotDelay: 60 -} -shootSound: none -chargeSound: chargeVela -bullet: { -splashDamagePierce: true -despawnHit: true -type: missileBulletType -splashDamageRadius: 80f -splashDamage: 900 -weaveScale: 8 -weaveMag: 1 -trailColor: 760ee6 -trailWidth: 5f -trailLength: 10 -sprite: missile-large -width: 30f -height: 30f -shrinkY: -0.5f -shrinkY: -0.5f -drag: 0f -homingPower: 0 -keepVelocity: false -speed: 3 -lightRadius: 180f -lightOpacity: 0.7f -lightColor: 760ee6 -backColor: 760ee6 -frontColor: ffffff -lifetime: 25f -fragBullets: 5 -fragRandomSpread: 360f -fragVelocityMin: 0.3f -hitSound: explosionQuad -despawnSound: explosionQuad -hitEffect: { -lifetime: 90f -type: explosionEffect -waveStroke: 6 -waveLife: 10f -waveRadBase: 7f -waveColor: 760ee6 -waveRad: 120f -smokes: 18 -smokeColor: ffffff -sparkColor: 760ee6 -sparks: 18 -sparkRad: 120f -sparkStroke: 1.5f -sparkLen: 4f -} -fragBullet: { -velocityScaleRandMin: 0.3 -velocityScaleRandMax: 1 -despawnHit: true -type: missileBulletType -despawnEffect: none -homingPower: 0f -width: 12 -height: 22 -hitSize: 0 -damage: 0 -lifetime: 60 -backColor: 760ee6 -trailColor: 760ee6 -trailWidth: 3 -trailLength: 12 -despawnEffect: hitBulletColor -hitEffect: hitBulletColor -keepVelocity: false -fragBullets: 1 -fragBullet: { -speed: 0f -keepVelocity: false -spawnUnit: incite -} -} -} -} -] +//{ +//shake: 7 +//alwaysShooting: true +//x: 0 +//y: 0 +//minShootVelocity: 28.8 +//reload: 540 +//shoot: { +//firstShotDelay: 60 +//} +//shootSound: none +//chargeSound: chargeVela +//bullet: { +//splashDamagePierce: true +//despawnHit: true +//type: missileBulletType +//splashDamageRadius: 80f +//splashDamage: 900 +//weaveScale: 8 +//weaveMag: 1 +//trailColor: 760ee6 +//trailWidth: 5f +//trailLength: 10 +//sprite: missile-large +//width: 30f +//height: 30f +//shrinkY: -0.5f +//shrinkY: -0.5f +//drag: 0f +//homingPower: 0 +//keepVelocity: false +//speed: 3 +//lightRadius: 180f +//lightOpacity: 0.7f +//lightColor: 760ee6 +//backColor: 760ee6 +//frontColor: ffffff +//lifetime: 25f +//fragBullets: 5 +//fragRandomSpread: 360f +//fragVelocityMin: 0.3f +//hitSound: explosionQuad +//despawnSound: explosionQuad +//hitEffect: { +//lifetime: 90f +//type: explosionEffect +//waveStroke: 6 +//waveLife: 10f +//waveRadBase: 7f +//waveColor: 760ee6 +//waveRad: 120f +//smokes: 18 +//smokeColor: ffffff +//sparkColor: 760ee6 +//sparks: 18 +//sparkRad: 120f +//sparkStroke: 1.5f +//sparkLen: 4f +//} +//fragBullet: { +//velocityScaleRandMin: 0.3 +//velocityScaleRandMax: 1 +//despawnHit: true +//type: missileBulletType +//despawnEffect: none +//homingPower: 0f +//width: 12 +//height: 22 +//hitSize: 0 +//damage: 0 +//lifetime: 60 +//backColor: 760ee6 +//trailColor: 760ee6 +//trailWidth: 3 +//trailLength: 12 +//despawnEffect: hitBulletColor +//hitEffect: hitBulletColor +//keepVelocity: false +//fragBullets: 1 +//fragBullet: { +//speed: 0f +//keepVelocity: false +//spawnUnit: incite +//} +//} +//} +//} +//] //disrupt drone(incite) @@ -451,155 +451,155 @@ damage: 10 //quell and disrupt missile change for kill reward to work,yeah they pierce now,quell missile is same as disrupt except a bit more damage -unit.disrupt-missile.range: 23 -unit.disrupt-missile.maxRange: 23 -unit.disrupt.targetAir: true -unit.disrupt-missile.targetAir: true -unit.disrupt.weapons.0.bullet.collidesAir: true -unit.disrupt-missile.health: 99999 -unit.disrupt-missile.weapons: [ - { - shootSound: none - shootStatusDuration: 2 - shootStatus: freezing - shootCone: 360f - bullet: { - range: 13 - maxRange: 13 - lifetime: 1f - type: basicBulletType - damage: 0 - } - } - { - shootSound: none - shootStatusDuration: 2 - shootStatus: tarred - shootCone: 360f - bullet: { - range: 13 - maxRange: 13 - lifetime: 1f - type: basicBulletType - damage: 0 - } - } - { - shootCone: 360f - mirror: false - reload: 3f - shootSound: shootFlame - shootStatusDuration: 2 - shootStatus: slow - shootOnDeath: true - bullet: { - range: 13 - maxRange: 13 - type: basicBulletType - lightning: 1 - sprite: "" - lifetime: 1f - collidesAir: true - suppressionRange: 140f - width: 49.6f - height: 49.6f - damage: 33f - pierce: true - shootEffect: { - type: ExplosionEffect - lifetime: 50f - waveStroke: 5f - waveLife: 8f - waveColor: ffffff - sparkColor: 665c9f - smokeColor: 665c9f - waveRad: 40f - smokeSize: 4f - smokes: 7 - smokeSizeBase: 0f - sparks: 10 - sparkRad: 40f - sparkLen: 6f - sparkStroke: 2f - } - } -} -] +//unit.disrupt-missile.range: 23 +//unit.disrupt-missile.maxRange: 23 +//unit.disrupt.targetAir: true +//unit.disrupt-missile.targetAir: true +//unit.disrupt.weapons.0.bullet.collidesAir: true +//unit.disrupt-missile.health: 99999 +//unit.disrupt-missile.weapons: [ + // { +// shootSound: none +// shootStatusDuration: 2 +// shootStatus: freezing +// shootCone: 360f +// bullet: { +// range: 13 +// maxRange: 13 +// lifetime: 1f +// type: basicBulletType +// damage: 0 +// } +// } +// { +// shootSound: none +// shootStatusDuration: 2 + // shootStatus: tarred + // shootCone: 360f +// bullet: { +// range: 13 +// maxRange: 13 + // lifetime: 1f + // type: basicBulletType + // damage: 0 + // } +// } +// { +// shootCone: 360f +// mirror: false +// reload: 3f +// shootSound: shootFlame +// shootStatusDuration: 2 +// shootStatus: slow +// shootOnDeath: true +// bullet: { + // range: 13 + // maxRange: 13 +// type: basicBulletType + // lightning: 1 + // sprite: "" +// lifetime: 1f +// collidesAir: true +// suppressionRange: 140f +// width: 49.6f +// height: 49.6f +// damage: 33f + // pierce: true + // shootEffect: { + // type: ExplosionEffect + // lifetime: 50f + // waveStroke: 5f + // waveLife: 8f + // waveColor: ffffff + // sparkColor: 665c9f + // smokeColor: 665c9f + // waveRad: 40f + // smokeSize: 4f + // smokes: 7 + // smokeSizeBase: 0f + // sparks: 10 +// sparkRad: 40f + // sparkLen: 6f + // sparkStroke: 2f + // } +// } +//} +//] -unit.quell-missile.range: 40 -unit.quell-missile.maxRange: 40 -unit.quell.targetAir: true -unit.quell-missile.targetAir: true -unit.quell.weapons.0.bullet.collidesAir: true -unit.quell-missile.health: 99999 -unit.quell-missile.weapons: [ - { - shootSound: none - shootStatusDuration: 2 - shootStatus: freezing - shootCone: 360f - bullet: { - range: 13 - maxRange: 13 - lifetime: 1f - type: basicBulletType - damage: 0 - } - } - { - shootSound: none - shootStatusDuration: 2 - shootStatus: tarred - shootCone: 360f - bullet: { - range: 13 - maxRange: 13 - lifetime: 1f - type: basicBulletType - damage: 0 - } - } - { - shootCone: 360f - mirror: false - reload: 3f - shootSound: shootFlame - shootStatusDuration: 2 - shootStatus: slow - shootOnDeath: true - bullet: { - range: 13 - maxRange: 13 - type: basicBulletType - lightning: 1 - sprite: "" - lifetime: 1f - collidesAir: true - suppressionRange: 140f - width: 49.6f - height: 49.6f - damage: 45f - pierce: true - shootEffect: { - type: ExplosionEffect - lifetime: 90f - waveStroke: 5f - waveLife: 8f - waveColor: ffffff - sparkColor: 665c9f - smokeColor: 665c9f - waveRad: 40f - smokeSize: 4f - smokes: 7 - smokeSizeBase: 0f - sparks: 10 - sparkRad: 40f - sparkLen: 6f - sparkStroke: 2f - } - } -} -] +//unit.quell-missile.range: 40 +//unit.quell-missile.maxRange: 40 +//unit.quell.targetAir: true +//unit.quell-missile.targetAir: true +//unit.quell.weapons.0.bullet.collidesAir: true +//unit.quell-missile.health: 99999 +//unit.quell-missile.weapons: [ +// { + // shootSound: none +// shootStatusDuration: 2 +// shootStatus: freezing +// shootCone: 360f + // bullet: { +// range: 13 +// maxRange: 13 + // lifetime: 1f + // type: basicBulletType + // damage: 0 + // } +// } +// { +// shootSound: none +// shootStatusDuration: 2 +// shootStatus: tarred +// shootCone: 360f +// bullet: { +// range: 13 +// maxRange: 13 +// lifetime: 1f +// type: basicBulletType +// damage: 0 +// } +// } +// { +// shootCone: 360f +// mirror: false +// reload: 3f +// shootSound: shootFlame +// shootStatusDuration: 2 +// shootStatus: slow +// shootOnDeath: true +// bullet: { +// range: 13 +// maxRange: 13 +// type: basicBulletType +// lightning: 1 +// sprite: "" +// lifetime: 1f +// collidesAir: true +// suppressionRange: 140f +// width: 49.6f +// height: 49.6f +// damage: 45f +// pierce: true +// shootEffect: { +// type: ExplosionEffect +// lifetime: 90f +// waveStroke: 5f +// waveLife: 8f +// waveColor: ffffff +// sparkColor: 665c9f +// smokeColor: 665c9f +// waveRad: 40f +// smokeSize: 4f +// smokes: 7 +// smokeSizeBase: 0f +// sparks: 10 +// sparkRad: 40f +// sparkLen: 6f +// sparkStroke: 2f +// } +// } +//} +//] From be028a2a8bd102b5fa12a212afc0c63e63a462a5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 15:25:09 +0300 Subject: [PATCH 061/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 5e3e7f71..f7ff6b91 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -59,8 +59,8 @@ unit.disrupt.speed: 2 //xScl: 0.4 //yScl: 2.5 //heatColor: fc4e03 -} -{ +//} +//{ //name: obviate //rotation: -90 //type: regionPart From 56aaf54e03553636cad77da4eb80560f78f4a0f7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 19:51:22 +0300 Subject: [PATCH 062/460] no cheese --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 2764571a..0917c767 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -566,6 +566,15 @@ public static void gameOverCheck() { } public static void gameOver(Team winner) { + + Groups.player.each(p -> { + PlayerData data = players.get(p.uuid()); + data.setUnit(null); + data.setExp(0); + data.setLevel(1); + data.setScore(0); + }); + if (winner == Team.crux) { if (playing) { RedVsBluePlugin.playing = false; From 4ba71217ff74a6670a119e0840910d9e8c45f42b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 19:55:40 +0300 Subject: [PATCH 063/460] Update Hud.java --- src/main/java/net/voiddustry/redvsblue/player/Hud.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/player/Hud.java b/src/main/java/net/voiddustry/redvsblue/player/Hud.java index e7398bc4..a316bab3 100644 --- a/src/main/java/net/voiddustry/redvsblue/player/Hud.java +++ b/src/main/java/net/voiddustry/redvsblue/player/Hud.java @@ -20,8 +20,6 @@ public class Hud { public static void update() { - CruxUnit.checkUnitCount(); - int minutes = (int) Math.floor(RedVsBluePlugin.stageTimer / 60); int seconds = (int) (RedVsBluePlugin.stageTimer - minutes * 60); From a3745445ee23db4e12c47bf26938fdd930a93bab Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 19:56:11 +0300 Subject: [PATCH 064/460] Update Hud.java --- src/main/java/net/voiddustry/redvsblue/player/Hud.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/player/Hud.java b/src/main/java/net/voiddustry/redvsblue/player/Hud.java index e7398bc4..a316bab3 100644 --- a/src/main/java/net/voiddustry/redvsblue/player/Hud.java +++ b/src/main/java/net/voiddustry/redvsblue/player/Hud.java @@ -20,8 +20,6 @@ public class Hud { public static void update() { - CruxUnit.checkUnitCount(); - int minutes = (int) Math.floor(RedVsBluePlugin.stageTimer / 60); int seconds = (int) (RedVsBluePlugin.stageTimer - minutes * 60); From 5a5e4b166b6aaa938ca992bfa428d7f8886d440f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 19:57:31 +0300 Subject: [PATCH 065/460] slow respawn --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 0917c767..82bc3206 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -378,6 +378,10 @@ public void init() { RedVsBluePlugin.redSpawns.remove(RedVsBluePlugin.redSpawns.firstOpt()); } + if (tick%20==0) { + CruxUnit.checkUnitCount(); + } + if(tick%3==0){ // draw hitboxes From b6f0e1faf200ce838640dee68d647082de304fe3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:00:29 +0300 Subject: [PATCH 066/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 82bc3206..2ca8f981 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -128,6 +128,7 @@ public void init() { } else { players.put(player.uuid(), new PlayerData(player)); PlayerData data = players.get(player.uuid()); + Vars.world.tile(blueSpawnX/8,blueSpawnY/8).setNet(Blocks.air,Team.derelict,0); Unit unit = getStartingUnit().spawn(Team.blue, blueSpawnX, blueSpawnY); data.setUnit(unit); From 76d2ffd9e955c8a69f92ff78aba6dc81959dd164 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:16:40 +0300 Subject: [PATCH 067/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index f7ff6b91..49be1148 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -16,9 +16,9 @@ unit.obviate.hitSize: 19.9 unit.flare.abilities.+: [ { type: shieldRegenFieldAbility - max: 40 + max: 60 amount: 10 - reload: 120 + reload: 90 range: 30 } ] From d0be09fdc33becbd54c38680cbb7e5a73b6a88d6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:31:37 +0300 Subject: [PATCH 068/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 2ca8f981..f80193c0 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -128,7 +128,7 @@ public void init() { } else { players.put(player.uuid(), new PlayerData(player)); PlayerData data = players.get(player.uuid()); - Vars.world.tile(blueSpawnX/8,blueSpawnY/8).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile(blueSpawnX/8f,blueSpawnY/8f).setNet(Blocks.air,Team.derelict,0); Unit unit = getStartingUnit().spawn(Team.blue, blueSpawnX, blueSpawnY); data.setUnit(unit); From 695f15f10df6953bcdd8be14acd589710b624d4c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:40:54 +0300 Subject: [PATCH 069/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index f80193c0..c32d4158 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -128,7 +128,7 @@ public void init() { } else { players.put(player.uuid(), new PlayerData(player)); PlayerData data = players.get(player.uuid()); - Vars.world.tile(blueSpawnX/8f,blueSpawnY/8f).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile(int(blueSpawnX)/8,int(blueSpawnY)/8f).setNet(Blocks.air,Team.derelict,0); Unit unit = getStartingUnit().spawn(Team.blue, blueSpawnX, blueSpawnY); data.setUnit(unit); From 3b26a6bbe038fd4724b2edd32f610c484c79f47f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:42:18 +0300 Subject: [PATCH 070/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c32d4158..b65a2146 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -128,7 +128,7 @@ public void init() { } else { players.put(player.uuid(), new PlayerData(player)); PlayerData data = players.get(player.uuid()); - Vars.world.tile(int(blueSpawnX)/8,int(blueSpawnY)/8f).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile(((int)blueSpawnX)/8,((int)blueSpawnY)/8f).setNet(Blocks.air,Team.derelict,0); Unit unit = getStartingUnit().spawn(Team.blue, blueSpawnX, blueSpawnY); data.setUnit(unit); From 520482254e3d7b7a67b2fa68e427d3295b915fb5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:43:25 +0300 Subject: [PATCH 071/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b65a2146..10caca4f 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -128,7 +128,7 @@ public void init() { } else { players.put(player.uuid(), new PlayerData(player)); PlayerData data = players.get(player.uuid()); - Vars.world.tile(((int)blueSpawnX)/8,((int)blueSpawnY)/8f).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile(((int)blueSpawnX)/8,((int)blueSpawnY)/8).setNet(Blocks.air,Team.derelict,0); Unit unit = getStartingUnit().spawn(Team.blue, blueSpawnX, blueSpawnY); data.setUnit(unit); From b5609d55deee3ebc9c68a854b7e1c757bbd281fd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:49:44 +0300 Subject: [PATCH 072/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 10caca4f..de8f8f8b 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -379,7 +379,7 @@ public void init() { RedVsBluePlugin.redSpawns.remove(RedVsBluePlugin.redSpawns.firstOpt()); } - if (tick%20==0) { + if (tick%60==0) { CruxUnit.checkUnitCount(); } From f094ae9b2242164dcaf3953ef0c0b40cd0389cd8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:58:54 +0300 Subject: [PATCH 073/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 95e58d04..bd039fff 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -90,7 +90,7 @@ public static void initTimers() { Timer.schedule(() -> { if (playing) { Groups.player.each(p -> { - if (p.team() == Team.blue && (!(((Integer)players.get(p.uuid()).getScore()) == null))) { + if (p.team() == Team.blue && (!(players.get(p.uuid()) == null)) && (!(((Integer)players.get(p.uuid()).getScore()) == null))) { players.get(p.uuid()).setScore(players.get(p.uuid()).getScore() + money_per_min); p.sendMessage(Bundle.format("game.salary", Bundle.findLocale(p.locale), money_per_min)); From 1d65868a1655bdf8946ef32fe9257168a2de42f0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 16:01:40 +0300 Subject: [PATCH 074/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index de8f8f8b..7d61de30 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -239,9 +239,11 @@ public void init() { if (event.unit.team() == Team.blue) { event.unit.getPlayer().team(Team.crux); PlayerData data = players.get(event.unit.getPlayer().uuid()); - data.setTeam(Team.crux); - data.setScore(0); - data.setKills(0); + if (!(data == null)) { + data.setTeam(Team.crux); + data.setScore(0); + data.setKills(0); + } UnitTypes.renale.spawn(Team.malis, event.unit.x, event.unit.y).kill(); @@ -287,10 +289,12 @@ public void init() { Groups.player.each(p -> { PlayerData data = players.get(p.uuid()); - data.setUnit(null); - data.setExp(0); - data.setLevel(1); - data.setScore(0); + if (!(data == null)) { + data.setUnit(null); + data.setExp(0); + data.setLevel(1); + data.setScore(0); + } }); }); From 4310ab5f1b6c1d66223cea482c22a08a58e4fb52 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 16:03:58 +0300 Subject: [PATCH 075/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 7d61de30..923fa02d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -201,10 +201,12 @@ public void init() { if (killerPlayer != null) { if (killerPlayer.team() == Team.blue) { PlayerData data = players.get(killerPlayer.uuid()); - players.get(killerPlayer.uuid()).addScore(data.getLevel()); - Call.label(killerPlayer.con, "[lime]+" + data.getLevel(), 2, event.unit.x, event.unit.y); - data.addExp(1); - processLevel(killerPlayer, data); + if (!(data == null)) { + players.get(killerPlayer.uuid()).addScore(data.getLevel()); + Call.label(killerPlayer.con, "[lime]+" + data.getLevel(), 2, event.unit.x, event.unit.y); + data.addExp(1); + processLevel(killerPlayer, data); + } } } } @@ -215,10 +217,12 @@ public void init() { if (event.unit != null && event.bullet.owner() instanceof Unit killer) { if (killer.isPlayer() && killer.team == Team.crux) { PlayerData data = players.get(killer.getPlayer().uuid()); - data.addKill(); - Call.label(killer.getPlayer().con, "[scarlet]+1", 2, event.unit.x, event.unit.y); - if (data.getKills() >= 2) { - Boss.spawnBoss(killer.getPlayer()); + if (!(data == null)) { + data.addKill(); + Call.label(killer.getPlayer().con, "[scarlet]+1", 2, event.unit.x, event.unit.y); + if (data.getKills() >= 2) { + Boss.spawnBoss(killer.getPlayer()); + } } } From 2dd0a2835021b922419a7c61c7f2ce10e863d694 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 2 Jan 2026 16:06:29 +0300 Subject: [PATCH 076/460] Update Laboratory.java --- .../redvsblue/game/stations/Laboratory.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index e4d87d4e..97ddd763 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -77,13 +77,16 @@ public static void initTimer() { Evolution evolution = Evolutions.evolutions.get(p.unit().type().name); - String[][] buttons = new String[evolution.evolutions.length][1]; - - for (int i = 0; i < evolution.evolutions.length; i++) { - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(evolution.evolutions[i]).cost); + if (!(evolution == null)) { + + String[][] buttons = new String[evolution.evolutions.length][1]; + + for (int i = 0; i < evolution.evolutions.length; i++) { + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(evolution.evolutions[i]).cost); + } + + Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); } - - Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); } if (!(players.get(p.uuid()) == null)) { players.get(p.uuid()).setCanEvolve(true); From b34806c3d5cea0c601d5a2468915207449e8f3dc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 3 Jan 2026 13:16:25 +0300 Subject: [PATCH 077/460] =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B8=20=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 923fa02d..f605afbc 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -582,10 +582,12 @@ public static void gameOver(Team winner) { Groups.player.each(p -> { PlayerData data = players.get(p.uuid()); - data.setUnit(null); - data.setExp(0); - data.setLevel(1); - data.setScore(0); + if (!(data == null)) { + data.setUnit(null); + data.setExp(0); + data.setLevel(1); + data.setScore(0); + } }); if (winner == Team.crux) { From af03291fcc10d2b18a10b5db3668208bebf36e28 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 3 Jan 2026 20:21:28 +0300 Subject: [PATCH 078/460] fix evolution --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 97ddd763..bf4c61da 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -16,6 +16,7 @@ import net.voiddustry.redvsblue.evolution.Evolutions; import net.voiddustry.redvsblue.game.stations.stationData.StationData; import net.voiddustry.redvsblue.util.Utils; +import mindustry.graphics.Layer; import java.util.Locale; import java.util.Map; @@ -35,7 +36,7 @@ public class Laboratory { PlayerData playerData = players.get(player.uuid()); if (playerData.getScore() >= evolutionOption.cost) { - if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true)) { + if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true || evolutionOption.unitType.groundLayer==Layer.legUnit)) { Unit unit = evolutionOption.unitType.spawn(Team.blue, player.x(), player.y()); unit.health = unit.type.health/2; From b4113441d6657ec9c645e6af6d2f137117c716ca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:10:41 +0300 Subject: [PATCH 079/460] stage 11 1 --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index b8d3fae7..b724b534 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -58,6 +58,12 @@ public class StageUnits { UnitTypes.precept, "units.crux.menu.precept" ); + public final static ObjectMap eleventhStage = ObjectMap.of( + UnitTypes.obviate, "units.crux.menu.obviate", + UnitTypes.vanquish, "units.crux.menu.vanquish", + UnitTypes.antumbra, "units.crux.menu.antumbra" + ); + public final static ObjectMap bosses = ObjectMap.of( 2, UnitTypes.horizon, 3, UnitTypes.locus, From 23c2a8bdf540a8a78d9b3e0ee636aa3cb7256870 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:11:49 +0300 Subject: [PATCH 080/460] Update ClassChooseMenu.java --- .../net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java b/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java index 0acda923..ad27c5d3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java @@ -48,7 +48,8 @@ public static void updateUnitsMap() { case 6 -> units.putAll(StageUnits.sixthStage); case 7 -> units.putAll(StageUnits.sevenStage); case 8,9 -> units.putAll(StageUnits.eighthAndNinthStage); - case 10,11 -> units.putAll(StageUnits.tenthStage); + case 10 -> units.putAll(StageUnits.tenthStage); + case 11,12 -> units.putAll(StageUnits.eleventhStage); } } } From 23afa78ac031b1969101aec9d165541d7d82448e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:12:30 +0300 Subject: [PATCH 081/460] Update StageUnits.java --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index b724b534..c7579e3e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -74,6 +74,7 @@ public class StageUnits { 8, UnitTypes.tecta, 9, UnitTypes.vanquish, 10, UnitTypes.eclipse, - 11, UnitTypes.navanax + 11, UnitTypes.navanax, + 12, UnitTypes.conqueror ); } From aa752e0b76d142f193d261601da9f970fafd363e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:13:59 +0300 Subject: [PATCH 082/460] Update StageUnits.java --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index c7579e3e..6ec25853 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -75,6 +75,6 @@ public class StageUnits { 9, UnitTypes.vanquish, 10, UnitTypes.eclipse, 11, UnitTypes.navanax, - 12, UnitTypes.conqueror + 12, UnitTypes.conquer ); } From 6eded5444eb6d8d179f1c4bfdd15e7e7cd451ea5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:27:01 +0300 Subject: [PATCH 083/460] stage 11 2 --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index f605afbc..8167d242 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -70,7 +70,7 @@ public class RedVsBluePlugin extends Plugin { public static float stageTimer = 0; public static boolean playing = false; - + public static int stage11 = false; static Timer.Task task = new Timer.Task() { @Override @@ -80,7 +80,32 @@ public void run() { spawnBoss(); announceBundled("game.new-stage", 15, stage); ClassChooseMenu.updateUnitsMap(); - if (stage >= 11) { + + if (stage >= 11 && (stage11 == false)) { + //calculate blue unit value for stage 11 + int blueUnitValue = 0; + int typeModifier = 0; + for (Unit u : Groups.unit) { + typeModifier = 1; + if (u.type == UnitTypes.quad) { + typeModifier = 2; + } else if (u.type == UnitTypes.sei) { + typeModifier = 2; + } else if (u.type == UnitTypes.aegires) { + typeModifier = 2; + } + blueUnitValue = blueUnitValue + (u.type.health*typeModifier); + } + if (blueUnitValue < 50000) { + gameOver(Team.blue); + } else { + stage11 = true; + Groups.player.each(p=>{ + //add stage 11 announcement + }); + } + } + if (stage >= 12) { gameOver(Team.blue); } } @@ -316,6 +341,8 @@ public void init() { blueSpawnX = core.x(); blueSpawnY = core.y(); + stage11 = false; + Vars.state.teams.cores(Team.blue).each(Building::kill); for (int x = 0; x < Vars.state.map.width; x++) { From 3dff09f0c533e88a805e9d61a6e8d76936e3bec2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:29:02 +0300 Subject: [PATCH 084/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 9db8827d..d61cb1e2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -42,6 +42,9 @@ public static void callSpawn(Player player) { unit.health = 100; } else if (unit.type == UnitTypes.dagger) { unit.health = 100; + } else if (unit.type == UnitTypes.antumbra) { + unit.health = 4000; + unit.addItem(Items.pyratite, 999); } else { unit.health = unit.type.health; } From b2a5eccfa61ae0fa35bd95f491563cc01833f4fc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:30:13 +0300 Subject: [PATCH 085/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 8167d242..1c728ad5 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -100,7 +100,7 @@ public void run() { gameOver(Team.blue); } else { stage11 = true; - Groups.player.each(p=>{ + Groups.player.each(p -> { //add stage 11 announcement }); } From 40732393e251d26d2d804e88e839fcd6cca03568 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:33:25 +0300 Subject: [PATCH 086/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 1c728ad5..3c1af095 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -70,7 +70,7 @@ public class RedVsBluePlugin extends Plugin { public static float stageTimer = 0; public static boolean playing = false; - public static int stage11 = false; + public static boolean stage11 = false; static Timer.Task task = new Timer.Task() { @Override @@ -94,7 +94,7 @@ public void run() { } else if (u.type == UnitTypes.aegires) { typeModifier = 2; } - blueUnitValue = blueUnitValue + (u.type.health*typeModifier); + blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } if (blueUnitValue < 50000) { gameOver(Team.blue); From 96cc8413a854795f940e3d3fafeba4d2542767fd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:36:10 +0300 Subject: [PATCH 087/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 3c1af095..09636027 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -100,9 +100,7 @@ public void run() { gameOver(Team.blue); } else { stage11 = true; - Groups.player.each(p -> { - //add stage 11 announcement - }); + announceBundled("game.stage11", 15); } } if (stage >= 12) { From a7e431d026171591e12ac5cff8c1f2363b82e16d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:39:11 +0300 Subject: [PATCH 088/460] Update bundle_en.properties --- src/main/resources/bundles/bundle_en.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_en.properties b/src/main/resources/bundles/bundle_en.properties index c4df9fb6..3d7b0821 100644 --- a/src/main/resources/bundles/bundle_en.properties +++ b/src/main/resources/bundles/bundle_en.properties @@ -47,6 +47,8 @@ units.crux.menu.mace=[scarlet]Mace units.crux.menu.merui=[lightgray]Merui units.crux.menu.nova=[lime]Nova units.crux.menu.obviate=[purple]Obviate +units.crux.menu.antumbra=[lightgray]Antumbra +units.crux.menu.vanquish=[crimson]Vanquish units.crux.menu.precept=[lightgray]Precept units.crux.menu.stell=[gray]Stell units.crux.menu.title=[scarlet]Class Choose menu @@ -69,4 +71,4 @@ boss.bosses.mace=[#023919]Rotting Corpse boss.spawn=[accent]{0}[] [scarlet]spawned as {1}[scarlet]. stations.buttons.recycler=[#023919]Recycler stations.workbench.buy-armor=[lime]Buy {0} Armor for 1 point -stations.workbench.unit-armor=[blue]Unit Shield: {0} \ No newline at end of file +stations.workbench.unit-armor=[blue]Unit Shield: {0} From 4ac23f8b5e0c167b51d34d12d63c1306c9287082 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:40:37 +0300 Subject: [PATCH 089/460] Update bundle_ru.properties --- src/main/resources/bundles/bundle_ru.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_ru.properties b/src/main/resources/bundles/bundle_ru.properties index 23bfded0..56edd32f 100644 --- a/src/main/resources/bundles/bundle_ru.properties +++ b/src/main/resources/bundles/bundle_ru.properties @@ -46,6 +46,8 @@ units.crux.menu.merui=[lightgray]Меруй units.crux.menu.nova=[lime]Нова units.crux.menu.obviate=[purple]Устранение units.crux.menu.precept=[lightgray]Заповедь +units.crux.menu.antumbra=[lightgray]Затемь +units.crux.menu.vanquish=[crimson]Покоритель units.crux.menu.stell=[gray]Основа units.crux.menu.title=[scarlet]Меню выбора класса welcome=[cyan]Добро пожаловать! @@ -66,4 +68,4 @@ boss.bosses.mace=[#023919]Гниющий Труп boss.spawn=[accent]{0}[] [scarlet]появился как {1}[scarlet]. stations.buttons.recycler=[#023919]Переработчик stations.workbench.buy-armor=[lime]Купить {0} Брони за 1 поинт -stations.workbench.unit-armor=[blue]Щит Юнита: {0} \ No newline at end of file +stations.workbench.unit-armor=[blue]Щит Юнита: {0} From 2bccff5b08f855012e44cba1819289f8d9c67980 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:42:26 +0300 Subject: [PATCH 090/460] quell. --- src/main/resources/bundles/bundle_uk_UA.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/bundles/bundle_uk_UA.properties b/src/main/resources/bundles/bundle_uk_UA.properties index a1224baa..b1050317 100644 --- a/src/main/resources/bundles/bundle_uk_UA.properties +++ b/src/main/resources/bundles/bundle_uk_UA.properties @@ -44,8 +44,10 @@ units.crux.menu.locus=[gold]Локус units.crux.menu.mace=[scarlet]Булава units.crux.menu.merui=[lightgray]Меруй units.crux.menu.nova=[lime]Нова -units.crux.menu.obviate=[purple]Quell +units.crux.menu.obviate=[purple]Уникач units.crux.menu.precept=[lightgray]Повчальник +units.crux.menu.antumbra=[lightgray]Тіньовик +units.crux.menu.vanquish=[crimson]Переможець units.crux.menu.stell=[gray]Стел units.crux.menu.title=[scarlet]Меню вибору класа welcome=[cyan]Добро пожаловать! @@ -66,4 +68,4 @@ boss.bosses.mace=[#023919]Гниючий Труп boss.spawn=[accent]{0}[] [scarlet]з'явився як {1}[scarlet]. stations.buttons.recycler=[#023919]Переробник stations.workbench.buy-armor=[lime]Придбати {0} Бронi за 1 поiнт -stations.workbench.unit-armor=[blue]Щит Юнiта: {0} \ No newline at end of file +stations.workbench.unit-armor=[blue]Щит Юнiта: {0} From 7e0d2029819161ada8a64ef968d163e3288e6510 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:43:47 +0300 Subject: [PATCH 091/460] Update bundle_ru.properties --- src/main/resources/bundles/bundle_ru.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/bundles/bundle_ru.properties b/src/main/resources/bundles/bundle_ru.properties index 56edd32f..07da6000 100644 --- a/src/main/resources/bundles/bundle_ru.properties +++ b/src/main/resources/bundles/bundle_ru.properties @@ -13,6 +13,7 @@ game.level-up={0}[accent] повысил свой уровень! game.new-stage=[scarlet]Стадия {0} началась! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]Вы продержались одну минуту и получили 3 очка! +game.stage11=[crimson]Вы привлекли к себе слишком много внимания... menu.build.build=[gold]Выбрать menu.build.cancel=[lightgray]Отменить menu.build.single=Single From 69f0fa65ff24d1d29da4cd207532ae6ad3afb2e5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:45:58 +0300 Subject: [PATCH 092/460] Update bundle_en.properties --- src/main/resources/bundles/bundle_en.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/bundles/bundle_en.properties b/src/main/resources/bundles/bundle_en.properties index 3d7b0821..756c413d 100644 --- a/src/main/resources/bundles/bundle_en.properties +++ b/src/main/resources/bundles/bundle_en.properties @@ -15,6 +15,7 @@ game.level-up={0}[accent] has leveled up! game.new-stage=[scarlet]Stage {0} has began! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]You survived one minute and got 3 points! +game.stage11=[crimson]You have attracted far too much attention to yourself... menu.build.build=[gold]Select menu.build.cancel=[lightgray]Cancel menu.build.single=Single From 3ddc53beac16243c53edd774859de45dc65141ef Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:46:49 +0300 Subject: [PATCH 093/460] Update bundle_uk_UA.properties --- src/main/resources/bundles/bundle_uk_UA.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/bundles/bundle_uk_UA.properties b/src/main/resources/bundles/bundle_uk_UA.properties index b1050317..525b55ca 100644 --- a/src/main/resources/bundles/bundle_uk_UA.properties +++ b/src/main/resources/bundles/bundle_uk_UA.properties @@ -13,6 +13,7 @@ game.level-up={0}[accent] повисив свій рівень! game.new-stage=[scarlet]Стадія {0} почалась! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]Ви протримались одну хвилину та отримали 3 бали! +game.stage11="Ти привернув до себе занадто багато уваги..." menu.build.build=[gold]Вибрати menu.build.cancel=[lightgray]Скасувати menu.build.single=Single From 9c5e37c52f74e627136f326fe312727dd3188459 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:34:06 +0300 Subject: [PATCH 094/460] set stage server command --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 09636027..a7e4e78a 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -588,7 +588,16 @@ public void registerServerCommands(CommandHandler handler) { // }); handler.register("restart", "ae", (args) -> Groups.player.each(p -> p.kick("[scarlet]Server is going to restart"))); + + handler.register("setstage", "Sets rvsb stage", (args) -> { + try { + stage = args[0]; + } catch (Exception e) { + Log.info("Failed to set stage"); + } + }); } + public static void gameOverCheck() { int blueUnitCount = 0; From 122434ec7ad6913f573c4c93ad2a3c2bbcc3ae7f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:36:16 +0300 Subject: [PATCH 095/460] fix --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index a7e4e78a..c667e74e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -591,7 +591,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("setstage", "Sets rvsb stage", (args) -> { try { - stage = args[0]; + stage = Integer.parseInt(args[0]); } catch (Exception e) { Log.info("Failed to set stage"); } From 24fefb8ac57d8180d85ef0ab703a6d19eced6af2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:38:22 +0300 Subject: [PATCH 096/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c667e74e..e9a9c841 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -589,7 +589,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("restart", "ae", (args) -> Groups.player.each(p -> p.kick("[scarlet]Server is going to restart"))); - handler.register("setstage", "Sets rvsb stage", (args) -> { + handler.register("setstage","" ,"Sets rvsb stage", (args) -> { try { stage = Integer.parseInt(args[0]); } catch (Exception e) { From c79babde99a0d60e64f3a0e387a9046d724ca7e4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:48:51 +0300 Subject: [PATCH 097/460] debug --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index e9a9c841..2647cee5 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -76,26 +76,29 @@ public class RedVsBluePlugin extends Plugin { @Override public void run() { stage++; - stageTimer = 300; + stageTimer = 60; spawnBoss(); announceBundled("game.new-stage", 15, stage); ClassChooseMenu.updateUnitsMap(); - if (stage >= 11 && (stage11 == false)) { + if ((stage >= 11) && (stage11 == false)) { //calculate blue unit value for stage 11 int blueUnitValue = 0; - int typeModifier = 0; + int typeModifier = 1; for (Unit u : Groups.unit) { - typeModifier = 1; - if (u.type == UnitTypes.quad) { - typeModifier = 2; - } else if (u.type == UnitTypes.sei) { - typeModifier = 2; - } else if (u.type == UnitTypes.aegires) { - typeModifier = 2; + if (u.team==Team.blue) { + typeModifier = 1; + if (u.type == UnitTypes.quad) { + typeModifier = 2; + } else if (u.type == UnitTypes.sei) { + typeModifier = 2; + } else if (u.type == UnitTypes.aegires) { + typeModifier = 2; + } + blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } - blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } + Log.info("Blue unit value" + blueUnitValue); if (blueUnitValue < 50000) { gameOver(Team.blue); } else { @@ -354,7 +357,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 300, 300); + timer.scheduleTask(task, 60, 60); Groups.player.each(player -> { if (player != null) { @@ -373,7 +376,7 @@ public void init() { gameover = false; hardcore = false; stage = 1; - stageTimer = 420; + stageTimer = 300; voting = false; StartingMenu.canOpenMenu = true; From bc31fff0a3c04a56e30b3a16dc4b51428b42e61b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:58:20 +0300 Subject: [PATCH 098/460] remove debug --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 2647cee5..f468a62f 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -76,7 +76,7 @@ public class RedVsBluePlugin extends Plugin { @Override public void run() { stage++; - stageTimer = 60; + stageTimer = 300; spawnBoss(); announceBundled("game.new-stage", 15, stage); ClassChooseMenu.updateUnitsMap(); @@ -99,7 +99,7 @@ public void run() { } } Log.info("Blue unit value" + blueUnitValue); - if (blueUnitValue < 50000) { + if (blueUnitValue < 52000) { gameOver(Team.blue); } else { stage11 = true; @@ -357,7 +357,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 60, 60); + timer.scheduleTask(task, 300, 300); Groups.player.each(player -> { if (player != null) { From 6dd47f16f73f2213915edf6361fc513cbd2630f4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:03:28 +0300 Subject: [PATCH 099/460] no more antumbra --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index d61cb1e2..839ee444 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -42,9 +42,11 @@ public static void callSpawn(Player player) { unit.health = 100; } else if (unit.type == UnitTypes.dagger) { unit.health = 100; - } else if (unit.type == UnitTypes.antumbra) { - unit.health = 4000; - unit.addItem(Items.pyratite, 999); + } else if (unit.type == UnitTypes.obviate) { + if (RedVsBluePlugin.stage == 11) { + unit.apply(StatusEffects.shielded, 600f); + unit.apply(StatusEffects.overdrive, 99999f); + } } else { unit.health = unit.type.health; } From 181712d0cbcf5f80305b0366f46286928610bf85 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:07:42 +0300 Subject: [PATCH 100/460] Update bundle_en.properties --- src/main/resources/bundles/bundle_en.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_en.properties b/src/main/resources/bundles/bundle_en.properties index 756c413d..90afcfe3 100644 --- a/src/main/resources/bundles/bundle_en.properties +++ b/src/main/resources/bundles/bundle_en.properties @@ -15,7 +15,7 @@ game.level-up={0}[accent] has leveled up! game.new-stage=[scarlet]Stage {0} has began! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]You survived one minute and got 3 points! -game.stage11=[crimson]You have attracted far too much attention to yourself... +game.stage11=[crimson]Team Blue has attracted way too much attention... menu.build.build=[gold]Select menu.build.cancel=[lightgray]Cancel menu.build.single=Single From 9158d20cb46d6dfbc9f2f94fea37a619ba14e30a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:08:28 +0300 Subject: [PATCH 101/460] Update bundle_ru.properties --- src/main/resources/bundles/bundle_ru.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_ru.properties b/src/main/resources/bundles/bundle_ru.properties index 07da6000..8d21b109 100644 --- a/src/main/resources/bundles/bundle_ru.properties +++ b/src/main/resources/bundles/bundle_ru.properties @@ -13,7 +13,7 @@ game.level-up={0}[accent] повысил свой уровень! game.new-stage=[scarlet]Стадия {0} началась! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]Вы продержались одну минуту и получили 3 очка! -game.stage11=[crimson]Вы привлекли к себе слишком много внимания... +game.stage11=[crimson]Синяя команда привлекла к себе слишком много внимания... menu.build.build=[gold]Выбрать menu.build.cancel=[lightgray]Отменить menu.build.single=Single From 4f3e2c872887497e12e1925b8d46952058b7afba Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:11:29 +0300 Subject: [PATCH 102/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index f468a62f..ebd0d293 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -75,11 +75,13 @@ public class RedVsBluePlugin extends Plugin { static Timer.Task task = new Timer.Task() { @Override public void run() { - stage++; - stageTimer = 300; - spawnBoss(); - announceBundled("game.new-stage", 15, stage); - ClassChooseMenu.updateUnitsMap(); + if (stage != 10) { + stage++; + stageTimer = 300; + spawnBoss(); + announceBundled("game.new-stage", 15, stage); + ClassChooseMenu.updateUnitsMap(); + } if ((stage >= 11) && (stage11 == false)) { //calculate blue unit value for stage 11 @@ -103,7 +105,14 @@ public void run() { gameOver(Team.blue); } else { stage11 = true; - announceBundled("game.stage11", 15); + announceBundled("game.stage11", 5); + Timer.schedule(() -> { + stage++; + stageTimer = 300; + spawnBoss(); + announceBundled("game.new-stage", 15, 11); + ClassChooseMenu.updateUnitsMap(); + }, 6); } } if (stage >= 12) { From 34da5a35d689fa9e1a795333bf848404a6db444b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:21:02 +0300 Subject: [PATCH 103/460] more stage11 units --- .../redvsblue/game/crux/CruxUnit.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 839ee444..fbccde2d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -14,6 +14,8 @@ import net.voiddustry.redvsblue.RedVsBluePlugin; import net.voiddustry.redvsblue.util.Utils; +import java.util.Random; + public class CruxUnit { public static void callSpawn(Player player) { @@ -70,6 +72,19 @@ private static void spawnCrux() { if (cruxSpawn != null && cruxSpawn.block() != null) { Call.logicExplosion(Team.crux, cruxSpawn.x*8, cruxSpawn.y*8, 80, 999999, true, true, true, true); } + if (RedVsBluePlugin.stage >= 11) { + Random rand = new Random; + if (rand.nextInt(40) == 1) { + UnitTypes.latum.spawn(Team.crux, cruxSpawn); + } + if (rand.nextInt(80) == 1) { + UnitTypes.conquer.spawn(Team.crux, cruxSpawn); + } + if (rand.nextInt(40) == 1) { + UnitTypes.tecta.spawn(Team.crux, cruxSpawn); + } + } + Unit unit = unitType.spawn(Team.crux, cruxSpawn); Timer.schedule(() -> { @@ -83,6 +98,11 @@ private static void spawnCrux() { unit.health = 100; } else if (unit.type == UnitTypes.dagger) { unit.health = 100; + } else if (unit.type == UnitTypes.obviate) { + if (RedVsBluePlugin.stage == 11) { + unit.apply(StatusEffects.shielded, 600f); + unit.apply(StatusEffects.overdrive, 99999f); + } } else { unit.health = unit.type.health; } From 766ebb465c2afbc9abaffa71eddc03f0b0d78025 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:22:13 +0300 Subject: [PATCH 104/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index fbccde2d..b4316386 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -72,8 +72,9 @@ private static void spawnCrux() { if (cruxSpawn != null && cruxSpawn.block() != null) { Call.logicExplosion(Team.crux, cruxSpawn.x*8, cruxSpawn.y*8, 80, 999999, true, true, true, true); } + if (RedVsBluePlugin.stage >= 11) { - Random rand = new Random; + Random rand = new Random(); if (rand.nextInt(40) == 1) { UnitTypes.latum.spawn(Team.crux, cruxSpawn); } From b14db99fb4cbb3d4266afbb36fc6f83e5539036b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:35:44 +0300 Subject: [PATCH 105/460] debug bruh --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ebd0d293..78ec0c46 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -83,7 +83,7 @@ public void run() { ClassChooseMenu.updateUnitsMap(); } - if ((stage >= 11) && (stage11 == false)) { + if ((stage >= 10) && (stage11 == false)) { //calculate blue unit value for stage 11 int blueUnitValue = 0; int typeModifier = 1; @@ -106,7 +106,8 @@ public void run() { } else { stage11 = true; announceBundled("game.stage11", 5); - Timer.schedule(() -> { + Timer timer = new Timer(); + timer.schedule(() -> { stage++; stageTimer = 300; spawnBoss(); @@ -366,7 +367,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 300, 300); + timer.scheduleTask(task, 30, 300); Groups.player.each(player -> { if (player != null) { From 9ba1651fad8cd59727f7ce9d5f5c6ccf15b846a0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:49:31 +0300 Subject: [PATCH 106/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 78ec0c46..14fa1202 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -100,7 +100,7 @@ public void run() { blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } } - Log.info("Blue unit value" + blueUnitValue); + Log.info("Blue unit value for stage 11: " + blueUnitValue); if (blueUnitValue < 52000) { gameOver(Team.blue); } else { @@ -367,7 +367,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 30, 300); + timer.scheduleTask(task, 300, 300); Groups.player.each(player -> { if (player != null) { From 1e8a278ac55244a3fd61c9f9d47e87d1fb2f14b5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:51:31 +0300 Subject: [PATCH 107/460] no antumbra --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index 6ec25853..bc3ed94c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -60,8 +60,7 @@ public class StageUnits { public final static ObjectMap eleventhStage = ObjectMap.of( UnitTypes.obviate, "units.crux.menu.obviate", - UnitTypes.vanquish, "units.crux.menu.vanquish", - UnitTypes.antumbra, "units.crux.menu.antumbra" + UnitTypes.vanquish, "units.crux.menu.vanquish" ); public final static ObjectMap bosses = ObjectMap.of( From 38508ffd15456a5d1746c04f69686db3c4276496 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 23:06:28 +0300 Subject: [PATCH 108/460] Update bundle_en.properties --- src/main/resources/bundles/bundle_en.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_en.properties b/src/main/resources/bundles/bundle_en.properties index 90afcfe3..6498f033 100644 --- a/src/main/resources/bundles/bundle_en.properties +++ b/src/main/resources/bundles/bundle_en.properties @@ -15,7 +15,7 @@ game.level-up={0}[accent] has leveled up! game.new-stage=[scarlet]Stage {0} has began! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]You survived one minute and got 3 points! -game.stage11=[crimson]Team Blue has attracted way too much attention... +game.stage11=[crimson]Team Blue has attracted unwanted attention... menu.build.build=[gold]Select menu.build.cancel=[lightgray]Cancel menu.build.single=Single From 26d14d62e4643c220acc74fb170401c0c747b89c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 5 Jan 2026 23:06:58 +0300 Subject: [PATCH 109/460] Update bundle_ru.properties --- src/main/resources/bundles/bundle_ru.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bundles/bundle_ru.properties b/src/main/resources/bundles/bundle_ru.properties index 8d21b109..4d0caf12 100644 --- a/src/main/resources/bundles/bundle_ru.properties +++ b/src/main/resources/bundles/bundle_ru.properties @@ -13,7 +13,7 @@ game.level-up={0}[accent] повысил свой уровень! game.new-stage=[scarlet]Стадия {0} началась! game.redeemed={0} [cyan]has been redeemed! game.salary=[lime]Вы продержались одну минуту и получили 3 очка! -game.stage11=[crimson]Синяя команда привлекла к себе слишком много внимания... +game.stage11=[crimson]Синяя команда привлекла к себе ненужное внимание... menu.build.build=[gold]Выбрать menu.build.cancel=[lightgray]Отменить menu.build.single=Single From faaa62caf26f64a318f3895c7995811b2cd079cb Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 00:12:12 +0300 Subject: [PATCH 110/460] Update CruxUnit.java --- .../redvsblue/game/crux/CruxUnit.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index b4316386..09437e0f 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -33,6 +33,13 @@ public static void callSpawn(Player player) { unit.health = Integer.MAX_VALUE; unit.apply(StatusEffects.overclock, 180);; + if (unit.type == UnitTypes.obviate) { + if (RedVsBluePlugin.stage == 11) { + unit.apply(StatusEffects.shielded, 600f); + unit.apply(StatusEffects.overdrive, 99999f); + } + } + Timer.schedule(() -> { if (unit.type == UnitTypes.crawler) { unit.health = 20; @@ -44,11 +51,6 @@ public static void callSpawn(Player player) { unit.health = 100; } else if (unit.type == UnitTypes.dagger) { unit.health = 100; - } else if (unit.type == UnitTypes.obviate) { - if (RedVsBluePlugin.stage == 11) { - unit.apply(StatusEffects.shielded, 600f); - unit.apply(StatusEffects.overdrive, 99999f); - } } else { unit.health = unit.type.health; } @@ -88,6 +90,13 @@ private static void spawnCrux() { Unit unit = unitType.spawn(Team.crux, cruxSpawn); + if (unit.type == UnitTypes.obviate) { + if (RedVsBluePlugin.stage == 11) { + unit.apply(StatusEffects.shielded, 600f); + unit.apply(StatusEffects.overdrive, 99999f); + } + } + Timer.schedule(() -> { if (unit.type == UnitTypes.crawler) { unit.health = 20; @@ -99,11 +108,6 @@ private static void spawnCrux() { unit.health = 100; } else if (unit.type == UnitTypes.dagger) { unit.health = 100; - } else if (unit.type == UnitTypes.obviate) { - if (RedVsBluePlugin.stage == 11) { - unit.apply(StatusEffects.shielded, 600f); - unit.apply(StatusEffects.overdrive, 99999f); - } } else { unit.health = unit.type.health; } From 0a83c254dcad31e7f5d07c76bd885d2c3044f75e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 00:13:50 +0300 Subject: [PATCH 111/460] fix skip stage10 --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 14fa1202..e71105ce 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -81,9 +81,7 @@ public void run() { spawnBoss(); announceBundled("game.new-stage", 15, stage); ClassChooseMenu.updateUnitsMap(); - } - - if ((stage >= 10) && (stage11 == false)) { + } else if ((stage >= 10) && (stage11 == false)) { //calculate blue unit value for stage 11 int blueUnitValue = 0; int typeModifier = 1; From fbe5d33fc8b2c722a73c7b98b4f9f9c11da2dddc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 00:21:33 +0300 Subject: [PATCH 112/460] debug --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index e71105ce..d5130681 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -365,7 +365,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 300, 300); + timer.scheduleTask(task, 30, 30); Groups.player.each(player -> { if (player != null) { From 7bf756015cb39d79c98732cf17df24ffba59ecc1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 00:27:49 +0300 Subject: [PATCH 113/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index d5130681..75b438b4 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -81,7 +81,7 @@ public void run() { spawnBoss(); announceBundled("game.new-stage", 15, stage); ClassChooseMenu.updateUnitsMap(); - } else if ((stage >= 10) && (stage11 == false)) { + } else { //calculate blue unit value for stage 11 int blueUnitValue = 0; int typeModifier = 1; From 7b0402f81cab5c55ca5fc80d63cbc165dda10752 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 10:54:03 +0300 Subject: [PATCH 114/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 75b438b4..6b9f91be 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -365,7 +365,7 @@ public void init() { } Timer timer = new Timer(); - timer.scheduleTask(task, 30, 30); + timer.scheduleTask(task, 300, 300); Groups.player.each(player -> { if (player != null) { From 3d442622d2763fb69e968e6d3213735fd9a16f7b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 10:55:16 +0300 Subject: [PATCH 115/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 09437e0f..17ac3880 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -80,10 +80,10 @@ private static void spawnCrux() { if (rand.nextInt(40) == 1) { UnitTypes.latum.spawn(Team.crux, cruxSpawn); } - if (rand.nextInt(80) == 1) { + if (rand.nextInt(50) == 1) { UnitTypes.conquer.spawn(Team.crux, cruxSpawn); } - if (rand.nextInt(40) == 1) { + if (rand.nextInt(25) == 1) { UnitTypes.tecta.spawn(Team.crux, cruxSpawn); } } From 4e7938a1d4c6cb76b862b8ca132c6dc2638f65de Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 11:57:27 +0300 Subject: [PATCH 116/460] rebalance spawn v2 1 --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 6b9f91be..862cac90 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -423,7 +423,7 @@ public void init() { RedVsBluePlugin.redSpawns.remove(RedVsBluePlugin.redSpawns.firstOpt()); } - if (tick%60==0) { + if (tick%5==0) { CruxUnit.checkUnitCount(); } From 13837eba4cc38caf96e244dd589658fbd563eeb0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:00:12 +0300 Subject: [PATCH 117/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 862cac90..1b37d367 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -401,6 +401,11 @@ public void init() { }, 10)); + StatusEffect superShielded = new StatusEffect("superShielded") {{ + show = false; + healthMultiplier = 9; + }}; + Events.run(EventType.Trigger.update, () -> { tick++; if (playing) { From 21750972a361f400fe111f008b9509908fbd46ab Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:03:34 +0300 Subject: [PATCH 118/460] spawn rebalance v2 2 --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 17ac3880..d8e38591 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -90,6 +90,9 @@ private static void spawnCrux() { Unit unit = unitType.spawn(Team.crux, cruxSpawn); + unit.apply(Vars.content.statusEffect("superShielded"), 60f); + unit.apply(Vars.content.statusEffect("shielded"), 120f); + if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { unit.apply(StatusEffects.shielded, 600f); From 90308fd4da368d06afbfcddc384b4a7ca6f253fe Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:06:01 +0300 Subject: [PATCH 119/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index d8e38591..a28c5b6c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -1,6 +1,7 @@ package net.voiddustry.redvsblue.game.crux; import arc.util.Timer; +import mindustry.Vars; import mindustry.content.Items; import mindustry.content.StatusEffects; import mindustry.content.UnitTypes; @@ -33,6 +34,9 @@ public static void callSpawn(Player player) { unit.health = Integer.MAX_VALUE; unit.apply(StatusEffects.overclock, 180);; + unit.apply(Vars.content.statusEffect("superShielded"), 60f); + unit.apply(Vars.content.statusEffect("shielded"), 120f); + if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { unit.apply(StatusEffects.shielded, 600f); From 9d67c926069f275ce8b29e6308bd22f656d5170a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:11:00 +0300 Subject: [PATCH 120/460] Update StageUnits.java --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index bc3ed94c..6db2638c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -73,7 +73,7 @@ public class StageUnits { 8, UnitTypes.tecta, 9, UnitTypes.vanquish, 10, UnitTypes.eclipse, - 11, UnitTypes.navanax, - 12, UnitTypes.conquer + 11, UnitTypes.conquer, + 12, UnitTypes.navanax ); } From 7b641dcfc4d6126647c529daaaca363b76aab942 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:14:37 +0300 Subject: [PATCH 121/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 1b37d367..8c49dfce 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -93,13 +93,17 @@ public void run() { } else if (u.type == UnitTypes.sei) { typeModifier = 2; } else if (u.type == UnitTypes.aegires) { + typeModifier = 3; + } else if (u.type == UnitTypes.omura) { typeModifier = 2; + } else if (u.type == UnitTypes.navanax) { + typeModifier = 1.5; } blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } } Log.info("Blue unit value for stage 11: " + blueUnitValue); - if (blueUnitValue < 52000) { + if (blueUnitValue < 70000) { gameOver(Team.blue); } else { stage11 = true; From 93a31a1d2891db0b4df0463a454b8958440e1f01 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:20:53 +0300 Subject: [PATCH 122/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 8c49dfce..9592a9e8 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -103,7 +103,7 @@ public void run() { } } Log.info("Blue unit value for stage 11: " + blueUnitValue); - if (blueUnitValue < 70000) { + if (blueUnitValue < 60000) { gameOver(Team.blue); } else { stage11 = true; From 4f2066ec786eff7cac2e2c12cc9cfb3d3c70abff Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:21:43 +0300 Subject: [PATCH 123/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 9592a9e8..d6e75702 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -84,7 +84,7 @@ public void run() { } else { //calculate blue unit value for stage 11 int blueUnitValue = 0; - int typeModifier = 1; + float typeModifier = 1; for (Unit u : Groups.unit) { if (u.team==Team.blue) { typeModifier = 1; From bf0f1c82171aed74127226902494c242885931f0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 12:21:53 +0300 Subject: [PATCH 124/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index d6e75702..0ced8d8f 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -97,7 +97,7 @@ public void run() { } else if (u.type == UnitTypes.omura) { typeModifier = 2; } else if (u.type == UnitTypes.navanax) { - typeModifier = 1.5; + typeModifier = 1.5f; } blueUnitValue = blueUnitValue + ((int)(u.type.health*typeModifier)); } From b5d1d513296a57d518df6bb3a80f8bca84501079 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 14:21:00 +0300 Subject: [PATCH 125/460] =?UTF-8?q?=D1=81=D0=BF=D0=B0=D0=BC=20=D1=8E=D0=BD?= =?UTF-8?q?=D0=B8=D1=82=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index a28c5b6c..6dfbbb38 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -81,13 +81,13 @@ private static void spawnCrux() { if (RedVsBluePlugin.stage >= 11) { Random rand = new Random(); - if (rand.nextInt(40) == 1) { + if (rand.nextInt(20) == 1) { UnitTypes.latum.spawn(Team.crux, cruxSpawn); } - if (rand.nextInt(50) == 1) { + if (rand.nextInt(20) == 1) { UnitTypes.conquer.spawn(Team.crux, cruxSpawn); } - if (rand.nextInt(25) == 1) { + if (rand.nextInt(7) == 1) { UnitTypes.tecta.spawn(Team.crux, cruxSpawn); } } From bd08b14dd886941803147fe5e6a6879eb0e57084 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 19:59:15 +0300 Subject: [PATCH 126/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 6dfbbb38..c5c6136a 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -41,6 +41,7 @@ public static void callSpawn(Player player) { if (RedVsBluePlugin.stage == 11) { unit.apply(StatusEffects.shielded, 600f); unit.apply(StatusEffects.overdrive, 99999f); + unit.apply(StatusEffects.fast, 99999f); } } @@ -84,7 +85,7 @@ private static void spawnCrux() { if (rand.nextInt(20) == 1) { UnitTypes.latum.spawn(Team.crux, cruxSpawn); } - if (rand.nextInt(20) == 1) { + if (rand.nextInt(13) == 1) { UnitTypes.conquer.spawn(Team.crux, cruxSpawn); } if (rand.nextInt(7) == 1) { @@ -101,6 +102,7 @@ private static void spawnCrux() { if (RedVsBluePlugin.stage == 11) { unit.apply(StatusEffects.shielded, 600f); unit.apply(StatusEffects.overdrive, 99999f); + unit.apply(StatusEffects.fast, 99999f); } } From 2223e1a62d25ab695c05853f3fc429437dcd4f3b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 6 Jan 2026 20:02:38 +0300 Subject: [PATCH 127/460] Update rvsb.json --- patches/rvsb.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 49be1148..c46c58e2 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -756,6 +756,10 @@ unit.crawler.weapons.0.shootStatus: noRegisterKills unit.crawler.weapons.0.shootStatusDuration: 1000 //update unit and block stats + +// Hit size +unit.vanquish.hitSize=16 + // Health unit.stell.health: 400 From 449bf26e1642e27f60c4abf7941cd3e35a1267e1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:23:05 +0300 Subject: [PATCH 128/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index c5c6136a..5da823ec 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -34,8 +34,8 @@ public static void callSpawn(Player player) { unit.health = Integer.MAX_VALUE; unit.apply(StatusEffects.overclock, 180);; - unit.apply(Vars.content.statusEffect("superShielded"), 60f); - unit.apply(Vars.content.statusEffect("shielded"), 120f); + unit.apply(Vars.content.statusEffect("superShielded"), 120f); + unit.apply(Vars.content.statusEffect("shielded"), 180f); if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { @@ -95,8 +95,8 @@ private static void spawnCrux() { Unit unit = unitType.spawn(Team.crux, cruxSpawn); - unit.apply(Vars.content.statusEffect("superShielded"), 60f); - unit.apply(Vars.content.statusEffect("shielded"), 120f); + unit.apply(Vars.content.statusEffect("superShielded"), 120f); + unit.apply(Vars.content.statusEffect("shielded"), 180f); if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { From 0f364925a69a57833fc1c101f4adfc7118e9667c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:24:16 +0300 Subject: [PATCH 129/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 0ced8d8f..b9251a78 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -431,10 +431,9 @@ public void init() { }); RedVsBluePlugin.redSpawns.remove(RedVsBluePlugin.redSpawns.firstOpt()); } + - if (tick%5==0) { - CruxUnit.checkUnitCount(); - } + CruxUnit.checkUnitCount(); if(tick%3==0){ From 51bdd4b6bd9f61a781ac8555c9504e6bb298c8ef Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:29:02 +0300 Subject: [PATCH 130/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index c46c58e2..cdf5ac35 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -758,7 +758,7 @@ unit.crawler.weapons.0.shootStatusDuration: 1000 //update unit and block stats // Hit size -unit.vanquish.hitSize=16 +unit.vanquish.hitSize: 16 // Health From d1eb1775914903b01f30f7bf53eac618d03aad6c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 00:13:45 +0300 Subject: [PATCH 131/460] Add files via upload --- patches/empirenewlegs.json | 234 +++++++++++++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 patches/empirenewlegs.json diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json new file mode 100644 index 00000000..e6ece2f4 --- /dev/null +++ b/patches/empirenewlegs.json @@ -0,0 +1,234 @@ +name: empire boss,evoke base + +unit.evoke: { +localizedName: Empire +region: "reign" + +parts: [ +{ +name: "reign" +xScl: 1.5 +yScl: 1.2 +layerOffset: -0.002 +} +{ +name: "scepter" +layerOffset: -0.001 +xScl: 1.1 +yScl: 1.1 +x: 10 +} +{ +name: "scepter" +layerOffset: -0.001 +xScl: 1.1 +yScl: 1.1 +x: -10 +} +{ +name: "scepter" +y: 8 +xScl: 1.5 +layerOffset: -0.003 +} +{ +name: "scepter" +xScl: 2.25 +y: -2 +layerOffset: -0.003 +} +] + +flying: false + +type: mech +legLength: 35 +legRegion: "reign-leg" + +hittable: true +fogRadius: 300 +coreUnitDock: false + + + +speed: 0.3f +aimDst: 15 +hitSize: 45f +health: 84001f +mechStepParticles: true +stepShake: 1.2f +drownTimeMultiplier: 4 +mechFrontSway: 1f +mechSideSway: 0.6f + +stepSound: mechStepHeavy +stepSoundPitch: 0.8 +stepSoundVolume: 0.7 + +weapons: [ +{ +name: "reign-weapon" +layerOffset: -0.0005 +top: true +y: 1 +x: 26 +y: 5 +parts: [ +{ +name: "reign-weapon" +layerOffset: 0.0001 +xScl: 1.6 +yScl: 1.1 +} +{ +name: "reign-weapon" +layerOffset: 0.0002 +xScl: 0.8 +yScl: 0.8 +} +{ +name: "scepter-weapon" +layerOffset: 0.0001 +xScl: 0.8 +yScl: 0.8 +y: -16 +} +{ +name: "scepter-weapon" +layerOffset: 0.0001 +xScl: 0.8 +yScl: 0.8 +y: 16 +} +] +shootY: 11 +reload: 50 +recoil: 8f +recoils: 1 +recoilTime: 50 +shake: 3.5 +ejectEffect: casing4 +shootSound: shootMalign + +bullet: { +damage: 400 +type: BasicBulletType +speed: 14 +width: 20 +height: 40 +lifetime: 25 +shootEffect: shootBig +hitEffect: blastExplosion +fragBullets: 1 +fragRandomSpread: 1 +fragLifeMin: 5 +fragLifeMax: 6 +despawnSound: shockBullet +lightning: 3 +lightningDamage: 150 +lightningLength: 14 +lightningColor: fffd7a +fragBullet: { +type: BasicBulletType +damage: 200 +width: 20 +height: 40 +lifetime: 4 +speed: 14 +pierce: true +pierceBuilding: true +pierceCap: 99999 +lightning: 3 +lightningDamage: 150 +lightningLength: 14 +lightningColor: fffd7a +despawnSound: explosion +} +} +} + +{ +name: "reign-weapon" +layerOffset: -0.0005 +top: true +y: 1 +x: -26 +y: 5 +parts: [ +{ +name: "reign-weapon" +layerOffset: 0.0001 +xScl: -1.6 +yScl: 1.1 +} +{ +name: "reign-weapon" +layerOffset: 0.0002 +xScl: -0.8 +yScl: 0.8 +} +{ +name: "scepter-weapon" +layerOffset: 0.0001 +xScl: -0.8 +yScl: 0.8 +y: -16 +} +{ +name: "scepter-weapon" +layerOffset: 0.0001 +xScl: -0.8 +yScl: 0.8 +y: 16 +} +] +shootY: 11 +reload: 50 +shoot : { +firstShotDelay: 25 +} +recoil: 8f +recoils: 1 +recoilTime: 50 +shake: 3.5 +ejectEffect: casing4 +shootSound: shootMalign + +bullet: { +damage: 400 +type: BasicBulletType +speed: 14 +width: 20 +height: 40 +lifetime: 25 +shootEffect: shootBig +hitEffect: blastExplosion +fragBullets: 1 +fragRandomSpread: 1 +fragLifeMin: 5 +fragLifeMax: 6 +despawnSound: shockBullet +lightning: 3 +lightningDamage: 150 +lightningLength: 14 +lightningColor: fffd7a +fragBullet: { +type: BasicBulletType +damage: 200 +width: 20 +height: 40 +lifetime: 4 +speed: 14 +pierce: true +pierceBuilding: true +pierceCap: 99999 +lightning: 3 +lightningDamage: 150 +lightningLength: 14 +lightningColor: fffd7a +despawnSound: explosion +} +} +} +] +} From 22de5c2dc9416a93d0571a72dc3f7a759578cde0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:41:30 +0300 Subject: [PATCH 132/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 5da823ec..6a5d3982 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -34,7 +34,7 @@ public static void callSpawn(Player player) { unit.health = Integer.MAX_VALUE; unit.apply(StatusEffects.overclock, 180);; - unit.apply(Vars.content.statusEffect("superShielded"), 120f); + //unit.apply(Vars.content.statusEffect("superShielded"), 120f); unit.apply(Vars.content.statusEffect("shielded"), 180f); if (unit.type == UnitTypes.obviate) { @@ -95,7 +95,7 @@ private static void spawnCrux() { Unit unit = unitType.spawn(Team.crux, cruxSpawn); - unit.apply(Vars.content.statusEffect("superShielded"), 120f); + //unit.apply(Vars.content.statusEffect("superShielded"), 120f); unit.apply(Vars.content.statusEffect("shielded"), 180f); if (unit.type == UnitTypes.obviate) { From 27dbdc15df80243f3e57e59f7f57e18623411470 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 14:38:21 +0300 Subject: [PATCH 133/460] Add files via upload --- patches/empirenewlegs.json | 178 +++++++++++++++++++++++++++++++++---- 1 file changed, 160 insertions(+), 18 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index e6ece2f4..eca23971 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -41,6 +41,8 @@ layerOffset: -0.003 flying: false +controller: groundAI + type: mech legLength: 35 legRegion: "reign-leg" @@ -48,13 +50,24 @@ legRegion: "reign-leg" hittable: true fogRadius: 300 coreUnitDock: false - +targetAir: true +targetGround: true +playerControllable: true +logicControllable: true +targetable: true +autoFindTarget: true +useUnitCap: true +createScorch: true +uiIcon: "unit-reign-ui" speed: 0.3f -aimDst: 15 +range: 350 +maxRange: 450 +rotateSpeed: 0.6 +aimDst: 120 hitSize: 45f -health: 84001f +health: 84000 mechStepParticles: true stepShake: 1.2f drownTimeMultiplier: 4 @@ -101,7 +114,7 @@ yScl: 0.8 y: 16 } ] -shootY: 11 +shootY: 16 reload: 50 recoil: 8f recoils: 1 @@ -111,11 +124,13 @@ ejectEffect: casing4 shootSound: shootMalign bullet: { -damage: 400 +damage: 60 +splashDamage: 350 +splashDamageRadius: 30 type: BasicBulletType speed: 14 width: 20 -height: 40 +height: 80 lifetime: 25 shootEffect: shootBig hitEffect: blastExplosion @@ -125,12 +140,12 @@ fragLifeMin: 5 fragLifeMax: 6 despawnSound: shockBullet lightning: 3 -lightningDamage: 150 +lightningDamage: 30 lightningLength: 14 lightningColor: fffd7a fragBullet: { type: BasicBulletType -damage: 200 +damage: 100 width: 20 height: 40 lifetime: 4 @@ -138,8 +153,8 @@ speed: 14 pierce: true pierceBuilding: true pierceCap: 99999 -lightning: 3 -lightningDamage: 150 +lightning: 1 +lightningDamage: 20 lightningLength: 14 lightningColor: fffd7a despawnSound: explosion @@ -182,7 +197,7 @@ yScl: 0.8 y: 16 } ] -shootY: 11 +shootY: 16 reload: 50 shoot : { firstShotDelay: 25 @@ -195,11 +210,13 @@ ejectEffect: casing4 shootSound: shootMalign bullet: { -damage: 400 +damage: 60 +splashDamage: 350 +splashDamageRadius: 30 type: BasicBulletType speed: 14 width: 20 -height: 40 +height: 80 lifetime: 25 shootEffect: shootBig hitEffect: blastExplosion @@ -209,12 +226,12 @@ fragLifeMin: 5 fragLifeMax: 6 despawnSound: shockBullet lightning: 3 -lightningDamage: 150 +lightningDamage: 30 lightningLength: 14 lightningColor: fffd7a fragBullet: { type: BasicBulletType -damage: 200 +damage: 100 width: 20 height: 40 lifetime: 4 @@ -222,13 +239,138 @@ speed: 14 pierce: true pierceBuilding: true pierceCap: 99999 -lightning: 3 -lightningDamage: 150 +lightning: 1 +lightningDamage: 20 lightningLength: 14 lightningColor: fffd7a despawnSound: explosion } } -} +} + +{ +name: "large-laser-mount" +layerOffset: 0.05 +parts: { +name: "scepter-weapon" +layerOffset: 0.06 +} +x: 12 +y: -8 +shootY: 6 +rotate: true +autoTarget: true +alwaysShooting: true +controllable: false +reload: 720 +rotateSpeed: 99999 +targetInterval: 180 +shake: 4 +recoil: 6 +recoils: 1 +recoilTime: 60 +inaccuracy: 12f +velocityRnd: 0.2 +shootSound: shootArtillery +shoot: { +firstShotDelay: 30 +shots: 6 +} +bullet: { +type: artilleryBulletType +range: 99999999 +width: 15 +height: 15 +speed: 4 +lifetime: 9999 +fragBullets: 1 +fragLifeMin: 2.5 +fragBullet: { +type: basicBulletType +speed: 0 +lifetime: 60 +collides: false +despawnEffect: unitCapKill +despawnSound: uiUnlock +width: 15 +height: 15 +fragBullets: 1 +fragBullet: { +type: basicBulletType +speed: 0 +lifetime: 60 +collides: false +despawnEffect: unitCapKill +despawnSound: uiUnlock +width: 15 +height: 15 +fragBullets: 1 +fragBullet: { +type: basicBulletType +speed: 0 +lifetime: 60 +collides: false +despawnEffect: unitCapKill +despawnSound: uiUnlock +width: 15 +height: 15 +fragBullets: 1 +fragBullet: { +type: basicBulletType +speed: 0 +lifetime: 60 +collides: false +despawnEffect: unitCapKill +despawnSound: uiUnlock +width: 15 +height: 15 +fragBullets: 1 +fragBullet: { +type: basicBulletType +width: 10 +height: 10 +speed: 0 +lifetime: 90 +collides: false +despawnEffect: none +fragBullets: 1 +fragBullet: { +type: explosionBulletType +despawnEffect: { +type: ExplosionEffect +lifetime: 50f +waveStroke: 5f +waveLife: 24f +waveColor: ffff6b +sparkColor: ffff6b +smokeColor: ffffff +waveRad: 64f +smokeSize: 4f +smokes: 21 +smokeSizeBase: 0f +sparks: 30 +sparkRad: 64f +sparkLen: 5f +sparkStroke: 2f +} +despawnHit: true +lightning: 3 +lightningLength: 24 +lightningDamage: 24 +lightningColor: ffff6b +hitSound: explosionMissile +killShooter: false +splashDamage: 2500 +scaledSplashDamage: true +splashDamageRadius: 45 +buildingDamageMultiplier: 999 +} +} +} +} +} +} +} +} ] } From c9dc1042fabcb5ea4364d483361db9f97e8b2bbe Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 14:57:04 +0300 Subject: [PATCH 134/460] Add files via upload --- patches/empirenewlegs.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index eca23971..f9b7cbc0 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -125,7 +125,7 @@ shootSound: shootMalign bullet: { damage: 60 -splashDamage: 350 +splashDamage: 300 splashDamageRadius: 30 type: BasicBulletType speed: 14 @@ -211,7 +211,7 @@ shootSound: shootMalign bullet: { damage: 60 -splashDamage: 350 +splashDamage: 300 splashDamageRadius: 30 type: BasicBulletType speed: 14 @@ -270,13 +270,15 @@ recoil: 6 recoils: 1 recoilTime: 60 inaccuracy: 12f -velocityRnd: 0.2 +velocityRnd: 0.4 +extraVelocity: 0.4 shootSound: shootArtillery shoot: { firstShotDelay: 30 -shots: 6 +shots: 18 } bullet: { +collidesAir: true type: artilleryBulletType range: 99999999 width: 15 @@ -336,6 +338,7 @@ despawnEffect: none fragBullets: 1 fragBullet: { type: explosionBulletType +collidesAir: true despawnEffect: { type: ExplosionEffect lifetime: 50f From a7fa169213daa4860ef4a919546b9130e7b80db9 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 15:08:45 +0300 Subject: [PATCH 135/460] empire boss final --- patches/empirenewlegs.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index f9b7cbc0..b137c192 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -249,12 +249,18 @@ despawnSound: explosion } { -name: "large-laser-mount" layerOffset: 0.05 -parts: { +parts: [ +{ name: "scepter-weapon" +layerOffset: 0.061 +} +{ +name: "sei-launcher" layerOffset: 0.06 +xScl: 0.7 } +] x: 12 y: -8 shootY: 6 From c1ee100e9eee0b2c825a80a413759298f3c8fcca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 15:23:06 +0300 Subject: [PATCH 136/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index b137c192..7c28d4c2 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -152,6 +152,7 @@ lifetime: 4 speed: 14 pierce: true pierceBuilding: true +hitSound: shockBullet pierceCap: 99999 lightning: 1 lightningDamage: 20 @@ -238,6 +239,7 @@ lifetime: 4 speed: 14 pierce: true pierceBuilding: true +hitSound: shockBullet pierceCap: 99999 lightning: 1 lightningDamage: 20 @@ -383,3 +385,4 @@ buildingDamageMultiplier: 999 } ] } + From 07fc5b36d11baf090b67113cec42139b834ea844 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 17:12:56 +0300 Subject: [PATCH 137/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 7c28d4c2..0cb517ed 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -1,4 +1,4 @@ -name: empire boss,evoke base +name: empire boss by alphy,evoke base unit.evoke: { localizedName: Empire @@ -386,3 +386,4 @@ buildingDamageMultiplier: 999 ] } + From 58330d7ec9302e891e1b2347ee9d23805a12aa2c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 9 Jan 2026 17:13:43 +0300 Subject: [PATCH 138/460] Update StageUnits.java --- .../java/net/voiddustry/redvsblue/game/crux/StageUnits.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java index 6db2638c..320b1668 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/StageUnits.java @@ -73,7 +73,7 @@ public class StageUnits { 8, UnitTypes.tecta, 9, UnitTypes.vanquish, 10, UnitTypes.eclipse, - 11, UnitTypes.conquer, + 11, UnitTypes.evoke, 12, UnitTypes.navanax ); } From 03a7541516f8f8eb81f277e1607c07a18a7fa176 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 10 Jan 2026 22:07:57 +0300 Subject: [PATCH 139/460] Update Recycler.java --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index 9c7cbd90..478c27d2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -39,7 +39,7 @@ public static void initTimer() { if (p.team() == Team.blue && p.unit() != null) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { - if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { + if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.blastCompound && p.unit().type == UnitTypes.reign) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { int add = p.unit().stack.amount/20; Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); p.unit().stack.amount -= add * 20; From d3b2d8e158fd9383fc6e806570a40998199f1d84 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:43:31 +0300 Subject: [PATCH 140/460] no --- .../net/voiddustry/redvsblue/game/crux/CruxUnit.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 6a5d3982..bcd77605 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -79,8 +79,16 @@ private static void spawnCrux() { if (cruxSpawn != null && cruxSpawn.block() != null) { Call.logicExplosion(Team.crux, cruxSpawn.x*8, cruxSpawn.y*8, 80, 999999, true, true, true, true); } + + boolean s11BossAlive = true; + + for (Unit u : Groups.unit) { + if (u.type==UnitTypes.evoke) { + s11BossDead = false; + } + } - if (RedVsBluePlugin.stage >= 11) { + if (RedVsBluePlugin.stage >= 11 && s11BossDead) { Random rand = new Random(); if (rand.nextInt(20) == 1) { UnitTypes.latum.spawn(Team.crux, cruxSpawn); From d10c095b4d18a28c99c291c2ce1b528aaaa22406 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:47:02 +0300 Subject: [PATCH 141/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b9251a78..4f583697 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -103,7 +103,7 @@ public void run() { } } Log.info("Blue unit value for stage 11: " + blueUnitValue); - if (blueUnitValue < 60000) { + if (blueUnitValue < 75000) { gameOver(Team.blue); } else { stage11 = true; From 72b7f930e64c63be081bcbaf31ca3005df327610 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:50:04 +0300 Subject: [PATCH 142/460] Update CruxUnit.java --- .../redvsblue/game/crux/CruxUnit.java | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index bcd77605..38afc96a 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -80,24 +80,29 @@ private static void spawnCrux() { Call.logicExplosion(Team.crux, cruxSpawn.x*8, cruxSpawn.y*8, 80, 999999, true, true, true, true); } - boolean s11BossAlive = true; + boolean s11BossDead = true; - for (Unit u : Groups.unit) { - if (u.type==UnitTypes.evoke) { - s11BossDead = false; - } - } - - if (RedVsBluePlugin.stage >= 11 && s11BossDead) { - Random rand = new Random(); - if (rand.nextInt(20) == 1) { - UnitTypes.latum.spawn(Team.crux, cruxSpawn); - } - if (rand.nextInt(13) == 1) { - UnitTypes.conquer.spawn(Team.crux, cruxSpawn); + if (RedVsBluePlugin.stage >= 11) { + + boolean s11BossDead = true; + + for (Unit u : Groups.unit) { + if (u.type==UnitTypes.evoke) { + s11BossDead = false; + } } - if (rand.nextInt(7) == 1) { - UnitTypes.tecta.spawn(Team.crux, cruxSpawn); + + if (s11BossDead) { + Random rand = new Random(); + if (rand.nextInt(20) == 1) { + UnitTypes.latum.spawn(Team.crux, cruxSpawn); + } + if (rand.nextInt(13) == 1) { + UnitTypes.conquer.spawn(Team.crux, cruxSpawn); + } + if (rand.nextInt(7) == 1) { + UnitTypes.tecta.spawn(Team.crux, cruxSpawn); + } } } From 9ce01e77194c3ca6a7bef55ff329a373ea51067c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 14:51:21 +0300 Subject: [PATCH 143/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 38afc96a..91841d7b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -80,8 +80,6 @@ private static void spawnCrux() { Call.logicExplosion(Team.crux, cruxSpawn.x*8, cruxSpawn.y*8, 80, 999999, true, true, true, true); } - boolean s11BossDead = true; - if (RedVsBluePlugin.stage >= 11) { boolean s11BossDead = true; From 5fc52b24ca41f5fb6551adfc2cd30bb767be8cc0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 15:18:58 +0300 Subject: [PATCH 144/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 0cb517ed..47b33726 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -67,7 +67,7 @@ maxRange: 450 rotateSpeed: 0.6 aimDst: 120 hitSize: 45f -health: 84000 +health: 58000 mechStepParticles: true stepShake: 1.2f drownTimeMultiplier: 4 @@ -387,3 +387,4 @@ buildingDamageMultiplier: 999 } + From 81c17f5952eb5e7fbf4eb6e4c6fb6a0b22f8132c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 20:19:02 +0300 Subject: [PATCH 145/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 47b33726..26cd0b61 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -67,7 +67,7 @@ maxRange: 450 rotateSpeed: 0.6 aimDst: 120 hitSize: 45f -health: 58000 +health: 72000 mechStepParticles: true stepShake: 1.2f drownTimeMultiplier: 4 @@ -388,3 +388,4 @@ buildingDamageMultiplier: 999 + From d86150988ef5c72557ade56b817eeae9d0a47f2f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:09:35 +0300 Subject: [PATCH 146/460] moar shielded --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 91841d7b..b00fa12d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -35,7 +35,7 @@ public static void callSpawn(Player player) { unit.apply(StatusEffects.overclock, 180);; //unit.apply(Vars.content.statusEffect("superShielded"), 120f); - unit.apply(Vars.content.statusEffect("shielded"), 180f); + unit.apply(Vars.content.statusEffect("shielded"), 300f); if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { @@ -107,7 +107,7 @@ private static void spawnCrux() { Unit unit = unitType.spawn(Team.crux, cruxSpawn); //unit.apply(Vars.content.statusEffect("superShielded"), 120f); - unit.apply(Vars.content.statusEffect("shielded"), 180f); + unit.apply(Vars.content.statusEffect("shielded"), 300f); if (unit.type == UnitTypes.obviate) { if (RedVsBluePlugin.stage == 11) { From eff947f8127efaa96e5e06f26505b8a853fff2ce Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 22:32:38 +0300 Subject: [PATCH 147/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index cdf5ac35..f6c119ff 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -746,7 +746,7 @@ backColor: 99ff99 frontColor: ffffff healPercent: 5f collidesTeam: true -damage: 20f +damage: 30f ammoMultiplier: 2 } } From 7d9bd9da4569fd128cd0b8c9d9d8eac8f7ec2845 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:15:40 +0300 Subject: [PATCH 148/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 26cd0b61..620dfa17 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -67,7 +67,7 @@ maxRange: 450 rotateSpeed: 0.6 aimDst: 120 hitSize: 45f -health: 72000 +health: 62000 mechStepParticles: true stepShake: 1.2f drownTimeMultiplier: 4 @@ -270,7 +270,7 @@ rotate: true autoTarget: true alwaysShooting: true controllable: false -reload: 720 +reload: 900 rotateSpeed: 99999 targetInterval: 180 shake: 4 @@ -283,7 +283,7 @@ extraVelocity: 0.4 shootSound: shootArtillery shoot: { firstShotDelay: 30 -shots: 18 +shots: 10 } bullet: { collidesAir: true @@ -371,7 +371,7 @@ lightningDamage: 24 lightningColor: ffff6b hitSound: explosionMissile killShooter: false -splashDamage: 2500 +splashDamage: 3000 scaledSplashDamage: true splashDamageRadius: 45 buildingDamageMultiplier: 999 @@ -389,3 +389,4 @@ buildingDamageMultiplier: 999 + From a25e47bef4725514f2860d943e31c1b9f5f6182a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 13:42:50 +0300 Subject: [PATCH 149/460] stage 11 nerf be like --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 4f583697..6e0e43d6 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -103,7 +103,7 @@ public void run() { } } Log.info("Blue unit value for stage 11: " + blueUnitValue); - if (blueUnitValue < 75000) { + if (blueUnitValue < 100000) { gameOver(Team.blue); } else { stage11 = true; From 0bc2573ed9b847ce974238351f02ca5e053f3f34 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 19:52:25 +0300 Subject: [PATCH 150/460] huh --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 6e0e43d6..91cfb6d3 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -324,6 +324,8 @@ public void init() { BuildBlock.clear(); Boss.bosses.clear(); + + initRules(); StartingMenu.canOpenMenu = true; @@ -399,6 +401,7 @@ public void init() { launchGameStartTimer(); spawnedUnitOwnership.clear(); + killCredit.clear(); Call.setRules(Vars.state.rules); From cdbb9e215a317950918b33d36da9a49411c7b817 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:16:09 +0300 Subject: [PATCH 151/460] stupid command --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 91cfb6d3..5b2544ee 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -313,6 +313,10 @@ public void init() { + int restartCounter = 0; + int gamesUntilRestart = 1; + + Events.on(EventType.WorldLoadEvent.class, event -> { Miner.clearMiners(); RepairPoint.clearPoints(); @@ -406,12 +410,21 @@ public void init() { Call.setRules(Vars.state.rules); + restartCounter = restartCounter+1; + if (restartCounter >= gamesUntilRestart) { + Call.announce("[scarlet] server is restarting") + timer.schedule(() -> { + net.dispose(); + Core.app.exit(); + }, 7); + } + }, 10)); - StatusEffect superShielded = new StatusEffect("superShielded") {{ - show = false; - healthMultiplier = 9; - }}; + // StatusEffect superShielded = new StatusEffect("superShielded") {{ + // show = false; + // healthMultiplier = 9; + // }}; Events.run(EventType.Trigger.update, () -> { tick++; @@ -618,6 +631,18 @@ public void registerServerCommands(CommandHandler handler) { Log.info("Failed to set stage"); } }); + + + handler.register("autorestart","," ,"Sets rvsb stage", (args) -> { + try { + if (args[0] == "yes") { + gamesUntilRestart = args[1]; + } else { + gamesUntilRestart = 2000000; + } + } catch (Exception e) { + Log.info("A mysterious error has appeared while executing the command"); + } } From 276adb2e833fd48a2c547b5a0d094f3aab5badee Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:19:36 +0300 Subject: [PATCH 152/460] f --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 5b2544ee..132b3c3d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -412,7 +412,7 @@ public void init() { restartCounter = restartCounter+1; if (restartCounter >= gamesUntilRestart) { - Call.announce("[scarlet] server is restarting") + Call.announce("[scarlet] server is restarting"); timer.schedule(() -> { net.dispose(); Core.app.exit(); From 16f0106ca70d277bbd26d9900aac1c2f850223d6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:20:45 +0300 Subject: [PATCH 153/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 132b3c3d..4dc73f1e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -643,7 +643,7 @@ public void registerServerCommands(CommandHandler handler) { } catch (Exception e) { Log.info("A mysterious error has appeared while executing the command"); } - } + }); public static void gameOverCheck() { From 9f18a8beea9dbf357812d95be422cd20743aae38 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:22:16 +0300 Subject: [PATCH 154/460] fucking ass syntax --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 4dc73f1e..b06e7f2d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -643,8 +643,8 @@ public void registerServerCommands(CommandHandler handler) { } catch (Exception e) { Log.info("A mysterious error has appeared while executing the command"); } - }); - + }); + } public static void gameOverCheck() { int blueUnitCount = 0; From 86b39f235b18aae48dc9f4918611ea2cece936b7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:31:56 +0300 Subject: [PATCH 155/460] Update RedVsBluePlugin.java --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b06e7f2d..e1acc6d0 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -1,6 +1,7 @@ package net.voiddustry.redvsblue; import arc.Events; +import arc.Core; import arc.graphics.Color; import arc.struct.Seq; @@ -21,6 +22,7 @@ import mindustry.type.UnitType; import mindustry.ui.Menus; import mindustry.world.Tile; +import mindustry.net; import net.voiddustry.redvsblue.admin.Admin; import net.voiddustry.redvsblue.ai.AirAI; import net.voiddustry.redvsblue.ai.BluePlayerTarget; @@ -72,6 +74,9 @@ public class RedVsBluePlugin extends Plugin { public static boolean stage11 = false; + public int restartCounter = 0; + public int gamesUntilRestart = 1; + static Timer.Task task = new Timer.Task() { @Override public void run() { @@ -313,8 +318,7 @@ public void init() { - int restartCounter = 0; - int gamesUntilRestart = 1; + Events.on(EventType.WorldLoadEvent.class, event -> { @@ -344,6 +348,17 @@ public void init() { data.setScore(0); } }); + + + restartCounter = restartCounter+1; + if (restartCounter >= gamesUntilRestart) { + Call.announce("[scarlet] server is restarting"); + timer.schedule(() -> { + net.dispose(); + Core.app.exit(); + }, 7); + } + }); Events.on(EventType.WorldLoadEvent.class, event -> Timer.schedule(() -> { @@ -410,14 +425,6 @@ public void init() { Call.setRules(Vars.state.rules); - restartCounter = restartCounter+1; - if (restartCounter >= gamesUntilRestart) { - Call.announce("[scarlet] server is restarting"); - timer.schedule(() -> { - net.dispose(); - Core.app.exit(); - }, 7); - } }, 10)); @@ -622,7 +629,12 @@ public void registerServerCommands(CommandHandler handler) { // } // }); - handler.register("restart", "ae", (args) -> Groups.player.each(p -> p.kick("[scarlet]Server is going to restart"))); + handler.register("restart", "now actually works", (args) -> { + Groups.player.each(p -> p.kick("[scarlet]Server is going to restart")); + Log.info("Server is restarting") + net.dispose(); + Core.app.exit(); + }); handler.register("setstage","" ,"Sets rvsb stage", (args) -> { try { @@ -633,7 +645,7 @@ public void registerServerCommands(CommandHandler handler) { }); - handler.register("autorestart","," ,"Sets rvsb stage", (args) -> { + handler.register("autorestart","," ,"self explanatory", (args) -> { try { if (args[0] == "yes") { gamesUntilRestart = args[1]; From 5b93f25fc5d10bf062e8d684607d3048e2ca180f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:32:57 +0300 Subject: [PATCH 156/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index e1acc6d0..17d1bbe2 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -631,7 +631,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("restart", "now actually works", (args) -> { Groups.player.each(p -> p.kick("[scarlet]Server is going to restart")); - Log.info("Server is restarting") + Log.info("Server is restarting"); net.dispose(); Core.app.exit(); }); From d954c2b66c0855b36b3f094421889228d5563820 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:35:16 +0300 Subject: [PATCH 157/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 17d1bbe2..6507b700 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -22,7 +22,7 @@ import mindustry.type.UnitType; import mindustry.ui.Menus; import mindustry.world.Tile; -import mindustry.net; +import mindustry.net.*; import net.voiddustry.redvsblue.admin.Admin; import net.voiddustry.redvsblue.ai.AirAI; import net.voiddustry.redvsblue.ai.BluePlayerTarget; From 06ae049625d557cc2bf40ad0e7c1218cee24103e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:44:17 +0300 Subject: [PATCH 158/460] the spaghetti method --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 6507b700..72fcfc83 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -23,6 +23,7 @@ import mindustry.ui.Menus; import mindustry.world.Tile; import mindustry.net.*; +import mindustry.core.Control; import net.voiddustry.redvsblue.admin.Admin; import net.voiddustry.redvsblue.ai.AirAI; import net.voiddustry.redvsblue.ai.BluePlayerTarget; @@ -352,9 +353,10 @@ public void init() { restartCounter = restartCounter+1; if (restartCounter >= gamesUntilRestart) { - Call.announce("[scarlet] server is restarting"); - timer.schedule(() -> { - net.dispose(); + Call.announce("[scarlet]The server is restarting"); + Timer timerr = new Timer() + timerr.schedule(() -> { + Control.dispose(); Core.app.exit(); }, 7); } @@ -632,7 +634,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("restart", "now actually works", (args) -> { Groups.player.each(p -> p.kick("[scarlet]Server is going to restart")); Log.info("Server is restarting"); - net.dispose(); + Control.dispose(); Core.app.exit(); }); @@ -648,7 +650,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("autorestart","," ,"self explanatory", (args) -> { try { if (args[0] == "yes") { - gamesUntilRestart = args[1]; + gamesUntilRestart = Integer.parseInt(args[1]); } else { gamesUntilRestart = 2000000; } From a5df32e5d6019a6a83ac23cd903a46840d108dd8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:46:15 +0300 Subject: [PATCH 159/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 72fcfc83..ccce1c8e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -354,7 +354,7 @@ public void init() { restartCounter = restartCounter+1; if (restartCounter >= gamesUntilRestart) { Call.announce("[scarlet]The server is restarting"); - Timer timerr = new Timer() + Timer timerr = new Timer(); timerr.schedule(() -> { Control.dispose(); Core.app.exit(); From e157626ae426c284b57ab50dfd02827653735fec Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:58:42 +0300 Subject: [PATCH 160/460] Update RedVsBluePlugin.java --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ccce1c8e..8338a334 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -23,7 +23,6 @@ import mindustry.ui.Menus; import mindustry.world.Tile; import mindustry.net.*; -import mindustry.core.Control; import net.voiddustry.redvsblue.admin.Admin; import net.voiddustry.redvsblue.ai.AirAI; import net.voiddustry.redvsblue.ai.BluePlayerTarget; @@ -356,7 +355,8 @@ public void init() { Call.announce("[scarlet]The server is restarting"); Timer timerr = new Timer(); timerr.schedule(() -> { - Control.dispose(); + //net.dispose(); where do you find this mythical method + Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); Core.app.exit(); }, 7); } @@ -632,9 +632,8 @@ public void registerServerCommands(CommandHandler handler) { // }); handler.register("restart", "now actually works", (args) -> { - Groups.player.each(p -> p.kick("[scarlet]Server is going to restart")); + Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); Log.info("Server is restarting"); - Control.dispose(); Core.app.exit(); }); From 5db58b467a6097b26410e3352181155f90728b87 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:01:00 +0300 Subject: [PATCH 161/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 8338a334..751186bd 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -646,7 +646,7 @@ public void registerServerCommands(CommandHandler handler) { }); - handler.register("autorestart","," ,"self explanatory", (args) -> { + handler.register("autorestart","" ,"self explanatory", (args) -> { try { if (args[0] == "yes") { gamesUntilRestart = Integer.parseInt(args[1]); From 2237c9c536b39b25215fcf05877126524fcca2bd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:02:34 +0300 Subject: [PATCH 162/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 751186bd..001f56ff 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -646,7 +646,7 @@ public void registerServerCommands(CommandHandler handler) { }); - handler.register("autorestart","" ,"self explanatory", (args) -> { + handler.register("autorestart"," " ,"self explanatory", (args) -> { try { if (args[0] == "yes") { gamesUntilRestart = Integer.parseInt(args[1]); From 4f0c9fc08d458ec2d57c6bda684c7997aa0d85db Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:05:50 +0300 Subject: [PATCH 163/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 001f56ff..1f396352 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -646,7 +646,7 @@ public void registerServerCommands(CommandHandler handler) { }); - handler.register("autorestart"," " ,"self explanatory", (args) -> { + handler.register("autorestart", " ", "self explanatory", (args) -> { try { if (args[0] == "yes") { gamesUntilRestart = Integer.parseInt(args[1]); From dba3a20759ef8c64eec1d130bb8ddd598021b819 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:09:55 +0300 Subject: [PATCH 164/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 1f396352..317bdf61 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -75,7 +75,7 @@ public class RedVsBluePlugin extends Plugin { public static boolean stage11 = false; public int restartCounter = 0; - public int gamesUntilRestart = 1; + public int gamesUntilRestart = 2000000; static Timer.Task task = new Timer.Task() { @Override From 762ba4617ffb081c2bf96c1d62e7dbbfda65ab1c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:10:36 +0300 Subject: [PATCH 165/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 317bdf61..033d777f 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -75,7 +75,7 @@ public class RedVsBluePlugin extends Plugin { public static boolean stage11 = false; public int restartCounter = 0; - public int gamesUntilRestart = 2000000; + public int gamesUntilRestart = 8; static Timer.Task task = new Timer.Task() { @Override From 97d362900c22fdf6b5d0133ccf22bfa2ba6b713f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 09:30:49 +0300 Subject: [PATCH 166/460] Update RedVsBluePlugin.java --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 033d777f..2fe24bdf 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -352,12 +352,10 @@ public void init() { restartCounter = restartCounter+1; if (restartCounter >= gamesUntilRestart) { - Call.announce("[scarlet]The server is restarting"); - Timer timerr = new Timer(); - timerr.schedule(() -> { - //net.dispose(); where do you find this mythical method - Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); - Core.app.exit(); + Log.info("[scarlet]The server is restarting"); + //net.dispose(); where do you find this mythical method + Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); + Core.app.exit(); }, 7); } From cacac16a8ae1e976d3b6e47b0acc1a802ad01a10 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 09:39:50 +0300 Subject: [PATCH 167/460] Update RedVsBluePlugin.java --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 2fe24bdf..28a81cf8 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -348,8 +348,7 @@ public void init() { data.setScore(0); } }); - - + Log.info("Games until restart: "+(gamesUntilRestart-restartCounter)); restartCounter = restartCounter+1; if (restartCounter >= gamesUntilRestart) { Log.info("[scarlet]The server is restarting"); @@ -480,12 +479,6 @@ public void init() { } } } - - Groups.bullet.forEach(bullet -> { - if (bullet.lifetime == 59f){ - Call.effect(Fx.shootHeal, bullet.x, bullet.y, bullet.rotation(), Color.cyan); - } - }); } } }); @@ -647,8 +640,10 @@ public void registerServerCommands(CommandHandler handler) { handler.register("autorestart", " ", "self explanatory", (args) -> { try { if (args[0] == "yes") { + Log.info("Games until restart: "+Integer.parseInt(args[1])) gamesUntilRestart = Integer.parseInt(args[1]); } else { + Log.info("Autorestart disabled") gamesUntilRestart = 2000000; } } catch (Exception e) { From ef57c95f7a1ef929fb19f369176b0cab19c8a0f4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 09:40:20 +0300 Subject: [PATCH 168/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 28a81cf8..364c2553 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -355,7 +355,6 @@ public void init() { //net.dispose(); where do you find this mythical method Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); Core.app.exit(); - }, 7); } }); From 7f10c5d11e40bd8088b232c7403d113030d276da Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 09:43:07 +0300 Subject: [PATCH 169/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 364c2553..1b6f076e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -639,10 +639,10 @@ public void registerServerCommands(CommandHandler handler) { handler.register("autorestart", " ", "self explanatory", (args) -> { try { if (args[0] == "yes") { - Log.info("Games until restart: "+Integer.parseInt(args[1])) + Log.info("Games until restart: "+Integer.parseInt(args[1])); gamesUntilRestart = Integer.parseInt(args[1]); } else { - Log.info("Autorestart disabled") + Log.info("Autorestart disabled"); gamesUntilRestart = 2000000; } } catch (Exception e) { From 996848010a114c291826795b171ff564702cb5d6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 09:46:32 +0300 Subject: [PATCH 170/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 1b6f076e..c55c8d1d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -638,7 +638,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("autorestart", " ", "self explanatory", (args) -> { try { - if (args[0] == "yes") { + if (args[0].trim().contains("yes")) { Log.info("Games until restart: "+Integer.parseInt(args[1])); gamesUntilRestart = Integer.parseInt(args[1]); } else { From 2cad39a9ef575b52847dc95949c0387d9b16b03c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:50:58 +0300 Subject: [PATCH 171/460] Create empireReplacement.json --- patches/empireReplacement.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 patches/empireReplacement.json diff --git a/patches/empireReplacement.json b/patches/empireReplacement.json new file mode 100644 index 00000000..f018b083 --- /dev/null +++ b/patches/empireReplacement.json @@ -0,0 +1,15 @@ +name: "temporary boss replacement" + +unit.evoke.weapons: [ { +reload: 69420 +alwaysShooting: true +shoot: { + shots: 4 +} +bullet: { + lifetime: 1 + spawnUnit: eclipse + killShooter: true + } +} +] From a525085b5d82da9862b55910b317cc408c8b3b5a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:57:32 +0300 Subject: [PATCH 172/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c55c8d1d..e38af20e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -75,7 +75,7 @@ public class RedVsBluePlugin extends Plugin { public static boolean stage11 = false; public int restartCounter = 0; - public int gamesUntilRestart = 8; + public int gamesUntilRestart = 2000000; static Timer.Task task = new Timer.Task() { @Override From 38937cfee7d466d7ec2de5a68e16ad06dcb4f5e7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:20:27 +0300 Subject: [PATCH 173/460] fuck --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index 478c27d2..bc0cb109 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -39,7 +39,7 @@ public static void initTimer() { if (p.team() == Team.blue && p.unit() != null) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { - if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.blastCompound && p.unit().type == UnitTypes.reign) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { + if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.spiroct) || (p.unit().stack.item == Items.blastCompound && p.unit().type == UnitTypes.reign) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { int add = p.unit().stack.amount/20; Utils.label(p.x, p.y, "[#023919]+" + add, 3, 0.8F); p.unit().stack.amount -= add * 20; From ea25d661100286fdb7b05944824a6088b2133aac Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:24:21 +0300 Subject: [PATCH 174/460] evolution rebalance 1 --- .../redvsblue/evolution/Evolution.java | 109 +++++++++--------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index f5122174..3ebde4a1 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -7,69 +7,72 @@ public enum Evolution { - DAGGER(UnitTypes.dagger, 1, 2*multp, new String[] { "atrax", "mace", "elude", "flare", "nova", "mono" }), - NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "elude", "flare", "dagger", "mono" }), - ELUDE(UnitTypes.elude, 1, 10*multp, new String[] { "atrax", "nova", "flare", "dagger", "mono" }), - FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "elude", "dagger", "mono" }), - MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "elude", "dagger" }), - - PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }), - ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }), - RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }), - POLY(UnitTypes.poly, 2, 21*multp, new String[] { "retusa" }), - - MACE(UnitTypes.mace, 3, 20*multp, new String[] { "fortress"}), - QUASAR(UnitTypes.quasar, 3, 60*multp, new String[] { "vela" }), - CLEROI(UnitTypes.cleroi, 3, 65*multp, new String[] { "spiroct" }), - ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }), - RETUSA(UnitTypes.retusa, 3, 15*multp, new String[] { "oxynoe" }), - - FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }), - VELA(UnitTypes.vela, 4, 170*multp, new String[] { "corvus" }), - SPIROCT(UnitTypes.spiroct, 4, 95*multp, new String[] { "toxopid" }), - MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }), - OXYNOE(UnitTypes.oxynoe, 4, 35*multp, new String[] { "mega" }), - - LOCUS(UnitTypes.locus, 5, 55*multp, new String[] { "precept" }), - CORVUS(UnitTypes.corvus, 5, 300*multp, new String[] { "aegires" }), - MEGA(UnitTypes.mega, 5, 100*multp, new String[] { "cyerce" }), - - PRECEPT(UnitTypes.precept, 6, 60*multp, new String[] { "scepter" }), - AEGIRES(UnitTypes.aegires, 6, 450*multp, new String[] { "navanax" }), - AVERT(UnitTypes.avert, 6, 27*multp, new String[] { "bryde" }), - CYERCE(UnitTypes.cyerce, 6, 150*multp, new String[] { "quad" }), - - SCEPTER(UnitTypes.scepter, 7, 105*multp, new String[] { "vanquish" }), - NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "elude", "dagger" }), - TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }), - BRYDE(UnitTypes.bryde, 7, 180*multp, new String[] { "antumbra", "obviate" }), - QUAD(UnitTypes.quad, 7, 450*multp, new String[] { "oct" }), - - VANQUISH(UnitTypes.vanquish, 8, 250*multp, new String[] { "reign" }), - COLLARIS(UnitTypes.collaris, 8, 1170*multp, new String[] { "nova", "flare", "dagger", "mono" }), - ANTUMBRA(UnitTypes.antumbra, 8, 180*multp, new String[] { "eclipse" }), - OBVIATE(UnitTypes.obviate, 8, 90*multp, new String[] { "quell" }), - OCT(UnitTypes.oct, 8, 1500*multp, new String[] { "elude", "nova", "flare", "dagger" }), - - REIGN(UnitTypes.reign, 9, 450*multp, new String[] { "conquer" }), - ECLIPSE(UnitTypes.eclipse, 9, 270*multp, new String[] { "sei" }), - QUELL(UnitTypes.quell, 9, 180*multp, new String[] { "disrupt" }), - - CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "elude", "nova", "flare", "mono" }), - SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }), - DISRUPT(UnitTypes.disrupt, 10, 800*multp, new String[] { "nova", "flare", "dagger"}), - - OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "elude", "nova", "dagger", "mono" }); + DAGGER(UnitTypes.dagger, 1, 2*multp, new String[] { "atrax", "mace", "elude", "flare", "nova", "mono" }, 1), + NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "elude", "flare", "dagger", "mono" }), 1, + ELUDE(UnitTypes.elude, 1, 10*multp, new String[] { "atrax", "nova", "flare", "dagger", "mono" }, 1), + FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "elude", "dagger", "mono" }, 1), + MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "elude", "dagger" }, 1), + + PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 1), + ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 1), + RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 3), + POLY(UnitTypes.poly, 2, 21*multp, new String[] { "retusa" }, 2), + + MACE(UnitTypes.mace, 3, 20*multp, new String[] { "fortress"}, 2), + QUASAR(UnitTypes.quasar, 3, 60*multp, new String[] { "vela" }, 3), + CLEROI(UnitTypes.cleroi, 3, 65*multp, new String[] { "spiroct" }, 3), + ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 3), + RETUSA(UnitTypes.retusa, 3, 15*multp, new String[] { "oxynoe" }, 3), + + FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }, 3), + VELA(UnitTypes.vela, 4, 170*multp, new String[] { "corvus" }, 6), + SPIROCT(UnitTypes.spiroct, 4, 95*multp, new String[] { "toxopid" }, 4), + MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }, 3), + OXYNOE(UnitTypes.oxynoe, 4, 35*multp, new String[] { "mega" }, 3), + + LOCUS(UnitTypes.locus, 5, 55*multp, new String[] { "precept" }, 4), + CORVUS(UnitTypes.corvus, 5, 300*multp, new String[] { "aegires" }, 7), + MEGA(UnitTypes.mega, 5, 100*multp, new String[] { "cyerce" }, 4), + + PRECEPT(UnitTypes.precept, 6, 60*multp, new String[] { "scepter" }, 4), + AEGIRES(UnitTypes.aegires, 6, 450*multp, new String[] { "navanax" }, 8), + AVERT(UnitTypes.avert, 6, 27*multp, new String[] { "bryde" , "obviate" }, 4), + CYERCE(UnitTypes.cyerce, 6, 150*multp, new String[] { "quad" }, 5), + + SCEPTER(UnitTypes.scepter, 7, 105*multp, new String[] { "vanquish" }, 6), + NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "elude", "dagger" }, , 9), + TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }, 8), + BRYDE(UnitTypes.bryde, 7, 180*multp, new String[] { "antumbra" }, 5), + OBVIATE(UnitTypes.obviate, 7, 90*multp, new String[] { "quell" }, 5), + QUAD(UnitTypes.quad, 7, 450*multp, new String[] { "oct" }, 7), + + VANQUISH(UnitTypes.vanquish, 8, 250*multp, new String[] { "reign" }, 7), + COLLARIS(UnitTypes.collaris, 8, 1170*multp, new String[] { "nova", "flare", "dagger", "mono" }, 7), + ANTUMBRA(UnitTypes.antumbra, 8, 180*multp, new String[] { "eclipse" }, 6), + OCT(UnitTypes.oct, 8, 1500*multp, new String[] { "elude", "nova", "flare", "dagger" }, 9), + QUELL(UnitTypes.quell, 8, 180*multp, new String[] { "disrupt" }, 6), + + REIGN(UnitTypes.reign, 9, 450*multp, new String[] { "conquer" }, 8), + ECLIPSE(UnitTypes.eclipse, 9, 270*multp, new String[] { "sei" }, 6), + DISRUPT(UnitTypes.disrupt, 9, 800*multp, new String[] { "nova", "flare", "dagger"}, 8), + + + CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "elude", "nova", "flare", "mono" }, 8), + SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }, 8), + + OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "elude", "nova", "dagger", "mono" }, 9); public final UnitType unitType; public final int tier, cost; public final String[] evolutions; + public final int stage; Evolution(mindustry.type.UnitType unitType, int tier, int cost, String[] evolutions) { this.unitType = unitType; this.tier = tier; this.cost = cost; this.evolutions = evolutions; + this.stage = stage; } } From d6f9809e68c26a48fc040ace4979bd9fdeff1bf6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:27:42 +0300 Subject: [PATCH 175/460] Update Evolution.java --- .../redvsblue/evolution/Evolution.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index 3ebde4a1..4e5e8074 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -7,11 +7,11 @@ public enum Evolution { - DAGGER(UnitTypes.dagger, 1, 2*multp, new String[] { "atrax", "mace", "elude", "flare", "nova", "mono" }, 1), - NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "elude", "flare", "dagger", "mono" }), 1, - ELUDE(UnitTypes.elude, 1, 10*multp, new String[] { "atrax", "nova", "flare", "dagger", "mono" }, 1), - FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "elude", "dagger", "mono" }, 1), - MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "elude", "dagger" }, 1), + DAGGER(UnitTypes.dagger, 1, 2*multp, new String[] { "atrax", "mace", "merui", "flare", "nova", "mono" }, 1), + NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "merui", "flare", "dagger", "mono" }), 1, + MERUI(UnitTypes.merui, 1, 8*multp, new String[] { "atrax", "nova", "flare", "dagger", "mono" }, 1), + FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "merui", "dagger", "mono" }, 1), + MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "merui", "dagger" }, 1), PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 1), ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 1), @@ -40,7 +40,7 @@ public enum Evolution { CYERCE(UnitTypes.cyerce, 6, 150*multp, new String[] { "quad" }, 5), SCEPTER(UnitTypes.scepter, 7, 105*multp, new String[] { "vanquish" }, 6), - NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "elude", "dagger" }, , 9), + NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "merui", "dagger" }, , 9), TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }, 8), BRYDE(UnitTypes.bryde, 7, 180*multp, new String[] { "antumbra" }, 5), OBVIATE(UnitTypes.obviate, 7, 90*multp, new String[] { "quell" }, 5), @@ -49,7 +49,7 @@ public enum Evolution { VANQUISH(UnitTypes.vanquish, 8, 250*multp, new String[] { "reign" }, 7), COLLARIS(UnitTypes.collaris, 8, 1170*multp, new String[] { "nova", "flare", "dagger", "mono" }, 7), ANTUMBRA(UnitTypes.antumbra, 8, 180*multp, new String[] { "eclipse" }, 6), - OCT(UnitTypes.oct, 8, 1500*multp, new String[] { "elude", "nova", "flare", "dagger" }, 9), + OCT(UnitTypes.oct, 8, 1500*multp, new String[] { "merui", "nova", "flare", "dagger" }, 9), QUELL(UnitTypes.quell, 8, 180*multp, new String[] { "disrupt" }, 6), REIGN(UnitTypes.reign, 9, 450*multp, new String[] { "conquer" }, 8), @@ -57,10 +57,10 @@ public enum Evolution { DISRUPT(UnitTypes.disrupt, 9, 800*multp, new String[] { "nova", "flare", "dagger"}, 8), - CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "elude", "nova", "flare", "mono" }, 8), + CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "merui", "nova", "flare", "mono" }, 8), SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }, 8), - OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "elude", "nova", "dagger", "mono" }, 9); + OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "merui", "nova", "dagger", "mono" }, 9); public final UnitType unitType; public final int tier, cost; From 6c42867906b13931a0d39c13a78e90aa0ec875e9 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:28:35 +0300 Subject: [PATCH 176/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index f6c119ff..3694b913 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -768,6 +768,7 @@ unit.locus.armor: -20 unit.retusa.health: 800 unit.pulsar.health: 500 unit.pulsar.armor: 6 +unit.merui.health: 400 // Health unit.elude.health: 300 From cc1fbbcf13d4074087832d8b13d796ff6c44c289 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:33:10 +0300 Subject: [PATCH 177/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index 4e5e8074..b1361f70 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -8,7 +8,7 @@ public enum Evolution { DAGGER(UnitTypes.dagger, 1, 2*multp, new String[] { "atrax", "mace", "merui", "flare", "nova", "mono" }, 1), - NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "merui", "flare", "dagger", "mono" }), 1, + NOVA(UnitTypes.nova, 1, 3*multp, new String[] { "pulsar", "merui", "flare", "dagger", "mono" }, 1), MERUI(UnitTypes.merui, 1, 8*multp, new String[] { "atrax", "nova", "flare", "dagger", "mono" }, 1), FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "merui", "dagger", "mono" }, 1), MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "merui", "dagger" }, 1), @@ -40,7 +40,7 @@ public enum Evolution { CYERCE(UnitTypes.cyerce, 6, 150*multp, new String[] { "quad" }, 5), SCEPTER(UnitTypes.scepter, 7, 105*multp, new String[] { "vanquish" }, 6), - NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "merui", "dagger" }, , 9), + NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "merui", "dagger" }, 9), TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }, 8), BRYDE(UnitTypes.bryde, 7, 180*multp, new String[] { "antumbra" }, 5), OBVIATE(UnitTypes.obviate, 7, 90*multp, new String[] { "quell" }, 5), From ac635d8a7c6f0f276dbcda65dfeff4ea542394ae Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:33:43 +0300 Subject: [PATCH 178/460] Update Evolutions.java --- .../java/net/voiddustry/redvsblue/evolution/Evolutions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java index eb93fc18..d39cec37 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java @@ -8,7 +8,7 @@ public class Evolutions { public final static ObjectMap evolutions = ObjectMap.of( "dagger", Evolution.DAGGER, "nova", Evolution.NOVA, - "elude", Evolution.ELUDE, + "merui", Evolution.MERUI, "flare", Evolution.FLARE, "mono", Evolution.MONO, From 201ba1d11937db518ac07da71bed781261f29785 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:39:09 +0300 Subject: [PATCH 179/460] Update Evolutions.java --- .../java/net/voiddustry/redvsblue/evolution/Evolutions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java index d39cec37..1d645311 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolutions.java @@ -32,7 +32,7 @@ public class Evolutions { "locus", Evolution.LOCUS, "corvus", Evolution.CORVUS, - "elude", Evolution.ELUDE, + "merui", Evolution.MERUI, "mega", Evolution.MEGA, "precept", Evolution.PRECEPT, From a2c9c53841319b95ea67b20fd319f42ab2b36154 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:40:07 +0300 Subject: [PATCH 180/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index b1361f70..c9703acc 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -63,11 +63,10 @@ public enum Evolution { OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "merui", "nova", "dagger", "mono" }, 9); public final UnitType unitType; - public final int tier, cost; + public final int tier, cost, stage; public final String[] evolutions; - public final int stage; - Evolution(mindustry.type.UnitType unitType, int tier, int cost, String[] evolutions) { + Evolution(mindustry.type.UnitType unitType, int tier, int cost, String[] evolutions, int stage) { this.unitType = unitType; this.tier = tier; this.cost = cost; From a88de54bb968f680b3d10ceef4d1eb9cffa5ddbd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 08:53:59 +0300 Subject: [PATCH 181/460] evolution multipler 1 --- .../redvsblue/game/stations/Laboratory.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index bf4c61da..edc278e9 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -10,6 +10,7 @@ import mindustry.gen.*; import mindustry.ui.Menus; import mindustry.world.Tile; +import net.voiddustry.redvsblue.RedVsBluePlugin; import net.voiddustry.redvsblue.Bundle; import net.voiddustry.redvsblue.PlayerData; import net.voiddustry.redvsblue.evolution.Evolution; @@ -47,7 +48,7 @@ public class Laboratory { player.unit(unit); oldUnit.kill(); - playerData.subtractScore(evolutionOption.cost); + playerData.subtractScore(getFinalCost(evolutionOption)); playerData.setEvolutionStage(evolutionOption.tier); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); @@ -83,7 +84,7 @@ public static void initTimer() { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(evolution.evolutions[i]).cost); + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(getFinalCost(evolution.evolutions[i]))); } Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); @@ -111,6 +112,19 @@ public static void initTimer() { }, 0, 0.5F); } + private static int getFinalCost(Evolution evo) { + int stage = evo.stage + float multiplier; + if (RedVsBluePlugin.stage == stage) { + multiplier = 1 + } else if (RedVsBluePlugin.stage > stage) { + multiplier = 0.75 + } else { + multiplier = (stage-RedVsBluePlguin.stage)^2 + } + return (((float)evo.cost)*multiplier) + } + public static void buyLab(Player player) { if (players.get(player.uuid()).getScore() < 7) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 7)); From 16e1449ff9fb65bb9a460ee4a72784d04d1f6a54 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:02:01 +0300 Subject: [PATCH 182/460] evo multiplier 2 --- .../redvsblue/game/stations/Laboratory.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index edc278e9..1880f6a4 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -84,7 +84,18 @@ public static void initTimer() { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(getFinalCost(evolution.evolutions[i]))); + int cost = getFinalCost(evolution.evolutions[i]); + + string textColor = ""; + + if (cost>evolution.evolutions[i].cost) { + textColor = "[red]"; + } else if (cost stage) { - multiplier = 0.75 + multiplier = 0.75; } else { - multiplier = (stage-RedVsBluePlguin.stage)^2 + multiplier = (stage-RedVsBluePlguin.stage)^2; } - return (((float)evo.cost)*multiplier) + return (int)(((float)evo.cost)*multiplier); } public static void buyLab(Player player) { From f831ca2ba5bd4d5f61ea1e72c99c2638a62f70e6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:05:49 +0300 Subject: [PATCH 183/460] Update PlayerData.java --- src/main/java/net/voiddustry/redvsblue/PlayerData.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/PlayerData.java b/src/main/java/net/voiddustry/redvsblue/PlayerData.java index e5c0d28b..abe48ccd 100644 --- a/src/main/java/net/voiddustry/redvsblue/PlayerData.java +++ b/src/main/java/net/voiddustry/redvsblue/PlayerData.java @@ -20,6 +20,7 @@ public class PlayerData { private int level; private int exp; private int maxExp; + private double lastEvolutionTime; public PlayerData(String name, String uuid, String ip, Unit unit, Team team, Integer evolutionStage, Integer level, Integer exp, Integer maxExp) { this.name = name; @@ -36,6 +37,7 @@ public PlayerData(String name, String uuid, String ip, Unit unit, Team team, Int this.level = 1; this.exp = 0; this.maxExp = 20; + this.lastEvolutionTime = 0; } public PlayerData(Player player) { @@ -62,6 +64,10 @@ public Team getTeam() { return team; } + public double getLastEvolutionTime() { + return lastEvolutionTime; + } + public void addScore(int amount) { score += amount; } @@ -158,4 +164,8 @@ public int getMaxExp() { public void setMaxExp(int amount) { this.maxExp = amount; } + + public void setLastEvolutionTime(double time) { + this.lastEvolutionTime = time; + } } From 764ddaf85e249e911159636729a81b3dc1d6a5e6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:09:01 +0300 Subject: [PATCH 184/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 1880f6a4..dcd20004 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -95,7 +95,7 @@ public static void initTimer() { } else { textColor = "[green]"; } - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, textColor, evolution.evolutions[i], Evolutions.evolutions.get(cost))); + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, textColor, evolution.evolutions[i], " - ",cost); } Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); From d748fbb5f594cb125e1f0b0853eab8dcf69db0f7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:13:06 +0300 Subject: [PATCH 185/460] Update Laboratory.java --- .../voiddustry/redvsblue/game/stations/Laboratory.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index dcd20004..7f5825ce 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -86,7 +86,7 @@ public static void initTimer() { for (int i = 0; i < evolution.evolutions.length; i++) { int cost = getFinalCost(evolution.evolutions[i]); - string textColor = ""; + String textColor = ""; if (cost>evolution.evolutions[i].cost) { textColor = "[red]"; @@ -123,13 +123,14 @@ public static void initTimer() { }, 0, 0.5F); } - private static int getFinalCost(Evolution evo) { + private static int getFinalCost(String evolution) { + Evolution evo = Evolutions.get(evolution); int stage = evo.stage; float multiplier; if (RedVsBluePlugin.stage == stage) { - multiplier = 1; + multiplier = 1f; } else if (RedVsBluePlugin.stage > stage) { - multiplier = 0.75; + multiplier = 0.75f; } else { multiplier = (stage-RedVsBluePlguin.stage)^2; } From 846d21f83ad04ee2ea8ed54ffda3d11a16aa9ca6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:18:59 +0300 Subject: [PATCH 186/460] Update Laboratory.java --- .../voiddustry/redvsblue/game/stations/Laboratory.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 7f5825ce..44684587 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -88,9 +88,9 @@ public static void initTimer() { String textColor = ""; - if (cost>evolution.evolutions[i].cost) { + if (cost>Evolution.evolutions.get(evolution.evolutions[i]).cost) { textColor = "[red]"; - } else if (cost stage) { multiplier = 0.75f; } else { - multiplier = (stage-RedVsBluePlguin.stage)^2; + multiplier = (stage-RedVsBluePlugin.stage)^2; } return (int)(((float)evo.cost)*multiplier); } From d4951e4d76e37639122b2ae8f213a380740261f1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:27:05 +0300 Subject: [PATCH 187/460] Update Laboratory.java --- .../redvsblue/game/stations/Laboratory.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 44684587..9b36c514 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -88,9 +88,9 @@ public static void initTimer() { String textColor = ""; - if (cost>Evolution.evolutions.get(evolution.evolutions[i]).cost) { + if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { textColor = "[red]"; - } else if (cost Date: Thu, 15 Jan 2026 09:30:01 +0300 Subject: [PATCH 188/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index bd039fff..ea74d9ef 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -225,7 +225,7 @@ public static UnitType getStartingUnit() { return UnitTypes.nova; } case 7, 8 -> { - return UnitTypes.elude; + return UnitTypes.merui; } case 9 -> { return UnitTypes.flare; From 3d8b06fa02152c43dd4a239b12927adfc314c269 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:09:45 +0300 Subject: [PATCH 189/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 9b36c514..c4a16c01 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -95,7 +95,7 @@ public static void initTimer() { } else { textColor = "[green]"; } - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, textColor, evolution.evolutions[i], " - ",cost); + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i])+" - "+cost; } Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); From 949df37fa964c06864cc8745ca206dc5dd375aba Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:19:26 +0300 Subject: [PATCH 190/460] Update Laboratory.java --- .../redvsblue/game/stations/Laboratory.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index c4a16c01..aedbab54 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -84,7 +84,8 @@ public static void initTimer() { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - int cost = getFinalCost(evolution.evolutions[i]); + int multiplier = getMultiplier(evolution.evolutions[i]); + int cost = (Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); String textColor = ""; @@ -95,7 +96,7 @@ public static void initTimer() { } else { textColor = "[green]"; } - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i])+" - "+cost; + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i],(textColor+cost+" - "+*multiplier*100)+"%")); } Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); @@ -123,7 +124,7 @@ public static void initTimer() { }, 0, 0.5F); } - private static int getFinalCost(Evolution evo) { + private static int getMultiplier(Evolution evo) { int stage = evo.stage; float multiplier; if (RedVsBluePlugin.stage == stage) { @@ -131,13 +132,13 @@ private static int getFinalCost(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = (stage-RedVsBluePlugin.stage)^2; + multiplier = ((stage-RedVsBluePlugin.stage)^2f/2f)+1f; } return (int)(((float)evo.cost)*multiplier); } - private static int getFinalCost(String evolution) { - return getFinalCost(Evolutions.evolutions.get(evolution)); + private static int getMultiplier(String evolution) { + return getMultiplier(Evolutions.evolutions.get(evolution)); } public static void buyLab(Player player) { From 6e90d2b035bafc1ea7f6150c6f16066fdb4c0126 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:22:28 +0300 Subject: [PATCH 191/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index aedbab54..95ee4405 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -48,7 +48,7 @@ public class Laboratory { player.unit(unit); oldUnit.kill(); - playerData.subtractScore(getFinalCost(evolutionOption)); + playerData.subtractScore(getMultiplier(evolutionOption)*evolutionOption.cost); playerData.setEvolutionStage(evolutionOption.tier); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); @@ -96,7 +96,7 @@ public static void initTimer() { } else { textColor = "[green]"; } - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i],(textColor+cost+" - "+*multiplier*100)+"%")); + buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i],(textColor+cost+" - "+(multiplier*100)+"%")); } Call.menu(p.con, evolutionMenu, Bundle.get("menu.evolution.title", locale), Bundle.format("menu.evolution.message", locale, players.get(p.uuid()).getEvolutionStage(), Bundle.get("evolution.branch.initial", locale)), buttons); From ef707a393d278b42cb2e0fa40de916963b05d18c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:23:34 +0300 Subject: [PATCH 192/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 95ee4405..f867a558 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; + import static net.voiddustry.redvsblue.RedVsBluePlugin.players; public class Laboratory { From 097139386ab1c214299f0ef69916d9d4a15ef6c9 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:24:46 +0300 Subject: [PATCH 193/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f867a558..f47ec3a7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -133,7 +133,7 @@ private static int getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = ((stage-RedVsBluePlugin.stage)^2f/2f)+1f; + multiplier = ((stage-RedVsBluePlugin.stage)^2/2)+1; } return (int)(((float)evo.cost)*multiplier); } From 01719465cf29bf2130184501826f0860ec0e429c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:32:44 +0300 Subject: [PATCH 194/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f47ec3a7..3ad63357 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -133,7 +133,7 @@ private static int getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = ((stage-RedVsBluePlugin.stage)^2/2)+1; + multiplier = (2^(stage-RedVsBluePlugin.stage)); } return (int)(((float)evo.cost)*multiplier); } From 943b690a713d20f76255267796f5105c7a06dcea Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:45:17 +0300 Subject: [PATCH 195/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 3ad63357..898dcbe6 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -93,9 +93,9 @@ public static void initTimer() { if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { textColor = "[red]"; } else if (cost Date: Thu, 15 Jan 2026 15:47:48 +0300 Subject: [PATCH 196/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 898dcbe6..f4d0e18c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -3,6 +3,7 @@ import arc.graphics.Color; import arc.util.Timer; +import arc.util.Log; import mindustry.Vars; import mindustry.content.Blocks; import mindustry.content.Fx; From ae2d141b7eebf5f1396e09bd09d010360ff0c091 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:51:06 +0300 Subject: [PATCH 197/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f4d0e18c..a28b9d05 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -126,7 +126,7 @@ public static void initTimer() { }, 0, 0.5F); } - private static int getMultiplier(Evolution evo) { + private static float getMultiplier(Evolution evo) { int stage = evo.stage; float multiplier; if (RedVsBluePlugin.stage == stage) { @@ -137,7 +137,7 @@ private static int getMultiplier(Evolution evo) { multiplier = (2^(stage-RedVsBluePlugin.stage)); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); - return (int)(((float)evo.cost)*multiplier); + return multiplier; } private static int getMultiplier(String evolution) { From d10a85e0db7d18eee0d9e9d8b0cbe21293055d5b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:53:19 +0300 Subject: [PATCH 198/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index a28b9d05..6106343a 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -50,7 +50,7 @@ public class Laboratory { player.unit(unit); oldUnit.kill(); - playerData.subtractScore(getMultiplier(evolutionOption)*evolutionOption.cost); + playerData.subtractScore((int)(getMultiplier(evolutionOption)*evolutionOption.cost)); playerData.setEvolutionStage(evolutionOption.tier); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); @@ -140,7 +140,7 @@ private static float getMultiplier(Evolution evo) { return multiplier; } - private static int getMultiplier(String evolution) { + private static float getMultiplier(String evolution) { return getMultiplier(Evolutions.evolutions.get(evolution)); } From 572f87b20ad7dca04c5853bc326809a43b4ac214 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:54:38 +0300 Subject: [PATCH 199/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 6106343a..a26299da 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -86,8 +86,8 @@ public static void initTimer() { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - int multiplier = getMultiplier(evolution.evolutions[i]); - int cost = (Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); + float multiplier = getMultiplier(evolution.evolutions[i]); + int cost = (int)(Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); String textColor = ""; From f8eecb1c5095a2dbe192744593003de24df26ff7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:57:40 +0300 Subject: [PATCH 200/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index c9703acc..9eacacb8 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -13,8 +13,8 @@ public enum Evolution { FLARE(UnitTypes.flare, 1, 6*multp, new String[] { "risso", "nova", "merui", "dagger", "mono" }, 1), MONO(UnitTypes.mono, 1, 5*multp, new String[] { "poly", "nova", "merui", "dagger" }, 1), - PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 1), - ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 1), + PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 2), + ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 2), RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 3), POLY(UnitTypes.poly, 2, 21*multp, new String[] { "retusa" }, 2), From 0e1c63c38dc376601d99c02637a9fdcda4a9a4ed Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:59:33 +0300 Subject: [PATCH 201/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index a26299da..4fee28af 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -134,7 +134,7 @@ private static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = (2^(stage-RedVsBluePlugin.stage)); + multiplier = ((2^(stage-RedVsBluePlugin.stage-1))+0.5f); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From 29595cee1dfc201c42b8b7bbf537db42d44644eb Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:02:30 +0300 Subject: [PATCH 202/460] Update RedVsBluePlugin.java --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index e38af20e..0c3c5a7d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -495,7 +495,19 @@ public void registerClientCommands(CommandHandler handler) { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - buttons[i][0] = Bundle.format("menu.evolution.evolve", locale, evolution.evolutions[i], Evolutions.evolutions.get(evolution.evolutions[i]).cost); + float multiplier = getMultiplier(evolution.evolutions[i]); + int cost = (int)(Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); + + String textColor = ""; + + if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { + textColor = "[red]"; + } else if (cost Date: Thu, 15 Jan 2026 16:06:30 +0300 Subject: [PATCH 203/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 4fee28af..cc005430 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -134,7 +134,7 @@ private static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = ((2^(stage-RedVsBluePlugin.stage-1))+0.5f); + multiplier = ((2^(stage-RedVsBluePlugin.stage-1))+1f); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From 4b1f08c5b7e59f68b2b6ecbb261490afcc5286d4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:09:22 +0300 Subject: [PATCH 204/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index cc005430..3bab29b7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -126,7 +126,7 @@ public static void initTimer() { }, 0, 0.5F); } - private static float getMultiplier(Evolution evo) { + public static float getMultiplier(Evolution evo) { int stage = evo.stage; float multiplier; if (RedVsBluePlugin.stage == stage) { @@ -140,7 +140,7 @@ private static float getMultiplier(Evolution evo) { return multiplier; } - private static float getMultiplier(String evolution) { + public static float getMultiplier(String evolution) { return getMultiplier(Evolutions.evolutions.get(evolution)); } From d3ccb69518a024e1e3c72bd19b15ee84e4a73fc5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:13:47 +0300 Subject: [PATCH 205/460] Update RedVsBluePlugin.java --- .../java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 0c3c5a7d..cce28b80 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -32,6 +32,7 @@ import net.voiddustry.redvsblue.evolution.Evolutions; import net.voiddustry.redvsblue.game.crux.*; import net.voiddustry.redvsblue.game.stations.StationsMenu; +import net.voiddustry.redvsblue.game.stations.Laboratory; import net.voiddustry.redvsblue.game.building.BuildBlock; import net.voiddustry.redvsblue.game.building.BuildMenu; import net.voiddustry.redvsblue.game.starting_menu.StartingMenu; @@ -495,12 +496,14 @@ public void registerClientCommands(CommandHandler handler) { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - float multiplier = getMultiplier(evolution.evolutions[i]); + float multiplier = Laboratory.getMultiplier(evolution.evolutions[i]); int cost = (int)(Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); String textColor = ""; - if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { + if (multiplier > 1 && multiplier <= 1.99) { + textColor = "[orange]"; + } else if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { textColor = "[red]"; } else if (cost Date: Thu, 15 Jan 2026 16:14:08 +0300 Subject: [PATCH 206/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 3bab29b7..6bbdab12 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -91,7 +91,9 @@ public static void initTimer() { String textColor = ""; - if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { + if (multiplier > 1 && multiplier <= 1.99) { + textColor = "[orange]"; + } else if (cost>Evolutions.evolutions.get(evolution.evolutions[i]).cost) { textColor = "[red]"; } else if (cost Date: Thu, 15 Jan 2026 16:16:29 +0300 Subject: [PATCH 207/460] Update rvsb.json --- patches/rvsb.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 3694b913..cc04fe37 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -782,10 +782,10 @@ unit.pulsar.itemCapacity: 40 unit.mace.weapons.0.bullet.damage: 17 unit.mace.weapons.1.bullet.damage: 17 unit.avert.weapons.0.bullet.damage: 35 -unit.mega.weapons.0.bullet.damage: 30 -unit.mega.weapons.1.bullet.damage: 30 -unit.mega.weapons.2.bullet.damage: 30 -unit.mega.weapons.3.bullet.damage: 30 +unit.mega.weapons.0.bullet.damage: 18 +unit.mega.weapons.1.bullet.damage: 18 +unit.mega.weapons.2.bullet.damage: 18 +unit.mega.weapons.3.bullet.damage: 18 //blocks block.launch-pad.itemCapacity: 50000 From 2cbec19d9840b8851ea4165bb8446bed449d3149 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:22:58 +0300 Subject: [PATCH 208/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 6bbdab12..5afc33b2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -136,7 +136,7 @@ public static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = ((2^(stage-RedVsBluePlugin.stage-1))+1f); + multiplier = ((2^(stage-RedVsBluePlugin.stage-1))); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From 9b954efed69114870c4a80059fa0c2c73a8f6e54 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:26:15 +0300 Subject: [PATCH 209/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 5afc33b2..50db7842 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -136,7 +136,7 @@ public static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = ((2^(stage-RedVsBluePlugin.stage-1))); + multiplier = (2^(stage-RedVsBluePlugin.stage)); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From ae15c7527736073a83eb0d73dd4c28b09ca5e2b8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:31:27 +0300 Subject: [PATCH 210/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 50db7842..dff6bada 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -1,5 +1,6 @@ package net.voiddustry.redvsblue.game.stations; +import java.util.Math; import arc.graphics.Color; import arc.util.Timer; @@ -136,7 +137,7 @@ public static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = (2^(stage-RedVsBluePlugin.stage)); + multiplier = Math.pow(2,(stage-RedVsBluePlugin.stage)); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From 65a8d957a8866db0835cefe7c72050759141cc6f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:32:30 +0300 Subject: [PATCH 211/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index dff6bada..5f80e7c5 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -1,6 +1,6 @@ package net.voiddustry.redvsblue.game.stations; -import java.util.Math; +import java.lang.Math; import arc.graphics.Color; import arc.util.Timer; From ec1780e0bd6144c86e3e4fd79f0b7b06a2fee3e8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:32:47 +0300 Subject: [PATCH 212/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 5f80e7c5..fc002560 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -1,7 +1,5 @@ package net.voiddustry.redvsblue.game.stations; -import java.lang.Math; - import arc.graphics.Color; import arc.util.Timer; import arc.util.Log; @@ -24,6 +22,7 @@ import java.util.Locale; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.lang.Math; import static net.voiddustry.redvsblue.RedVsBluePlugin.players; From f8f9a64db16cf81beb7864bb1afe7831bfd4899a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:34:44 +0300 Subject: [PATCH 213/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index fc002560..71cbe3aa 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -136,7 +136,7 @@ public static float getMultiplier(Evolution evo) { } else if (RedVsBluePlugin.stage > stage) { multiplier = 0.75f; } else { - multiplier = Math.pow(2,(stage-RedVsBluePlugin.stage)); + multiplier = (float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; From 4bc2337efe0ed0642701117b2d1338fabdbd698b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:27:38 +0300 Subject: [PATCH 214/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 620dfa17..c2e98487 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -83,7 +83,6 @@ weapons: [ name: "reign-weapon" layerOffset: -0.0005 top: true -y: 1 x: 26 y: 5 parts: [ @@ -167,7 +166,6 @@ despawnSound: explosion name: "reign-weapon" layerOffset: -0.0005 top: true -y: 1 x: -26 y: 5 parts: [ @@ -371,7 +369,7 @@ lightningDamage: 24 lightningColor: ffff6b hitSound: explosionMissile killShooter: false -splashDamage: 3000 +splashDamage: 2000 scaledSplashDamage: true splashDamageRadius: 45 buildingDamageMultiplier: 999 @@ -390,3 +388,4 @@ buildingDamageMultiplier: 999 + From f8dd22787b628168a7bd0dd902216ea2489330bb Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:32:07 +0300 Subject: [PATCH 215/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 71cbe3aa..a382f9eb 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -7,6 +7,7 @@ import mindustry.content.Blocks; import mindustry.content.Fx; import mindustry.game.Team; +import mindustry.game.Universe; import mindustry.gen.*; import mindustry.ui.Menus; import mindustry.world.Tile; @@ -52,6 +53,7 @@ public class Laboratory { playerData.subtractScore((int)(getMultiplier(evolutionOption)*evolutionOption.cost)); playerData.setEvolutionStage(evolutionOption.tier); + playerData.setLastEvolutionTime(Universe.seconds); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); } From b0e61e5d101145cc5f0e428d4a92742c716c2cbc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:39:07 +0300 Subject: [PATCH 216/460] time since last evo 1 --- .../redvsblue/game/stations/Laboratory.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index a382f9eb..f4170d72 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -130,21 +130,26 @@ public static void initTimer() { }, 0, 0.5F); } - public static float getMultiplier(Evolution evo) { + public static float getMultiplier(Evolution evo, Player player) { + double timeSinceLastEvo = Universe.seconds-RedVsBluePlugin.players.get(player.uuid()).getLastEvolutionTime(); int stage = evo.stage; - float multiplier; + float multiplier = 0; + if (timeSinceLastEvo<180) { + multiplier = (180-timeSinceLastEvo)/240; + multiplier = multiplier + Math.sqrt(evo.cost); + } if (RedVsBluePlugin.stage == stage) { - multiplier = 1f; + multiplier = multiplier+1f; } else if (RedVsBluePlugin.stage > stage) { - multiplier = 0.75f; + multiplier = multiplier+0.75f; } else { - multiplier = (float)Math.pow(2,(stage-RedVsBluePlugin.stage)); + multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); return multiplier; } - public static float getMultiplier(String evolution) { + public static float getMultiplier(String evolution, Player player) { return getMultiplier(Evolutions.evolutions.get(evolution)); } From 84c16bf1cff7da29addeeda01ca10c0244b69959 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:39:52 +0300 Subject: [PATCH 217/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index cce28b80..899449f1 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -496,7 +496,7 @@ public void registerClientCommands(CommandHandler handler) { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - float multiplier = Laboratory.getMultiplier(evolution.evolutions[i]); + float multiplier = Laboratory.getMultiplier(evolution.evolutions[i], player); int cost = (int)(Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); String textColor = ""; From 1be4da6d49196062b27ff2827ee44524814b7c11 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:40:42 +0300 Subject: [PATCH 218/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f4170d72..f3280377 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -51,7 +51,7 @@ public class Laboratory { player.unit(unit); oldUnit.kill(); - playerData.subtractScore((int)(getMultiplier(evolutionOption)*evolutionOption.cost)); + playerData.subtractScore((int)(getMultiplier(evolutionOption, player)*evolutionOption.cost)); playerData.setEvolutionStage(evolutionOption.tier); playerData.setLastEvolutionTime(Universe.seconds); @@ -88,7 +88,7 @@ public static void initTimer() { String[][] buttons = new String[evolution.evolutions.length][1]; for (int i = 0; i < evolution.evolutions.length; i++) { - float multiplier = getMultiplier(evolution.evolutions[i]); + float multiplier = getMultiplier(evolution.evolutions[i], p); int cost = (int)(Evolutions.evolutions.get(evolution.evolutions[i]).cost*multiplier); String textColor = ""; From abaabfb7d8452560ce0da7b8655e6760414c8c97 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:45:22 +0300 Subject: [PATCH 219/460] Update Laboratory.java --- .../voiddustry/redvsblue/game/stations/Laboratory.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f3280377..cf971eb0 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -53,7 +53,7 @@ public class Laboratory { playerData.subtractScore((int)(getMultiplier(evolutionOption, player)*evolutionOption.cost)); playerData.setEvolutionStage(evolutionOption.tier); - playerData.setLastEvolutionTime(Universe.seconds); + playerData.setLastEvolutionTime(Universe.seconds()); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); } @@ -131,12 +131,12 @@ public static void initTimer() { } public static float getMultiplier(Evolution evo, Player player) { - double timeSinceLastEvo = Universe.seconds-RedVsBluePlugin.players.get(player.uuid()).getLastEvolutionTime(); + double timeSinceLastEvo = Universe.seconds()-RedVsBluePlugin.players.get(player.uuid()).getLastEvolutionTime(); int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (180-timeSinceLastEvo)/240; - multiplier = multiplier + Math.sqrt(evo.cost); + multiplier = (float)((180-timeSinceLastEvo)/240); + multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { multiplier = multiplier+1f; @@ -150,7 +150,7 @@ public static float getMultiplier(Evolution evo, Player player) { } public static float getMultiplier(String evolution, Player player) { - return getMultiplier(Evolutions.evolutions.get(evolution)); + return getMultiplier(Evolutions.evolutions.get(evolution), player); } public static void buyLab(Player player) { From 333b4bea98b44ede7858e13c6f7e9a96d0146848 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:51:26 +0300 Subject: [PATCH 220/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index cf971eb0..26974e1f 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -7,7 +7,6 @@ import mindustry.content.Blocks; import mindustry.content.Fx; import mindustry.game.Team; -import mindustry.game.Universe; import mindustry.gen.*; import mindustry.ui.Menus; import mindustry.world.Tile; @@ -24,6 +23,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.lang.Math; +import java.time.Instant; import static net.voiddustry.redvsblue.RedVsBluePlugin.players; @@ -53,7 +53,7 @@ public class Laboratory { playerData.subtractScore((int)(getMultiplier(evolutionOption, player)*evolutionOption.cost)); playerData.setEvolutionStage(evolutionOption.tier); - playerData.setLastEvolutionTime(Universe.seconds()); + playerData.setLastEvolutionTime(Instant.now().getEpochSecond()); Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); } @@ -131,7 +131,7 @@ public static void initTimer() { } public static float getMultiplier(Evolution evo, Player player) { - double timeSinceLastEvo = Universe.seconds()-RedVsBluePlugin.players.get(player.uuid()).getLastEvolutionTime(); + double timeSinceLastEvo = Instant.now().getEpochSecond()-RedVsBluePlugin.players.get(player.uuid()).getLastEvolutionTime(); int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { From 2c76a2f2b4dc142a5db47b46090d8ac98d5a350a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:55:22 +0300 Subject: [PATCH 221/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 26974e1f..879f6d4f 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/240); + multiplier = (float)((180-timeSinceLastEvo)/360); multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else { multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } - Log.info("stage for evolution "+evo+" - "+stage+" multiplier:"+multiplier); + multiplier = ((int)(multiplier*1000))/1000; return multiplier; } From a52065085a1ee368a4ca84dec1005221c13869c1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:55:59 +0300 Subject: [PATCH 222/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 879f6d4f..5482e7f7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/360); + multiplier = (float)((180-timeSinceLastEvo)/500); multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { From cb57cf3d0d63ea897812cf28a117ee5d4c14de38 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:56:21 +0300 Subject: [PATCH 223/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 5482e7f7..79530844 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/500); + multiplier = (float)((180-timeSinceLastEvo)/600); multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { From 0a1e53a5240d94edc85143d693e035fda07b1e58 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:01:20 +0300 Subject: [PATCH 224/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 79530844..b74b9628 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/600); + multiplier = (float)((180-timeSinceLastEvo)/320); multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else { multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } - multiplier = ((int)(multiplier*1000))/1000; + multiplier = (float)(Math.round(multiplier*1000)/1000); return multiplier; } From 50d943415cd7d3d005fb43c1671d704bd29af372 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:06:00 +0300 Subject: [PATCH 225/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index b74b9628..56e5860a 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -39,7 +39,7 @@ public class Laboratory { PlayerData playerData = players.get(player.uuid()); - if (playerData.getScore() >= evolutionOption.cost) { + if (playerData.getScore() >= evolutionOption.cost*getMultplier(evolutionOption, player)) { if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true || evolutionOption.unitType.groundLayer==Layer.legUnit)) { Unit unit = evolutionOption.unitType.spawn(Team.blue, player.x(), player.y()); unit.health = unit.type.health/2; @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else { multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } - multiplier = (float)(Math.round(multiplier*1000)/1000); + multiplier = (float)(Math.round(multiplier*1000)/1000f); return multiplier; } From f5d569772c0d47306be9a5aee1d4bd86e9a092b2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:07:33 +0300 Subject: [PATCH 226/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 56e5860a..4f4e6857 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -39,7 +39,7 @@ public class Laboratory { PlayerData playerData = players.get(player.uuid()); - if (playerData.getScore() >= evolutionOption.cost*getMultplier(evolutionOption, player)) { + if (playerData.getScore() >= evolutionOption.cost*getMultiplier(evolutionOption, player)) { if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true || evolutionOption.unitType.groundLayer==Layer.legUnit)) { Unit unit = evolutionOption.unitType.spawn(Team.blue, player.x(), player.y()); unit.health = unit.type.health/2; From fb26faedf81a69dd741c123a0778b0c12bd623c5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:12:31 +0300 Subject: [PATCH 227/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 4f4e6857..88609e35 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/320); + multiplier = (float)((180-timeSinceLastEvo)/960); multiplier = multiplier + ((float)Math.sqrt(evo.cost)); } if (RedVsBluePlugin.stage == stage) { From 4fa73c8ddd92ca47a149f8c213ee576a4462c8bf Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:18:49 +0300 Subject: [PATCH 228/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 88609e35..afaac2c7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,8 +135,8 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/960); - multiplier = multiplier + ((float)Math.sqrt(evo.cost)); + multiplier = (float)((180-timeSinceLastEvo)/180); + multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost); } if (RedVsBluePlugin.stage == stage) { multiplier = multiplier+1f; From d25320ffe6e8fe76fb8fff17453026084b402d3f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:20:17 +0300 Subject: [PATCH 229/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index afaac2c7..8a7fe2fb 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -136,7 +136,7 @@ public static float getMultiplier(Evolution evo, Player player) { float multiplier = 0; if (timeSinceLastEvo<180) { multiplier = (float)((180-timeSinceLastEvo)/180); - multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost); + multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost)*multiplier; } if (RedVsBluePlugin.stage == stage) { multiplier = multiplier+1f; From 8272b64901590f53e6947c9d1eda74423677c6aa Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:25:44 +0300 Subject: [PATCH 230/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 8a7fe2fb..8e9b5fa8 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -135,7 +135,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/180); + multiplier = (float)((180-timeSinceLastEvo)/360); multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost)*multiplier; } if (RedVsBluePlugin.stage == stage) { From f27c89eb47d21bcf95c4c4f3b6fe1ee60d16caca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 17 Jan 2026 15:58:58 +0300 Subject: [PATCH 231/460] fix rounding maybe --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 8e9b5fa8..9b7f7396 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -24,6 +24,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.lang.Math; import java.time.Instant; +import java.math.BigDecimal; +import java.math.RoundingMode; import static net.voiddustry.redvsblue.RedVsBluePlugin.players; @@ -145,7 +147,9 @@ public static float getMultiplier(Evolution evo, Player player) { } else { multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); } - multiplier = (float)(Math.round(multiplier*1000)/1000f); + BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); + bd = bd.setScale(3, RoundingMode.HALF_UP); + multiplier = bd.floatValue(); return multiplier; } From ad4b8f232574460b5680fb633911313758ff2e27 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 17 Jan 2026 16:09:49 +0300 Subject: [PATCH 232/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index cc04fe37..beeb03f2 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -231,6 +231,7 @@ unit.disrupt.speed: 2 //disrupt drone(incite) unit.incite.localizedName: "Disruption drone" +unit.incite.controller: airAI unit.incite.hitSize: 9 unit.incite.flyingLayer: 85 unit.incite.region: "unit-assembly-drone-full" From d7f1f23235e8fbaae0159b96276fade6c7e404ea Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 17 Jan 2026 16:14:25 +0300 Subject: [PATCH 233/460] Update Recycler.java --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index bc0cb109..e1276a62 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -36,7 +36,7 @@ public static void initTimer() { StationUtils.drawStationName(pointData.tileOn(), text, 0.8F); Groups.player.each(p -> { - if (p.team() == Team.blue && p.unit() != null) { + if (p.team() == Team.blue && p.unit() != null && (!(players.get(p.uuid()) == null))) { if (p.dst(centerX, centerY) <= 32) { if (p.unit().stack.amount >= 20) { if (!((p.unit().stack.item == Items.plastanium && p.unit().type == UnitTypes.cyerce) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.spiroct) || (p.unit().stack.item == Items.blastCompound && p.unit().type == UnitTypes.reign) || (p.unit().stack.item == Items.sporePod && p.unit().type == UnitTypes.toxopid) || (p.unit().stack.item == Items.surgeAlloy && (p.unit().type == UnitTypes.quad || p.unit().type == UnitTypes.oct)) || (p.unit().stack.item == Items.carbide && p.unit().type == UnitTypes.disrupt))) { From 87e33329b953d0797498dd90ac94c7ac83784d87 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 17 Jan 2026 16:36:22 +0300 Subject: [PATCH 234/460] Update rvsb.json --- patches/rvsb.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index beeb03f2..969f69fb 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -797,3 +797,10 @@ block.tungsten-wall.targetable: false block.tungsten-wall.health: 99999 block.tungsten-wall-large.targetable: false block.tungsten-wall-large.health: 99999 + +//generators consumption +block.combustion-generator.itemDuration: 7200 +block.steam-generator.itemDuration: 7200 +block.thorium-reactor.itemDuration: 1800 +block.thorium-reactor.powerProduction: 45 +block.rtg-generator.itemDuration: 72000 From e792865ccd2dab99a276479cb6d3f6c0d61e4286 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 17 Jan 2026 18:42:50 +0300 Subject: [PATCH 235/460] Update rvsb.json --- patches/rvsb.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 969f69fb..6a274f87 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -804,3 +804,6 @@ block.steam-generator.itemDuration: 7200 block.thorium-reactor.itemDuration: 1800 block.thorium-reactor.powerProduction: 45 block.rtg-generator.itemDuration: 72000 + +//statuses +status.electrified.reloadMultiplier: 0.75 From b62c887d6eabb0043151475154f712283562e89f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:51:34 +0300 Subject: [PATCH 236/460] Update PlayerData.java --- src/main/java/net/voiddustry/redvsblue/PlayerData.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/PlayerData.java b/src/main/java/net/voiddustry/redvsblue/PlayerData.java index abe48ccd..cd4d20a1 100644 --- a/src/main/java/net/voiddustry/redvsblue/PlayerData.java +++ b/src/main/java/net/voiddustry/redvsblue/PlayerData.java @@ -21,6 +21,7 @@ public class PlayerData { private int exp; private int maxExp; private double lastEvolutionTime; + private double lastRedeemTime; public PlayerData(String name, String uuid, String ip, Unit unit, Team team, Integer evolutionStage, Integer level, Integer exp, Integer maxExp) { this.name = name; @@ -38,6 +39,7 @@ public PlayerData(String name, String uuid, String ip, Unit unit, Team team, Int this.exp = 0; this.maxExp = 20; this.lastEvolutionTime = 0; + this.lastRedeemTime = 0; } public PlayerData(Player player) { @@ -67,6 +69,9 @@ public Team getTeam() { public double getLastEvolutionTime() { return lastEvolutionTime; } + public double getLastRedeemTime() { + return lastRedeemTime; + } public void addScore(int amount) { score += amount; @@ -168,4 +173,7 @@ public void setMaxExp(int amount) { public void setLastEvolutionTime(double time) { this.lastEvolutionTime = time; } + public void setLastRedeemTime(double time) { + this.lastRedeemTime = time; + } } From 4a29bba3e0b41a25342954c6d6339b15f98abba6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:56:10 +0300 Subject: [PATCH 237/460] /blue cooldown --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 899449f1..a7a78d31 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -48,6 +48,7 @@ import java.util.Locale; import java.util.Objects; import java.lang.Math; +import java.time.Instant; import static net.voiddustry.redvsblue.util.MapVote.callMapVoting; import static net.voiddustry.redvsblue.util.Utils.*; @@ -599,7 +600,7 @@ public void registerClientCommands(CommandHandler handler) { }); handler.register("blue", "Makes you blue, works only before stage 3", (args, player) -> { - if (stage <= 3 && playing && player.team() != Team.blue) { + if (stage <= 3 && playing && player.team() != Team.blue && players.get(player.uuid()).getLastRedeemTime+30 Date: Wed, 21 Jan 2026 14:59:10 +0300 Subject: [PATCH 238/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index a7a78d31..40849768 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -600,7 +600,7 @@ public void registerClientCommands(CommandHandler handler) { }); handler.register("blue", "Makes you blue, works only before stage 3", (args, player) -> { - if (stage <= 3 && playing && player.team() != Team.blue && players.get(player.uuid()).getLastRedeemTime+30 Date: Wed, 21 Jan 2026 15:05:12 +0300 Subject: [PATCH 239/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 40849768..9f109076 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -600,7 +600,7 @@ public void registerClientCommands(CommandHandler handler) { }); handler.register("blue", "Makes you blue, works only before stage 3", (args, player) -> { - if (stage <= 3 && playing && player.team() != Team.blue && players.get(player.uuid()).getLastRedeemTime()+30 Date: Wed, 21 Jan 2026 15:10:34 +0300 Subject: [PATCH 240/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index 9eacacb8..b2ddcb82 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -15,13 +15,13 @@ public enum Evolution { PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 2), ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 2), - RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 3), + RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 2), POLY(UnitTypes.poly, 2, 21*multp, new String[] { "retusa" }, 2), MACE(UnitTypes.mace, 3, 20*multp, new String[] { "fortress"}, 2), QUASAR(UnitTypes.quasar, 3, 60*multp, new String[] { "vela" }, 3), CLEROI(UnitTypes.cleroi, 3, 65*multp, new String[] { "spiroct" }, 3), - ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 3), + ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 2), RETUSA(UnitTypes.retusa, 3, 15*multp, new String[] { "oxynoe" }, 3), FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }, 3), From e15d4525f2f726608959a2fecebcdae4fb738347 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:00:58 +0300 Subject: [PATCH 241/460] Create Buildings.java --- .../redvsblue/game/building/Buildings.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java new file mode 100644 index 00000000..7ea311a4 --- /dev/null +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -0,0 +1,33 @@ +package net.voiddustry.redvsblue.game.building; + +import arc.struct.Seq; +import mindustry.content.Blocks; +import mindustry.world.Block; + +public class Buildings { + + public static class BuildingPrice { + public final Block block; + public final int price; + + public BuildingPrice(Block block, int price) { + this.block = block; + this.price = price; + } + } + + public static Seq create() { + Seq buildings = new Seq<>(); + + buildings.add(new BuildingPrice(Blocks.conveyor, 5)); + buildings.add(new BuildingPrice(Blocks.router, 12)); + buildings.add(new BuildingPrice(Blocks.junction, 20)); + buildings.add(new BuildingPrice(Blocks.mechanicalDrill, 50)); + buildings.add(new BuildingPrice(Blocks.graphitePress, 120)); + buildings.add(new BuildingPrice(Blocks.duo, 75)); + buildings.add(new BuildingPrice(Blocks.powerNode, 30)); + buildings.add(new BuildingPrice(Blocks.battery, 60)); + + return buildings; + } +} From 6ca529d35f5f3bc46b91bde97ad9cfb0c202aca3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:15:44 +0300 Subject: [PATCH 242/460] Update Buildings.java --- .../redvsblue/game/building/Buildings.java | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 7ea311a4..081684c2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -4,30 +4,20 @@ import mindustry.content.Blocks; import mindustry.world.Block; -public class Buildings { +public static class Buildings { - public static class BuildingPrice { - public final Block block; - public final int price; + public static Map getPrices() { + Map prices = new HashMap<>(); - public BuildingPrice(Block block, int price) { - this.block = block; - this.price = price; - } - } - - public static Seq create() { - Seq buildings = new Seq<>(); - - buildings.add(new BuildingPrice(Blocks.conveyor, 5)); - buildings.add(new BuildingPrice(Blocks.router, 12)); - buildings.add(new BuildingPrice(Blocks.junction, 20)); - buildings.add(new BuildingPrice(Blocks.mechanicalDrill, 50)); - buildings.add(new BuildingPrice(Blocks.graphitePress, 120)); - buildings.add(new BuildingPrice(Blocks.duo, 75)); - buildings.add(new BuildingPrice(Blocks.powerNode, 30)); - buildings.add(new BuildingPrice(Blocks.battery, 60)); + prices.put(Blocks.conveyor, 5); + prices.put(Blocks.router, 12); + prices.put(Blocks.junction, 20); + prices.put(Blocks.mechanicalDrill, 50); + prices.put(Blocks.graphitePress, 120); + prices.put(Blocks.duo, 75); + prices.put(Blocks.powerNode, 30); + prices.put(Blocks.battery, 60); - return buildings; + return prices; } } From 9e6463f5bb954fe2bd4f6ce79c8f98cc794921b2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:19:14 +0300 Subject: [PATCH 243/460] if this builds im gonna cry --- .../game/building/UpdateConstructBlocks.java | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java new file mode 100644 index 00000000..2f0fa002 --- /dev/null +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -0,0 +1,139 @@ +package net.voiddustry.redvsblue.game.building; + +import java.lang.Math; +import java.lang.Runnable; +import arc.util.Timer; +import java.util.HashMap; +import java.util.WeakHashMap; +import arc.*; +import arc.util.*; +import arc.struct.Seq; +import arc.math.geom.QuadTree.*; +import mindustry.*; +import mindustry.world.Tile; +import mindustry.world.blocks.payloads.*; +import mindustry.world.blocks.*; +import mindustry.world.Block; +import mindustry.Vars; +import mindustry.game.Rules; +import mindustry.content.*; +import mindustry.type.Item; +import mindustry.type.ItemStack; +import mindustry.game.EventType.*; +import mindustry.gen.*; +import mindustry.gen.Call; +import mindustry.game.Team; +import mindustry.mod.*; +import mindustry.net.Administration.*; +import mindustry.content.Blocks; + +import net.voiddustry.redvsblue.RedVsBluePlugin; +import net.voiddustry.redvsblue.game.building.Buildings; + + +// updates construct blocks instead of the game doing it, original in usurvplugin +public class UpdateConstructBlocks implements Runnable { + HashMap remainingCost = new HashMap<>(); + HashMap prices = Buildings.getPrices(); + @Override + public void run() { + try { + remainingCost.keySet().removeIf(tile -> tile.build == null || !(tile.build instanceof ConstructBlock.ConstructBuild)); + + for (Building b : Groups.build) { + if (b.tile.block() instanceof ConstructBlock cb) { + ConstructBlock.ConstructBuild cbuild = (ConstructBlock.ConstructBuild)b; + Tile tile = cbuild.tile; + float x = cbuild.x; + float y = cbuild.y; + Block previous = cbuild.previous; + Block current = cbuild.current; + float buildspeed = 0f; + //calculate build speed + Seq buildingUnits = new Seq<>(); + buildingUnits.clear(); + + Player player = null; + + for (Unit u : Groups.unit) { + if (u.buildPlan() != null) { + if (u.buildPlan().worldContext) { + if (u.buildPlan().build() == b && u.isBuilding()) { + + if (u.player() != null) { + player = u.player(); + } + + buildingUnits.add(u); + if (u.buildPlan().breaking) { + buildspeed = buildspeed - u.type.buildSpeed; + } else { + buildspeed = buildspeed + u.type.buildSpeed; + } + } + } + } + } + boolean nothinghappens = false; + // 0.5 because of buildspeed rule, 12 because 60/5 + float steps = ((cbuild.buildCost / 12f) / buildspeed) / 0.5f; + float finalprogress = 1f / steps; + if (buildspeed == 0f) { + nothinghappens = true; + } + if ((buildspeed < 0f ) && (nothinghappens==false)) { + cbuild.progress=cbuild.progress+finalprogress; + nothinghappens=true; + } + int remainingItemCost = 0; + if (!nothinghappens) { + if (remainingCost.containsKey(tile)) { + remainingItemCost = remainingItemCost+remainingCost.get(tile); + } else { + remainingItemCost=0; + } + if (!remainingCost.containsKey(tile) || remainingCost.get(tile) == null || cbuild.progress == 0f) { + remainingCost.put(tile, prices.get(current)); + } + int totaliItemCost = 0; + int stepCost = 0; + + totaliItemCost = totaliItemCost+prices.get(current); + stepCost = ((float)(remainingCost.get(tile)[i].amount))/((1f-cbuild.progress)*steps); + + //consume items and progress if items were succesfully consumed + int consumeAmount=0; + int remc = remainingCost.get(tile); + consumeAmount = (int)Math.ceil(stepCost); + if (!(remc>consumeAmount)) { + consumeAmount = remc; + } + Log.info("Attempting to consume " + consumeAmount + " ,from " + remainingCost.get(tile) + " remaining" + "progress: " + cbuild.progress); + Unit builderUnit = buildingUnits.random(); + if (totaliItemCost != 0 || consumeAmount==0) { + if (RedVsBluePlugin.players.get(player.uuid())>=consumeAmount || consumeAmount==0) { + remc = remc-consumeAmount; + remainingCost.put(tile,remc); + int remainingItemCost2=0; + remainingItemCost2 = remainingItemCost2+remc; + if (remainingItemCost2==0 || cbuild.progress >= 0.999999f) { + Log.info("finishing construction"); + cbuild.progress=1.0001f; + Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); + tile.build.placed(); + } else { + cbuild.progress=1.0001f-(((float)remainingItemCost2)/((float)totaliItemCost)); + Log.info("updating progress"); + } + } + } + } + } + } + } + } catch (Exception e) { + Log.info("goofy ahh exception in the building system,you will see this a lot,nothing should break though"); + Log.info(e.toString()); + } + } +} From 822d8a3c743e6ae598338171ca86d5e6560ef19d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:21:36 +0300 Subject: [PATCH 244/460] Update Buildings.java --- .../net/voiddustry/redvsblue/game/building/Buildings.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 081684c2..795ab45d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -4,10 +4,12 @@ import mindustry.content.Blocks; import mindustry.world.Block; -public static class Buildings { +import java.util.HashMap; - public static Map getPrices() { - Map prices = new HashMap<>(); +public class Buildings { + + public static HashMap getPrices() { + HashMap prices = new HashMap<>(); prices.put(Blocks.conveyor, 5); prices.put(Blocks.router, 12); From d50ace371495ec0737ebc20bf7ad09ca2a30aeb6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:23:28 +0300 Subject: [PATCH 245/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 2f0fa002..26eec39b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -130,7 +130,6 @@ public void run() { } } } - } } catch (Exception e) { Log.info("goofy ahh exception in the building system,you will see this a lot,nothing should break though"); Log.info(e.toString()); From 50edd346551d83e10bd96295b08301ae93840111 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:26:38 +0300 Subject: [PATCH 246/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 26eec39b..da8fabe7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -60,8 +60,8 @@ public void run() { if (u.buildPlan().worldContext) { if (u.buildPlan().build() == b && u.isBuilding()) { - if (u.player() != null) { - player = u.player(); + if (u.player != null) { + player = u.player; } buildingUnits.add(u); @@ -99,7 +99,7 @@ public void run() { int stepCost = 0; totaliItemCost = totaliItemCost+prices.get(current); - stepCost = ((float)(remainingCost.get(tile)[i].amount))/((1f-cbuild.progress)*steps); + stepCost = ((float)(remainingCost.get(tile)))/((1f-cbuild.progress)*steps); //consume items and progress if items were succesfully consumed int consumeAmount=0; @@ -111,7 +111,8 @@ public void run() { Log.info("Attempting to consume " + consumeAmount + " ,from " + remainingCost.get(tile) + " remaining" + "progress: " + cbuild.progress); Unit builderUnit = buildingUnits.random(); if (totaliItemCost != 0 || consumeAmount==0) { - if (RedVsBluePlugin.players.get(player.uuid())>=consumeAmount || consumeAmount==0) { + if (RedVsBluePlugin.players.get(player.uuid()).getScore>=consumeAmount || consumeAmount==0) { + RedVsBluePlugin.players.get(player.uuid()).substractScore(consumeAmount); remc = remc-consumeAmount; remainingCost.put(tile,remc); int remainingItemCost2=0; From 574962695b23ee3fbe232aa28a38f098edf9bbd2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:31:20 +0300 Subject: [PATCH 247/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index da8fabe7..094c4ff3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -60,8 +60,8 @@ public void run() { if (u.buildPlan().worldContext) { if (u.buildPlan().build() == b && u.isBuilding()) { - if (u.player != null) { - player = u.player; + if (u.getPlayer() != null) { + player = u.getPlayer(); } buildingUnits.add(u); @@ -99,7 +99,7 @@ public void run() { int stepCost = 0; totaliItemCost = totaliItemCost+prices.get(current); - stepCost = ((float)(remainingCost.get(tile)))/((1f-cbuild.progress)*steps); + stepCost = ((float)(remainingCost.get(tile)))/((float)((1f-cbuild.progress)*steps)); //consume items and progress if items were succesfully consumed int consumeAmount=0; @@ -111,8 +111,8 @@ public void run() { Log.info("Attempting to consume " + consumeAmount + " ,from " + remainingCost.get(tile) + " remaining" + "progress: " + cbuild.progress); Unit builderUnit = buildingUnits.random(); if (totaliItemCost != 0 || consumeAmount==0) { - if (RedVsBluePlugin.players.get(player.uuid()).getScore>=consumeAmount || consumeAmount==0) { - RedVsBluePlugin.players.get(player.uuid()).substractScore(consumeAmount); + if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=consumeAmount || consumeAmount==0) { + RedVsBluePlugin.players.get(player.uuid()).subtractScore(consumeAmount); remc = remc-consumeAmount; remainingCost.put(tile,remc); int remainingItemCost2=0; From 094973844cd98214fd2ecc46ed91925afd7ede8e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:33:08 +0300 Subject: [PATCH 248/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 094c4ff3..98bac96c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -96,7 +96,7 @@ public void run() { remainingCost.put(tile, prices.get(current)); } int totaliItemCost = 0; - int stepCost = 0; + float stepCost = 0; totaliItemCost = totaliItemCost+prices.get(current); stepCost = ((float)(remainingCost.get(tile)))/((float)((1f-cbuild.progress)*steps)); From b42a5ae273511d0217da0b5e2e829b10f7d8d523 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:36:33 +0300 Subject: [PATCH 249/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 795ab45d..49d0b070 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -6,6 +6,8 @@ import java.util.HashMap; +// PATCH NEEDS TO BE EDITED TOO + public class Buildings { public static HashMap getPrices() { From 2d5d8e4fc57fbc888cc4d0db278bb7df841feb6c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 22:51:40 +0300 Subject: [PATCH 250/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 70 ++++--------------- 1 file changed, 14 insertions(+), 56 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 98bac96c..fb5dd729 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -33,12 +33,10 @@ // updates construct blocks instead of the game doing it, original in usurvplugin public class UpdateConstructBlocks implements Runnable { - HashMap remainingCost = new HashMap<>(); HashMap prices = Buildings.getPrices(); @Override public void run() { try { - remainingCost.keySet().removeIf(tile -> tile.build == null || !(tile.build instanceof ConstructBlock.ConstructBuild)); for (Building b : Groups.build) { if (b.tile.block() instanceof ConstructBlock cb) { @@ -49,6 +47,7 @@ public void run() { Block previous = cbuild.previous; Block current = cbuild.current; float buildspeed = 0f; + int cost = prices.get(b.block()); //calculate build speed Seq buildingUnits = new Seq<>(); buildingUnits.clear(); @@ -74,65 +73,24 @@ public void run() { } } } - boolean nothinghappens = false; - // 0.5 because of buildspeed rule, 12 because 60/5 - float steps = ((cbuild.buildCost / 12f) / buildspeed) / 0.5f; - float finalprogress = 1f / steps; - if (buildspeed == 0f) { - nothinghappens = true; - } - if ((buildspeed < 0f ) && (nothinghappens==false)) { - cbuild.progress=cbuild.progress+finalprogress; - nothinghappens=true; - } - int remainingItemCost = 0; - if (!nothinghappens) { - if (remainingCost.containsKey(tile)) { - remainingItemCost = remainingItemCost+remainingCost.get(tile); - } else { - remainingItemCost=0; - } - if (!remainingCost.containsKey(tile) || remainingCost.get(tile) == null || cbuild.progress == 0f) { - remainingCost.put(tile, prices.get(current)); - } - int totaliItemCost = 0; - float stepCost = 0; - - totaliItemCost = totaliItemCost+prices.get(current); - stepCost = ((float)(remainingCost.get(tile)))/((float)((1f-cbuild.progress)*steps)); - //consume items and progress if items were succesfully consumed - int consumeAmount=0; - int remc = remainingCost.get(tile); - consumeAmount = (int)Math.ceil(stepCost); - if (!(remc>consumeAmount)) { - consumeAmount = remc; - } - Log.info("Attempting to consume " + consumeAmount + " ,from " + remainingCost.get(tile) + " remaining" + "progress: " + cbuild.progress); - Unit builderUnit = buildingUnits.random(); - if (totaliItemCost != 0 || consumeAmount==0) { - if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=consumeAmount || consumeAmount==0) { - RedVsBluePlugin.players.get(player.uuid()).subtractScore(consumeAmount); - remc = remc-consumeAmount; - remainingCost.put(tile,remc); - int remainingItemCost2=0; - remainingItemCost2 = remainingItemCost2+remc; - if (remainingItemCost2==0 || cbuild.progress >= 0.999999f) { - Log.info("finishing construction"); - cbuild.progress=1.0001f; - Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); - tile.build.placed(); - } else { - cbuild.progress=1.0001f-(((float)remainingItemCost2)/((float)totaliItemCost)); - Log.info("updating progress"); - } - } - } + if (buildspeed > 0f) { + Log.info("Attempting to consume " + cost+ " ,from player " + player); + Unit builderUnit = buildingUnits.random(); + if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=consumeAmount) { + RedVsBluePlugin.players.get(player.uuid()).subtractScore(consumeAmount); + remainingCost.put(tile,remc); + int remainingItemCost2=0; + Log.info("finishing construction"); + cbuild.progress=1.0001f; + Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); + tile.build.placed(); } } } + } } catch (Exception e) { - Log.info("goofy ahh exception in the building system,you will see this a lot,nothing should break though"); + Log.info("goofy ahh exception in the building system"); Log.info(e.toString()); } } From 02213591471548171f9480605aa5f8ba05a9c26f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:04:31 +0300 Subject: [PATCH 251/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index fb5dd729..a1a6c187 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -47,7 +47,7 @@ public void run() { Block previous = cbuild.previous; Block current = cbuild.current; float buildspeed = 0f; - int cost = prices.get(b.block()); + int cost = prices.get(b.tile.block()); //calculate build speed Seq buildingUnits = new Seq<>(); buildingUnits.clear(); @@ -77,9 +77,8 @@ public void run() { if (buildspeed > 0f) { Log.info("Attempting to consume " + cost+ " ,from player " + player); Unit builderUnit = buildingUnits.random(); - if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=consumeAmount) { - RedVsBluePlugin.players.get(player.uuid()).subtractScore(consumeAmount); - remainingCost.put(tile,remc); + if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost) { + RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); int remainingItemCost2=0; Log.info("finishing construction"); cbuild.progress=1.0001f; From c085d516c8674402c5ac0228e96311248207d74b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:23:38 +0300 Subject: [PATCH 252/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 9f109076..248c12ab 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -143,6 +143,7 @@ public void init() { SpawnEffect.initEffect(); Boss.forEachBoss(); Premium.init(); + for (UnitType unit : Vars.content.units()) { if (unit == UnitTypes.crawler) { @@ -391,6 +392,10 @@ public void init() { Timer timer = new Timer(); timer.scheduleTask(task, 300, 300); + + UpdateConstructBlocks updateConstructBlocks = new UpdateConstructBlocks(); + Timer.schedule(updateConstructBlocks, 10f, 0.2f); + Groups.player.each(player -> { if (player != null) { From d681c317d72425fcafe1ff8bd7072b063d9fec23 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:26:12 +0300 Subject: [PATCH 253/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index a1a6c187..34b4108e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -84,6 +84,8 @@ public void run() { cbuild.progress=1.0001f; Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); tile.build.placed(); + } else { + Vars.world.tile(b.x*8,b.y*8).setNet(Blocks.air,Team.derelict,0); } } } From a75967597a88eb07ceb83a58250533505ad92fe6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:27:04 +0300 Subject: [PATCH 254/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index ea74d9ef..e8e3f88f 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -43,6 +43,8 @@ public static void initRules() { state.rules.bannedBlocks.add(block); } + state.rules.buildSpeedMultiplier = 0; + state.rules.waveSpacing = Integer.MAX_VALUE; state.rules.waves = true; state.rules.bannedUnits.add(UnitTypes.alpha); From 146732e4323b67bcf50da588393ef0ce89e12689 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:29:59 +0300 Subject: [PATCH 255/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 248c12ab..2efc75ab 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -35,6 +35,7 @@ import net.voiddustry.redvsblue.game.stations.Laboratory; import net.voiddustry.redvsblue.game.building.BuildBlock; import net.voiddustry.redvsblue.game.building.BuildMenu; +import net.voiddustry.redvsblue.game.building.UpdateConstructBlocks; import net.voiddustry.redvsblue.game.starting_menu.StartingMenu; import net.voiddustry.redvsblue.game.stations.*; import net.voiddustry.redvsblue.game.units.SpecialUnits; From a998376b23a9a197ef9f6d810001a11aea663f3b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:30:15 +0300 Subject: [PATCH 256/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 34b4108e..b336ee9d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -85,7 +85,7 @@ public void run() { Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); tile.build.placed(); } else { - Vars.world.tile(b.x*8,b.y*8).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile((int)b.x*8,(int)b.y*8).setNet(Blocks.air,Team.derelict,0); } } } From 087f0f402ae643eb24bfc3e17fa1c0eaf4a27804 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:43:14 +0300 Subject: [PATCH 257/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index e8e3f88f..c9bae0de 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -48,6 +48,7 @@ public static void initRules() { state.rules.waveSpacing = Integer.MAX_VALUE; state.rules.waves = true; state.rules.bannedUnits.add(UnitTypes.alpha); + state.rules.buildCostMultiplier = 0; state.rules.hideBannedBlocks = true; From d020e42bf335f0da6c3a502fb14153950da1d6d9 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:46:53 +0300 Subject: [PATCH 258/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index b336ee9d..4bd92b5d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -36,7 +36,7 @@ public class UpdateConstructBlocks implements Runnable { HashMap prices = Buildings.getPrices(); @Override public void run() { - try { + //try { for (Building b : Groups.build) { if (b.tile.block() instanceof ConstructBlock cb) { @@ -90,9 +90,9 @@ public void run() { } } } - } catch (Exception e) { - Log.info("goofy ahh exception in the building system"); - Log.info(e.toString()); - } + //} catch (Exception e) { + //Log.info("goofy ahh exception in the building system"); + //Log.info(e.toString()); + // } } } From 52e363b627d26b8a2d3126aaddbf86c571a704f2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:50:48 +0300 Subject: [PATCH 259/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 4bd92b5d..553145ec 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -47,7 +47,7 @@ public void run() { Block previous = cbuild.previous; Block current = cbuild.current; float buildspeed = 0f; - int cost = prices.get(b.tile.block()); + int cost = prices.get(current); //calculate build speed Seq buildingUnits = new Seq<>(); buildingUnits.clear(); From f268886c0accf516c6a722e01b9ccf82d5006284 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:51:09 +0300 Subject: [PATCH 260/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 553145ec..3a81f2cd 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -36,7 +36,7 @@ public class UpdateConstructBlocks implements Runnable { HashMap prices = Buildings.getPrices(); @Override public void run() { - //try { + try { for (Building b : Groups.build) { if (b.tile.block() instanceof ConstructBlock cb) { @@ -90,9 +90,9 @@ public void run() { } } } - //} catch (Exception e) { - //Log.info("goofy ahh exception in the building system"); - //Log.info(e.toString()); - // } + } catch (Exception e) { + Log.info("goofy ahh exception in the building system"); + Log.info(e.toString()); + } } } From a3ceb63bb5e98bac188f77a5e64bd30474c7a101 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:54:36 +0300 Subject: [PATCH 261/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 3a81f2cd..830ae381 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -85,7 +85,7 @@ public void run() { Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); tile.build.placed(); } else { - Vars.world.tile((int)b.x*8,(int)b.y*8).setNet(Blocks.air,Team.derelict,0); + Vars.world.tile((int)b.x,(int)b.y).setNet(Blocks.air,Team.derelict,0); } } } From 859e13a9ce1974ba369bb7dacd537d3d38de951c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:01:25 +0300 Subject: [PATCH 262/460] Update rvsb.json --- patches/rvsb.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 6a274f87..2ceb1cbf 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -807,3 +807,7 @@ block.rtg-generator.itemDuration: 72000 //statuses status.electrified.reloadMultiplier: 0.75 + +//building system +block.conveyor.requirements: [] +block.thorium-wall-large.requirements: [] From ea8f8ca31fd8a458c85a5453ecf97129deead4b6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:23:50 +0300 Subject: [PATCH 263/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 68 ++++++------------- 1 file changed, 22 insertions(+), 46 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 830ae381..f21ffe1b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -38,54 +38,30 @@ public class UpdateConstructBlocks implements Runnable { public void run() { try { - for (Building b : Groups.build) { - if (b.tile.block() instanceof ConstructBlock cb) { - ConstructBlock.ConstructBuild cbuild = (ConstructBlock.ConstructBuild)b; - Tile tile = cbuild.tile; - float x = cbuild.x; - float y = cbuild.y; - Block previous = cbuild.previous; - Block current = cbuild.current; - float buildspeed = 0f; - int cost = prices.get(current); - //calculate build speed - Seq buildingUnits = new Seq<>(); - buildingUnits.clear(); - - Player player = null; - - for (Unit u : Groups.unit) { - if (u.buildPlan() != null) { - if (u.buildPlan().worldContext) { - if (u.buildPlan().build() == b && u.isBuilding()) { - - if (u.getPlayer() != null) { - player = u.getPlayer(); - } - - buildingUnits.add(u); - if (u.buildPlan().breaking) { - buildspeed = buildspeed - u.type.buildSpeed; - } else { - buildspeed = buildspeed + u.type.buildSpeed; - } - } + for (Unit u : Groups.unit) { + if (u.buildPlan() != null) { + if (u.buildPlan().worldContext) { + if (u.isBuilding()) { + bp = u.buildPlan() + + int cost = prices.get(bp.block); + + if (u.getPlayer() != null && u.buildPlan().breaking == false) { + Player player = u.getPlayer(); + if (buildspeed > 0f) { + Log.info("Attempting to consume " + cost+ " ,from player " + player); + Unit builderUnit = buildingUnits.random(); + if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && (!(cost == null))) { + RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); + Log.info("finishing construction"); + Tile tile = Vars.world.tile(bp.x,bp.y); + Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team,bp.config); + tile.build.placed(); + } else { + Vars.world.tile((int)b.x,(int)b.y).setNet(Blocks.air,Team.derelict,0); } + } } - } - - if (buildspeed > 0f) { - Log.info("Attempting to consume " + cost+ " ,from player " + player); - Unit builderUnit = buildingUnits.random(); - if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost) { - RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); - int remainingItemCost2=0; - Log.info("finishing construction"); - cbuild.progress=1.0001f; - Call.constructFinish(tile,current,null,(byte)builderUnit.buildPlan().rotation,b.team,builderUnit.buildPlan().block.instantBuild ? builderUnit.buildPlan().config : null); - tile.build.placed(); - } else { - Vars.world.tile((int)b.x,(int)b.y).setNet(Blocks.air,Team.derelict,0); } } } From 3c77da5d007af9b76e66afb70014b4805a1f58dc Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:25:35 +0300 Subject: [PATCH 264/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index f21ffe1b..6e50e727 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -42,7 +42,7 @@ public void run() { if (u.buildPlan() != null) { if (u.buildPlan().worldContext) { if (u.isBuilding()) { - bp = u.buildPlan() + bp = u.buildPlan(); int cost = prices.get(bp.block); From be369e51de69e85a6820db3d3eaaeeb1d621e895 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:43:21 +0300 Subject: [PATCH 265/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 6e50e727..ccb879c4 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -43,10 +43,11 @@ public void run() { if (u.buildPlan().worldContext) { if (u.isBuilding()) { bp = u.buildPlan(); - + + Tile tile = Vars.world.tile(bp.x,bp.y); int cost = prices.get(bp.block); - if (u.getPlayer() != null && u.buildPlan().breaking == false) { + if (u.getPlayer() != null && u.buildPlan().breaking == false %% u.buildPlan().placeable()) { Player player = u.getPlayer(); if (buildspeed > 0f) { Log.info("Attempting to consume " + cost+ " ,from player " + player); @@ -54,11 +55,12 @@ public void run() { if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); Log.info("finishing construction"); - Tile tile = Vars.world.tile(bp.x,bp.y); Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team,bp.config); tile.build.placed(); } else { - Vars.world.tile((int)b.x,(int)b.y).setNet(Blocks.air,Team.derelict,0); + if (tile.block() instanceof ConstructBlock cb) { + tile.setNet(Blocks.air,Team.derelict,0); + } } } } @@ -68,7 +70,7 @@ public void run() { } } catch (Exception e) { Log.info("goofy ahh exception in the building system"); - Log.info(e.toString()); + e.printStackTrace(); } } } From 62f197391491eff930bb73eeb0b8ab7827cb2da4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:44:55 +0300 Subject: [PATCH 266/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index ccb879c4..a510e69b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -47,7 +47,7 @@ public void run() { Tile tile = Vars.world.tile(bp.x,bp.y); int cost = prices.get(bp.block); - if (u.getPlayer() != null && u.buildPlan().breaking == false %% u.buildPlan().placeable()) { + if (u.getPlayer() != null && u.buildPlan().breaking == false && u.buildPlan().placeable()) { Player player = u.getPlayer(); if (buildspeed > 0f) { Log.info("Attempting to consume " + cost+ " ,from player " + player); From 60e6fad75afe12413806e29e459b3e16f8e13345 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:46:28 +0300 Subject: [PATCH 267/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index a510e69b..3b132125 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -42,7 +42,7 @@ public void run() { if (u.buildPlan() != null) { if (u.buildPlan().worldContext) { if (u.isBuilding()) { - bp = u.buildPlan(); + BuildPlan bp = u.buildPlan(); Tile tile = Vars.world.tile(bp.x,bp.y); int cost = prices.get(bp.block); @@ -51,11 +51,10 @@ public void run() { Player player = u.getPlayer(); if (buildspeed > 0f) { Log.info("Attempting to consume " + cost+ " ,from player " + player); - Unit builderUnit = buildingUnits.random(); if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); Log.info("finishing construction"); - Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team,bp.config); + Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); tile.build.placed(); } else { if (tile.block() instanceof ConstructBlock cb) { From e27e2581556ebbd099f9c9791e7ab7ea5279f276 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:50:44 +0300 Subject: [PATCH 268/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 3b132125..c6132709 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -26,6 +26,7 @@ import mindustry.mod.*; import mindustry.net.Administration.*; import mindustry.content.Blocks; +import mindustry.entities.units.BuildPlan; import net.voiddustry.redvsblue.RedVsBluePlugin; import net.voiddustry.redvsblue.game.building.Buildings; @@ -45,11 +46,11 @@ public void run() { BuildPlan bp = u.buildPlan(); Tile tile = Vars.world.tile(bp.x,bp.y); - int cost = prices.get(bp.block); + Integer cost = prices.get(bp.block); - if (u.getPlayer() != null && u.buildPlan().breaking == false && u.buildPlan().placeable()) { + if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue)) { Player player = u.getPlayer(); - if (buildspeed > 0f) { + if (u.buildPlan().breaking == false) { Log.info("Attempting to consume " + cost+ " ,from player " + player); if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); From 3a9405306d19d3d174aa96550e57ce92202a49d2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:58:51 +0300 Subject: [PATCH 269/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index c9bae0de..73bf73d1 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -22,6 +22,7 @@ import net.voiddustry.redvsblue.PlayerData; import net.voiddustry.redvsblue.game.building.BlocksTypes; import net.voiddustry.redvsblue.game.building.BuildBlock; +import net.voiddustry.redvsblue.game.building.Buildings; import net.voiddustry.redvsblue.game.crux.StageUnits; import net.voiddustry.redvsblue.game.starting_menu.StartingItems; import net.voiddustry.redvsblue.game.starting_menu.StartingMenu; @@ -39,8 +40,12 @@ public class Utils { public static int money_per_min = 3; public static void initRules() { - for ( Block block : Vars.content.blocks()) { - state.rules.bannedBlocks.add(block); + + Seq prices = Buildings.getPrices(); + for (Block block : Vars.content.blocks()) { + if (!prices.containsKey(block)) { + state.rules.bannedBlocks.add(block); + } } state.rules.buildSpeedMultiplier = 0; From 9e17c011a51780b314ab8cfdb53018beb2ac2b80 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:59:36 +0300 Subject: [PATCH 270/460] Update Buildings.java --- .../redvsblue/game/building/Buildings.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 49d0b070..058db218 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -13,14 +13,14 @@ public class Buildings { public static HashMap getPrices() { HashMap prices = new HashMap<>(); - prices.put(Blocks.conveyor, 5); - prices.put(Blocks.router, 12); - prices.put(Blocks.junction, 20); - prices.put(Blocks.mechanicalDrill, 50); - prices.put(Blocks.graphitePress, 120); - prices.put(Blocks.duo, 75); - prices.put(Blocks.powerNode, 30); - prices.put(Blocks.battery, 60); + prices.put(Blocks.conveyor, 1); + prices.put(Blocks.router, 2); + prices.put(Blocks.junction, 2); + prices.put(Blocks.mechanicalDrill, 3); + prices.put(Blocks.graphitePress, 5); + prices.put(Blocks.duo, 5); + prices.put(Blocks.powerNode, 3); + prices.put(Blocks.battery, 6); return prices; } From 5d21bf4d2cd9572d2f3755a298877231c3e427bb Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:01:59 +0300 Subject: [PATCH 271/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 73bf73d1..85002c03 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -13,6 +13,7 @@ import mindustry.type.UnitType; import java.util.Locale; +import java.util.HashMap; import mindustry.type.Weapon; import mindustry.world.Block; @@ -41,7 +42,7 @@ public class Utils { public static void initRules() { - Seq prices = Buildings.getPrices(); + HashMap prices = Buildings.getPrices(); for (Block block : Vars.content.blocks()) { if (!prices.containsKey(block)) { state.rules.bannedBlocks.add(block); From 720e2baf5058f4b23c0005375c2a584cf57211de Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:09:20 +0300 Subject: [PATCH 272/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 85002c03..a51c9691 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -42,7 +42,7 @@ public class Utils { public static void initRules() { - HashMap prices = Buildings.getPrices(); + HashMap prices = Buildings.getPrices(); for (Block block : Vars.content.blocks()) { if (!prices.containsKey(block)) { state.rules.bannedBlocks.add(block); From 040f72badc44c67142b981c8fd20432314efc9bd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:10:05 +0300 Subject: [PATCH 273/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index c6132709..5343fc0b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -42,7 +42,7 @@ public void run() { for (Unit u : Groups.unit) { if (u.buildPlan() != null) { if (u.buildPlan().worldContext) { - if (u.isBuilding()) { + //if (u.isBuilding) { BuildPlan bp = u.buildPlan(); Tile tile = Vars.world.tile(bp.x,bp.y); @@ -64,7 +64,7 @@ public void run() { } } } - } + //} } } } From 35ee3f14ce334ab744a254d882da59f41bc812ee Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:12:58 +0300 Subject: [PATCH 274/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 5343fc0b..ca9bc358 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -48,7 +48,7 @@ public void run() { Tile tile = Vars.world.tile(bp.x,bp.y); Integer cost = prices.get(bp.block); - if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue)) { + if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue) && u.dst(bp.x,bp.y) Date: Thu, 22 Jan 2026 11:17:21 +0300 Subject: [PATCH 275/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index ca9bc358..e0e0197c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -48,10 +48,10 @@ public void run() { Tile tile = Vars.world.tile(bp.x,bp.y); Integer cost = prices.get(bp.block); - if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue) && u.dst(bp.x,bp.y)=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); Log.info("finishing construction"); From 27dfcf487bbfafcaeedcd4fb8e266cd9cc1c2bc0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:20:09 +0300 Subject: [PATCH 276/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index e0e0197c..a183d922 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -50,7 +50,7 @@ public void run() { if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue) && u.dst(bp.x*8,bp.y*8)=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); From 4769973a9e0262b3b8438e537787cd41cfce4799 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:23:40 +0300 Subject: [PATCH 277/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index a51c9691..a4806945 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -54,7 +54,6 @@ public static void initRules() { state.rules.waveSpacing = Integer.MAX_VALUE; state.rules.waves = true; state.rules.bannedUnits.add(UnitTypes.alpha); - state.rules.buildCostMultiplier = 0; state.rules.hideBannedBlocks = true; From b11e4d24c985240660547055d972fd6ab1f3449f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:52:59 +0300 Subject: [PATCH 278/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 9b7f7396..9b989b39 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -41,7 +41,7 @@ public class Laboratory { PlayerData playerData = players.get(player.uuid()); - if (playerData.getScore() >= evolutionOption.cost*getMultiplier(evolutionOption, player)) { + if (playerData.getScore() >= ((int)(evolutionOption.cost*getMultiplier(evolutionOption, player)))) { if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true || evolutionOption.unitType.groundLayer==Layer.legUnit)) { Unit unit = evolutionOption.unitType.spawn(Team.blue, player.x(), player.y()); unit.health = unit.type.health/2; From 6e085e82726c5f263f5efde714e5ccaf5ec744b5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:03:34 +0300 Subject: [PATCH 279/460] buildings list 1 --- .../redvsblue/game/building/Buildings.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 058db218..00273775 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -13,14 +13,22 @@ public class Buildings { public static HashMap getPrices() { HashMap prices = new HashMap<>(); - prices.put(Blocks.conveyor, 1); - prices.put(Blocks.router, 2); - prices.put(Blocks.junction, 2); - prices.put(Blocks.mechanicalDrill, 3); - prices.put(Blocks.graphitePress, 5); - prices.put(Blocks.duo, 5); + prices.put(Blocks.bridgeConveyor, 3); + prices.put(Blocks.bridgeConduit, 3); + prices.put(Blocks.unloader, 9); + prices.put(Blocks.powerNodeLarge, 3); + prices.put(Blocks.pneumaticDrill, 9); + prices.put(Blocks.container, 3); + prices.put(Blocks.berylliumWall, 2); + prices.put(Blocks.beryllumWallLarge, 6); + prices.put(Blocks.thoriumWall, 4); + prices.put(Blocks.thoriumWallLarge, 12); + prices.put(Blocks.blastDoor, 30); + prices.put(Blocks.combustionGenerator, 9); + prices.put(Blocks.rtgGenerator, 30); + prices.put(Blocks.laserDrill, 25); prices.put(Blocks.powerNode, 3); - prices.put(Blocks.battery, 6); + prices.put(Blocks.battery, 5); return prices; } From 5a36965662321af844cceb608791b6d61f3554e1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:08:19 +0300 Subject: [PATCH 280/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 00273775..8d3b1523 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -16,7 +16,7 @@ public static HashMap getPrices() { prices.put(Blocks.bridgeConveyor, 3); prices.put(Blocks.bridgeConduit, 3); prices.put(Blocks.unloader, 9); - prices.put(Blocks.powerNodeLarge, 3); + prices.put(Blocks.powerNodeLarge, 9); prices.put(Blocks.pneumaticDrill, 9); prices.put(Blocks.container, 3); prices.put(Blocks.berylliumWall, 2); From e575ff3635d77c01c3b02ae8893d5ab3c65c5804 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:11:41 +0300 Subject: [PATCH 281/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 8d3b1523..3d18dab2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -27,6 +27,7 @@ public static HashMap getPrices() { prices.put(Blocks.combustionGenerator, 9); prices.put(Blocks.rtgGenerator, 30); prices.put(Blocks.laserDrill, 25); + prices.put(Blocks.forceProjector, 35); prices.put(Blocks.powerNode, 3); prices.put(Blocks.battery, 5); From 1ec238d784986b2d7c45ae291c24b8f27799fd51 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:12:51 +0300 Subject: [PATCH 282/460] block prices --- patches/rvsb.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 6a274f87..2b9529a8 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -807,3 +807,27 @@ block.rtg-generator.itemDuration: 72000 //statuses status.electrified.reloadMultiplier: 0.75 + +//building system,match prices with Buildings.java +item.dormant-cyst.localisedName: "points" + +block.bridge-conduit.requirements: [dormant-cyst/3] +block.bridge-conveyor.requirements: [dormant-cyst/3] +block.unloader.requirements: [dormant-cyst/9] +block.power-node-large.requirements: [dormant-cyst/9] +block.pneumatic-drill.requirements: [dormant-cyst/9] +block.container.requirements: [dormant-cyst/3] +block.beryllium-wall.requirements: [dormant-cyst/2] +block.beryllium-wall.requirements: [dormant-cyst/2] +block.beryllium-wall-large.requirements: [dormant-cyst/6] +block.thorium-wall.requirements: [dormant-cyst/4] +block.thorium-wall-large.requirements: [dormant-cyst/12] +block.blast-door.requirements: [dormant-cyst/30] +block.combustion-generator.requirements: [dormant-cyst/9] +block.rtg-generator.requirements: [dormant-cyst/30] +block.laserDrill.requirements: [dormant-cyst/25] +block.forceProjector.requirements: [dormant-cyst/35] +block.powerNode.requirements: [dormant-cyst/3] +block.battery.requirements: [dormant-cyst/5] + + From 7c169426aa2dbf0ff2d7af478474dd3edcc65dc8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:13:53 +0300 Subject: [PATCH 283/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 3d18dab2..ded8f774 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -20,7 +20,7 @@ public static HashMap getPrices() { prices.put(Blocks.pneumaticDrill, 9); prices.put(Blocks.container, 3); prices.put(Blocks.berylliumWall, 2); - prices.put(Blocks.beryllumWallLarge, 6); + prices.put(Blocks.berylliumWallLarge, 6); prices.put(Blocks.thoriumWall, 4); prices.put(Blocks.thoriumWallLarge, 12); prices.put(Blocks.blastDoor, 30); From 9a36200e35e691789e7f68c4b49be992cbc5dba0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:15:16 +0300 Subject: [PATCH 284/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index ded8f774..1d6d902d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -13,7 +13,7 @@ public class Buildings { public static HashMap getPrices() { HashMap prices = new HashMap<>(); - prices.put(Blocks.bridgeConveyor, 3); + prices.put(Blocks.itemBridge, 3); prices.put(Blocks.bridgeConduit, 3); prices.put(Blocks.unloader, 9); prices.put(Blocks.powerNodeLarge, 9); From 7ce13f544646cedc0a10db8250cd80b98d3eb34e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:16:12 +0300 Subject: [PATCH 285/460] Update rvsb.json --- patches/rvsb.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 2b9529a8..66950d14 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -812,13 +812,12 @@ status.electrified.reloadMultiplier: 0.75 item.dormant-cyst.localisedName: "points" block.bridge-conduit.requirements: [dormant-cyst/3] -block.bridge-conveyor.requirements: [dormant-cyst/3] +block.item-bridge.requirements: [dormant-cyst/3] block.unloader.requirements: [dormant-cyst/9] block.power-node-large.requirements: [dormant-cyst/9] block.pneumatic-drill.requirements: [dormant-cyst/9] block.container.requirements: [dormant-cyst/3] block.beryllium-wall.requirements: [dormant-cyst/2] -block.beryllium-wall.requirements: [dormant-cyst/2] block.beryllium-wall-large.requirements: [dormant-cyst/6] block.thorium-wall.requirements: [dormant-cyst/4] block.thorium-wall-large.requirements: [dormant-cyst/12] From 61134ecc1957261f3f2af0ff5c6eb2b827914ca4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:20:29 +0300 Subject: [PATCH 286/460] Update rvsb.json --- patches/rvsb.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 66950d14..3a083fb3 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -809,7 +809,9 @@ block.rtg-generator.itemDuration: 72000 status.electrified.reloadMultiplier: 0.75 //building system,match prices with Buildings.java -item.dormant-cyst.localisedName: "points" +item.dormant-cyst.name: "points" +item.dormant-cyst.uiIcon: "unit-dagger-ui" +item.dormant-cyst.fullIcon: "unit-dagger-preview" block.bridge-conduit.requirements: [dormant-cyst/3] block.item-bridge.requirements: [dormant-cyst/3] @@ -824,7 +826,7 @@ block.thorium-wall-large.requirements: [dormant-cyst/12] block.blast-door.requirements: [dormant-cyst/30] block.combustion-generator.requirements: [dormant-cyst/9] block.rtg-generator.requirements: [dormant-cyst/30] -block.laserDrill.requirements: [dormant-cyst/25] +block.laser-drill.requirements: [dormant-cyst/25] block.forceProjector.requirements: [dormant-cyst/35] block.powerNode.requirements: [dormant-cyst/3] block.battery.requirements: [dormant-cyst/5] From 947de503ec866fc6c37e748714b9e7a29a573892 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:27:47 +0300 Subject: [PATCH 287/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 3a083fb3..bc32c377 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -827,8 +827,8 @@ block.blast-door.requirements: [dormant-cyst/30] block.combustion-generator.requirements: [dormant-cyst/9] block.rtg-generator.requirements: [dormant-cyst/30] block.laser-drill.requirements: [dormant-cyst/25] -block.forceProjector.requirements: [dormant-cyst/35] -block.powerNode.requirements: [dormant-cyst/3] +block.force-projector.requirements: [dormant-cyst/35] +block.power-node.requirements: [dormant-cyst/3] block.battery.requirements: [dormant-cyst/5] From 63152041c39be23ba44e9cdf17ecae9b11fb2c00 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:17:13 +0300 Subject: [PATCH 288/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index bc32c377..373b714d 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -809,7 +809,7 @@ block.rtg-generator.itemDuration: 72000 status.electrified.reloadMultiplier: 0.75 //building system,match prices with Buildings.java -item.dormant-cyst.name: "points" +item.dormant-cyst.name: points item.dormant-cyst.uiIcon: "unit-dagger-ui" item.dormant-cyst.fullIcon: "unit-dagger-preview" From 77193010f1df954b85f8af537e6f20f33f2e7f7a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:20:07 +0300 Subject: [PATCH 289/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 373b714d..477f4b4f 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -814,7 +814,7 @@ item.dormant-cyst.uiIcon: "unit-dagger-ui" item.dormant-cyst.fullIcon: "unit-dagger-preview" block.bridge-conduit.requirements: [dormant-cyst/3] -block.item-bridge.requirements: [dormant-cyst/3] +block.bridge-conveyor.requirements: [dormant-cyst/3] block.unloader.requirements: [dormant-cyst/9] block.power-node-large.requirements: [dormant-cyst/9] block.pneumatic-drill.requirements: [dormant-cyst/9] From acdd9f930ff3dff0fd37858c7c7399e7217e5d18 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:21:55 +0300 Subject: [PATCH 290/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 477f4b4f..47c4e851 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -809,7 +809,7 @@ block.rtg-generator.itemDuration: 72000 status.electrified.reloadMultiplier: 0.75 //building system,match prices with Buildings.java -item.dormant-cyst.name: points +item.dormant-cyst.localizedName: points item.dormant-cyst.uiIcon: "unit-dagger-ui" item.dormant-cyst.fullIcon: "unit-dagger-preview" From 152fd20a1248d6641117be9f914be059e21fed0e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:25:42 +0300 Subject: [PATCH 291/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 2efc75ab..fdd53b49 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -336,8 +336,7 @@ public void init() { BuildBlock.clear(); Boss.bosses.clear(); - - + Vars.state.rules.bannedBlocks.clear(); initRules(); StartingMenu.canOpenMenu = true; From 97e200baed08081e6a35d9db7dbd256b3ca5131b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:11:46 +0300 Subject: [PATCH 292/460] mixtech auto enable --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index a4806945..7e25e7bc 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -51,6 +51,9 @@ public static void initRules() { state.rules.buildSpeedMultiplier = 0; + rules.env = Vars.defaultEnv; + rules.planet = Planets.sun; + state.rules.waveSpacing = Integer.MAX_VALUE; state.rules.waves = true; state.rules.bannedUnits.add(UnitTypes.alpha); From 6972e7b88ca84890addd58cf81ac5ddb0e82350c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:14:23 +0300 Subject: [PATCH 293/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 7e25e7bc..202c988b 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -51,8 +51,8 @@ public static void initRules() { state.rules.buildSpeedMultiplier = 0; - rules.env = Vars.defaultEnv; - rules.planet = Planets.sun; + state.rules.env = Vars.defaultEnv; + state.rules.planet = Planets.sun; state.rules.waveSpacing = Integer.MAX_VALUE; state.rules.waves = true; From d613b4399b8fae2d2a50b27f594574a694fcb8c0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:30:32 +0300 Subject: [PATCH 294/460] building rework final --- patches/rvsb.json | 63 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 47c4e851..f703aed0 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -809,7 +809,7 @@ block.rtg-generator.itemDuration: 72000 status.electrified.reloadMultiplier: 0.75 //building system,match prices with Buildings.java -item.dormant-cyst.localizedName: points +item.dormant-cyst.localizedName: " Points" item.dormant-cyst.uiIcon: "unit-dagger-ui" item.dormant-cyst.fullIcon: "unit-dagger-preview" @@ -831,4 +831,65 @@ block.force-projector.requirements: [dormant-cyst/35] block.power-node.requirements: [dormant-cyst/3] block.battery.requirements: [dormant-cyst/5] +//building for everyone +unit.dagger.buildSpeed: 0.01 +unit.mace.buildSpeed: 0.01 +unit.fortress.buildSpeed: 0.01 +unit.scepter.buildSpeed: 0.01 +unit.reign.buildSpeed: 0.01 + +unit.flare.buildSpeed: 0.01 +unit.horizon.buildSpeed: 0.01 +unit.zenith.buildSpeed: 0.01 +unit.antumbra.buildSpeed: 0.01 +unit.eclipse.buildSpeed: 0.01 + +unit.nova.buildSpeed: 0.01 +unit.pulsar.buildSpeed: 0.01 +unit.quasar.buildSpeed: 0.01 +unit.vela.buildSpeed: 0.01 +unit.corvus.buildSpeed: 0.01 + +unit.crawler.buildSpeed: 0.01 +unit.atrax.buildSpeed: 0.01 +unit.spiroct.buildSpeed: 0.01 +unit.arkyid.buildSpeed: 0.01 +unit.toxopid.buildSpeed: 0.01 + +unit.mono.buildSpeed: 0.01 +unit.poly.buildSpeed: 0.01 +unit.mega.buildSpeed: 0.01 +unit.quad.buildSpeed: 0.01 +unit.oct.buildSpeed: 0.01 + +unit.risso.buildSpeed: 0.01 +unit.minke.buildSpeed: 0.01 +unit.bryde.buildSpeed: 0.01 +unit.sei.buildSpeed: 0.01 +unit.omura.buildSpeed: 0.01 + +unit.retusa.buildSpeed: 0.01 +unit.oxynoe.buildSpeed: 0.01 +unit.cyerce.buildSpeed: 0.01 +unit.aegires.buildSpeed: 0.01 +unit.navanax.buildSpeed: 0.01 + +unit.stell.buildSpeed: 0.01 +unit.locus.buildSpeed: 0.01 +unit.precept.buildSpeed: 0.01 +unit.vanquish.buildSpeed: 0.01 +unit.conquer.buildSpeed: 0.01 + +unit.merui.buildSpeed: 0.01 +unit.cleroi.buildSpeed: 0.01 +unit.anthicus.buildSpeed: 0.01 +unit.tecta.buildSpeed: 0.01 +unit.collaris.buildSpeed: 0.01 + +unit.elude.buildSpeed: 0.01 +unit.avert.buildSpeed: 0.01 +unit.obviate.buildSpeed: 0.01 +unit.quell.buildSpeed: 0.01 +unit.disrupt.buildSpeed: 0.01 + From 1c49bbeb923cf596a736e5e23f78530f33aebe80 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:53:21 +0300 Subject: [PATCH 295/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BlocksType.java --- .../redvsblue/game/building/BlocksType.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BlocksType.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BlocksType.java b/src/main/java/net/voiddustry/redvsblue/game/building/BlocksType.java deleted file mode 100644 index 6927c819..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BlocksType.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import mindustry.world.Block; - -public class BlocksType { - public String name; - public Block block; - public int cost; - public String color; - - public BlocksType(String name, Block block, int cost, String color) { - this.name = name; - this.block = block; - this.cost = cost; - this.color = color; - } -} From d82b16827ce00bdf6392d0a91d50bcb18892c478 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:53:53 +0300 Subject: [PATCH 296/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BuildBlock.java --- .../redvsblue/game/building/BuildBlock.java | 172 ------------------ 1 file changed, 172 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BuildBlock.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BuildBlock.java b/src/main/java/net/voiddustry/redvsblue/game/building/BuildBlock.java deleted file mode 100644 index 41c42eb1..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BuildBlock.java +++ /dev/null @@ -1,172 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import arc.util.Timer; -import mindustry.Vars; -import mindustry.content.Blocks; -import mindustry.game.Team; -import mindustry.gen.Call; -import mindustry.gen.Groups; -import mindustry.gen.Player; -import mindustry.world.Tile; -import net.voiddustry.redvsblue.Bundle; - -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; - -import static net.voiddustry.redvsblue.RedVsBluePlugin.*; - -public class BuildBlock { - public static Map buildQueue = new ConcurrentHashMap<>(); - - public static void init() { - Timer.schedule(() -> { - buildQueue.forEach(((buildTicket, remove) -> { - if (playing && buildTicket.player() != null) { - Player player = buildTicket.player(); - Tile position; - if (player.mouseX >= 0 && player.mouseX <= (Vars.state.map.width - 1) * 8 && player.mouseY >= 0 && player.mouseY <= (Vars.state.map.height - 1) * 8) { - position = Vars.world.tile(Math.round(player.mouseX / 8), Math.round(player.mouseY / 8)); - - boolean canBuild; - String text = "[gray][ ]"; - - if (position.block().isAir()) { - canBuild = true; - - switch (buildTicket.block().size) { - case 1 -> { - for (Player p : Groups.player) { - if (p.dst(position.x*8, position.y*8) <= 16) { - canBuild = false; - } - } - if (canBuild) { - drawCursor(player, position, 1, text); - } - } - - case 2 -> { - int centerX = position.x; - int centerY = position.y; - - for (Player p : Groups.player) { - if (p.dst(centerX*8, centerY*8) <= 16) { - canBuild = false; - } - } - - for (int x = 0; x <= 1; x++) { - for (int y = 0; y <= 1; y++) { - if (Vars.world.tile(centerX + x, centerY + y) != null && Vars.world.tile(centerX + x, centerY + y).block() != Blocks.air) { - canBuild = false; - } - } - } - if (canBuild) { - drawCursor(player, position, 2, text); - } - } - case 3 -> { - int centerX = position.x; - int centerY = position.y; - - for (Player p : Groups.player) { - if (p.dst(centerX*8, centerY*8) <= 24) { - canBuild = false; - } - } - - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - if (Vars.world.tile(centerX + x, centerY + y) != null && Vars.world.tile(centerX + x, centerY + y).block() != Blocks.air) { - canBuild = false; - } - } - } - drawCursor(player, position, 3, text); - } - } - - if (players.get(player.uuid()).getScore() < buildTicket.cost()) { - text = Bundle.get("build.not-enough-money", player.locale); - canBuild = false; - drawCursor(player, position, buildTicket.block().size, text); - } - - if (player.shooting && canBuild) { - build(buildTicket, position); - players.get(player.uuid()).subtractScore(buildTicket.cost()); - removeTicket(buildTicket); - if (!buildTicket.single()) { - add(buildTicket); - } - } - } - } - } - })); - }, 0, .09F); - } - - public static void add(BuildTicket buildEntry) { - buildQueue.put(buildEntry, false); - } - - public static void build(BuildTicket buildTicket, Tile position) { - Call.constructFinish(position, buildTicket.block(), null, (byte) 0, Team.blue, null); - } - - public static void removeTicket(BuildTicket buildTicket) { - buildQueue.remove(buildTicket); - } - - public static void clear() { - buildQueue.clear(); - } - - public static void findAndRemove(Player player) { - buildQueue.forEach(((buildTicket, remove) -> { - if (buildTicket.player() == player) { - removeTicket(buildTicket); - } - })); - } - - public static void drawCursor(Player player, Tile position, Integer size, String text) { - switch (size) { - case 1 -> Call.label(player.con, text, 0.01F, (float) ((Math.round(player.mouseX / 8)) * 8), (float) ((Math.round(player.mouseY / 8)) * 8)); - - case 2 -> { - float centerX = position.x * 8; - float centerY = position.y * 8; - - float centerTextX = (position.x + (float) 0.5); - float centerTextY = (position.y + (float) 0.5); - if (Objects.equals(text, Bundle.get("build.not-enough-money", player.locale))) { - Call.label(player.con, text, 0.01F, centerTextX * 8, centerTextY * 8); - } - for (int x = 0; x <= 1; x++) { - for (int y = 0; y <= 1; y++) { - Call.label(player.con, "[orange]#", 0.09F, centerX + x * 8, centerY + y * 8); - } - } - } - - case 3 -> { - int centerX = position.x * 8; - int centerY = position.y * 8; - - for (int x = -1; x <= 1; x++) { - for (int y = -1; y <= 1; y++) { - if (x == 0 && y == 0) { - Call.label(player.con, text, 0.01F, (float) ((Math.round(player.mouseX / 8)) * 8), (float) ((Math.round(player.mouseY / 8)) * 8)); - } else { - Call.label(player.con, "[orange]#", 0.01F, centerX + x * 8, centerY + y * 8); - } - } - } - } - } - } -} From 915c9ea55756ddd9b9eff5df1d8de12ce8b387b3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:54:08 +0300 Subject: [PATCH 297/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BlocksTypes.java --- .../redvsblue/game/building/BlocksTypes.java | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BlocksTypes.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BlocksTypes.java b/src/main/java/net/voiddustry/redvsblue/game/building/BlocksTypes.java deleted file mode 100644 index bb63629b..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BlocksTypes.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import mindustry.content.Blocks; - -public class BlocksTypes { - - public static BlocksType - berylliumWall, berylliumWallLarge, thoriumWall, thoriumWallLarge, doorLarge, drill, laserDrill, powerNode, battery, combustion, rtg, repair, pump; - - - public static void load() { - berylliumWall = new BlocksType("Beryllium Wall", Blocks.berylliumWall, 2, "[#3a8f64]"); - berylliumWallLarge = new BlocksType("Large Beryllium Wall", Blocks.berylliumWallLarge, 8, "[#3a8f64]"); - - thoriumWall = new BlocksType("Thoruim Wall", Blocks.thoriumWall, 3, "[#f9a3c7]"); - thoriumWallLarge = new BlocksType("Large Thorium Wall", Blocks.thoriumWallLarge, 12, "[#f9a3c7]"); - - doorLarge = new BlocksType("Large Door", Blocks.blastDoor, 16, "[#768a9a]"); - - drill = new BlocksType("Pneumatic Drill", Blocks.pneumaticDrill, 3, "[#989AA4]"); - laserDrill = new BlocksType("Laser Drill", Blocks.laserDrill, 25, "[#665C9F]"); - - powerNode = new BlocksType("Power Node", Blocks.powerNode, 2, "[#fbd267]"); - battery = new BlocksType("Battery", Blocks.battery, 5, "[#fbd267]"); - combustion = new BlocksType("Combustion Generator", Blocks.combustionGenerator, 8, "[#F1BE6B]"); - rtg = new BlocksType("RTG", Blocks.rtgGenerator, 20, "[#8A73C6]"); - - repair = new BlocksType("Mender", Blocks.mender, 8, "[#84F490]"); - pump = new BlocksType("Pump", Blocks.mechanicalPump, 6, "[#8F665B]"); - - } -} From fec3d4942292fc397219faf2ecfd6b9443a9f4a5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:54:31 +0300 Subject: [PATCH 298/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BuildMenu.java --- .../redvsblue/game/building/BuildMenu.java | 129 ------------------ 1 file changed, 129 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BuildMenu.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BuildMenu.java b/src/main/java/net/voiddustry/redvsblue/game/building/BuildMenu.java deleted file mode 100644 index d2bba847..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BuildMenu.java +++ /dev/null @@ -1,129 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import mindustry.gen.Call; -import mindustry.gen.Player; - -import mindustry.net.NetConnection; -import mindustry.ui.Menus; -import net.voiddustry.redvsblue.Bundle; - -import java.util.HashMap; -import java.util.Map; - -public class BuildMenu { - - private static final Map selectedBlock = new HashMap<>(); - private static final Map singleBlock = new HashMap<>(); - - public static void openMenu(Player player) { - if (player != null) { - if (!selectedBlock.containsKey(player)) { - selectedBlock.put(player, BlocksTypes.berylliumWall); - singleBlock.put(player, true); - } - - int menu = Menus.registerMenu(((player1, option) -> { - switch (option) { - case 1 -> { - if (singleBlock.get(player)) { - singleBlock.put(player, false); - } else { - singleBlock.put(player, true); - } - openMenu(player); - } - case 3 -> BuildBlock.add(new BuildTicket(player, selectedBlock.get(player).block, singleBlock.get(player), false, selectedBlock.get(player).cost)); - case 4 -> BuildBlock.findAndRemove(player); - - case 5 -> { - selectedBlock.put(player, BlocksTypes.berylliumWall); - openMenu(player); - } - case 6 -> { - selectedBlock.put(player, BlocksTypes.berylliumWallLarge); - openMenu(player); - } - case 7 -> { - selectedBlock.put(player, BlocksTypes.thoriumWall); - openMenu(player); - } - case 8 -> { - selectedBlock.put(player, BlocksTypes.thoriumWallLarge); - openMenu(player); - } - case 9 -> { - selectedBlock.put(player, BlocksTypes.doorLarge); - openMenu(player); - } - case 10 -> { - selectedBlock.put(player, BlocksTypes.drill); - openMenu(player); - } - case 11 -> { - selectedBlock.put(player, BlocksTypes.laserDrill); - openMenu(player); - } - case 12 -> { - selectedBlock.put(player, BlocksTypes.powerNode); - openMenu(player); - } - case 13 -> { - selectedBlock.put(player, BlocksTypes.battery); - openMenu(player); - } - case 14 -> { - selectedBlock.put(player, BlocksTypes.combustion); - openMenu(player); - } - case 15 -> { - selectedBlock.put(player, BlocksTypes.rtg); - openMenu(player); - } - case 16 -> { - selectedBlock.put(player, BlocksTypes.repair); - openMenu(player); - } - case 17 -> { - selectedBlock.put(player, BlocksTypes.pump); - openMenu(player); - } - } - })); - - BlocksType sBlock = selectedBlock.get(player); - - String text = Bundle.format("menu.build.text", Bundle.findLocale(player.locale), sBlock.color, sBlock.name, sBlock.block.health, sBlock.cost); - - String[][] buttons = { - { - "[gray][ [cyan]<- [gray]]", - (singleBlock.get(player))? "[lime]" + Bundle.get("menu.build.single", player.locale) : "[scarlet]" + Bundle.get("menu.build.single", player.locale), - "[gray][ [cyan]-> [gray]]", - - }, - { - Bundle.get("menu.build.build", player.locale), - Bundle.get("menu.build.cancel", player.locale), - }, - {BlocksTypes.berylliumWall.color + BlocksTypes.berylliumWall.name}, - {BlocksTypes.berylliumWallLarge.color + BlocksTypes.berylliumWallLarge.name}, - {BlocksTypes.thoriumWall.color + BlocksTypes.thoriumWallLarge.name}, - {BlocksTypes.thoriumWallLarge.color + BlocksTypes.thoriumWallLarge.name}, - {BlocksTypes.doorLarge.color + BlocksTypes.doorLarge.name}, - {BlocksTypes.drill.color + BlocksTypes.drill.name}, - {BlocksTypes.laserDrill.color + BlocksTypes.laserDrill.name}, - {BlocksTypes.powerNode.color + BlocksTypes.powerNode.name}, - {BlocksTypes.battery.color + BlocksTypes.battery.name}, - {BlocksTypes.combustion.color + BlocksTypes.combustion.name}, - {BlocksTypes.rtg.color + BlocksTypes.rtg.name}, - {BlocksTypes.repair.color + BlocksTypes.repair.name}, - {BlocksTypes.pump.color + BlocksTypes.pump.name} - }; - menu(player.con, menu, text, buttons); - } - } - - private static void menu(NetConnection connection, int menu, String text, String[][] buttons) { - Call.menu(connection, menu, Bundle.get("menu.build.title", connection.player.locale), text, buttons); - } -} From 0746b125b1e09c6493141f262604e4baad208b70 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:54:44 +0300 Subject: [PATCH 299/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BuildTicket.java --- .../net/voiddustry/redvsblue/game/building/BuildTicket.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BuildTicket.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BuildTicket.java b/src/main/java/net/voiddustry/redvsblue/game/building/BuildTicket.java deleted file mode 100644 index 04543881..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BuildTicket.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import mindustry.gen.Player; -import mindustry.world.Block; - -public record BuildTicket(Player player, Block block, Boolean single, Boolean station, int cost) {} From 20f0e3ed69978ca65ff0852e6fc05033205998a7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:54:59 +0300 Subject: [PATCH 300/460] Delete src/main/java/net/voiddustry/redvsblue/game/building/BuildingsInspector.java --- .../redvsblue/game/building/BuildingsInspector.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/BuildingsInspector.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/BuildingsInspector.java b/src/main/java/net/voiddustry/redvsblue/game/building/BuildingsInspector.java deleted file mode 100644 index 482f9935..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/BuildingsInspector.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -public class BuildingsInspector { - -} From e2e2adec8079c9d95357776d02e746880a2db830 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:55:38 +0300 Subject: [PATCH 301/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index a183d922..3c8f0f19 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -42,7 +42,7 @@ public void run() { for (Unit u : Groups.unit) { if (u.buildPlan() != null) { if (u.buildPlan().worldContext) { - //if (u.isBuilding) { + if (u.isBuilding) { BuildPlan bp = u.buildPlan(); Tile tile = Vars.world.tile(bp.x,bp.y); @@ -64,7 +64,7 @@ public void run() { } } } - //} + } } } } From 4eb7a2ac90740b1a914e9d357688c0c148bbf936 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:55:52 +0300 Subject: [PATCH 302/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 3c8f0f19..9eaee1e7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -51,10 +51,10 @@ public void run() { if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue) && u.dst(bp.x*8,bp.y*8)=cost && (!(cost == null))) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); - Log.info("finishing construction"); + //Log.info("finishing construction"); Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); tile.build.placed(); } else { From fa7bdc89a45776c7eb99e770d4a0e84c053c3e38 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:58:52 +0300 Subject: [PATCH 303/460] Update RedVsBluePlugin.java --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index fdd53b49..5bff4c0e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -33,8 +33,6 @@ import net.voiddustry.redvsblue.game.crux.*; import net.voiddustry.redvsblue.game.stations.StationsMenu; import net.voiddustry.redvsblue.game.stations.Laboratory; -import net.voiddustry.redvsblue.game.building.BuildBlock; -import net.voiddustry.redvsblue.game.building.BuildMenu; import net.voiddustry.redvsblue.game.building.UpdateConstructBlocks; import net.voiddustry.redvsblue.game.starting_menu.StartingMenu; import net.voiddustry.redvsblue.game.stations.*; @@ -526,11 +524,11 @@ public void registerClientCommands(CommandHandler handler) { // Log.info(StartingMenu.canOpenMenu); // StartingMenu.openMenu(player, 0); // }); - handler.register("b", "Open Building menu", (args, player) -> { - if (playing && player.team() == Team.blue) { - BuildMenu.openMenu(player); - } - }); + // handler.register("b", "Open Building menu", (args, player) -> { + // if (playing && player.team() == Team.blue) { + // BuildMenu.openMenu(player); + //} + // }); handler.register("bc", "Boss select menu", (args, player) -> { if (playing) { From af2d0e8af266879b1115bfe6a279f319b34a0bda Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:00:01 +0300 Subject: [PATCH 304/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 202c988b..694b69cf 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -21,8 +21,6 @@ import net.voiddustry.redvsblue.Bundle; import net.voiddustry.redvsblue.PlayerData; -import net.voiddustry.redvsblue.game.building.BlocksTypes; -import net.voiddustry.redvsblue.game.building.BuildBlock; import net.voiddustry.redvsblue.game.building.Buildings; import net.voiddustry.redvsblue.game.crux.StageUnits; import net.voiddustry.redvsblue.game.starting_menu.StartingItems; @@ -84,7 +82,6 @@ public void run() { } public static void loadContent() { - BlocksTypes.load(); StartingItems.load(); } @@ -96,7 +93,6 @@ public static void initTimers() { ArmorWorkbench.initTimer(); Recycler.initTimer(); SuppressorTower.initTimer(); - BuildBlock.init(); Timer.schedule(() -> { if (playing) { From c76e6d553afe5a0129c0307a64185059e5f6b86f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:01:43 +0300 Subject: [PATCH 305/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 5bff4c0e..ec122b8d 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -331,7 +331,6 @@ public void init() { ArmorWorkbench.clearWorkbenches(); Recycler.clearRecyclers(); SuppressorTower.clearTowers(); - BuildBlock.clear(); Boss.bosses.clear(); Vars.state.rules.bannedBlocks.clear(); From 3b65e1800763f6fc43a663b67074dc2849c3e49e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:02:25 +0300 Subject: [PATCH 306/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 9eaee1e7..f647597d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -42,7 +42,7 @@ public void run() { for (Unit u : Groups.unit) { if (u.buildPlan() != null) { if (u.buildPlan().worldContext) { - if (u.isBuilding) { + if (u.isBuilding()) { BuildPlan bp = u.buildPlan(); Tile tile = Vars.world.tile(bp.x,bp.y); From b90eb08429ce368a3d326e25607bb0d5bfaecee7 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:16:56 +0300 Subject: [PATCH 307/460] Update rvsb.json --- patches/rvsb.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index f703aed0..9d0f882c 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -830,6 +830,8 @@ block.laser-drill.requirements: [dormant-cyst/25] block.force-projector.requirements: [dormant-cyst/35] block.power-node.requirements: [dormant-cyst/3] block.battery.requirements: [dormant-cyst/5] +block.mechanical-pump.requirements: [dormant-cyst/4] + //building for everyone unit.dagger.buildSpeed: 0.01 From 5f58eb34151f74d5a2b447b5e67dd077ba091be5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:17:32 +0300 Subject: [PATCH 308/460] Update Buildings.java --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 1d6d902d..1910b641 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -30,6 +30,7 @@ public static HashMap getPrices() { prices.put(Blocks.forceProjector, 35); prices.put(Blocks.powerNode, 3); prices.put(Blocks.battery, 5); + prices.put(Blocks.mechanicalPump, 5); return prices; } From 62c88f7435eebfb93b7457c3813c6e0dd9d5918c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:27:33 +0300 Subject: [PATCH 309/460] Update CruxUnit.java --- .../redvsblue/game/crux/CruxUnit.java | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index b00fa12d..3cd27292 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -16,6 +16,7 @@ import net.voiddustry.redvsblue.util.Utils; import java.util.Random; +import java.util.HashMap; public class CruxUnit { public static void callSpawn(Player player) { @@ -73,6 +74,10 @@ private static void spawnCrux() { if (!ClassChooseMenu.units.isEmpty()) { unitType = ClassChooseMenu.units.keys().toSeq().get(Utils.getRandomInt(0, ClassChooseMenu.units.size)); //Utils.getRandomInt(0, ClassChooseMenu.units.size) } + spawnCrux(unitType); + } + + private static void spawnCrux(UnitType) { if (Utils.gameRun) { Tile cruxSpawn = RedVsBluePlugin.redSpawns.random(); @@ -140,28 +145,26 @@ public static void checkUnitCount() { int players = Groups.player.size(); int stage = RedVsBluePlugin.stage; - int cruxUnitsCount = Math.round((players + stage) / (float) 3); + int cruxUnitsCount = Math.round((players + stage) / (float) 2); - final int[] cruxUnits = {0}; - final int[] cruxPlayersWithUnits = {0}; - Groups.player.each(p -> { - if (!(p.unit() == null)) { - if (p.unit().team == Team.crux) { - cruxPlayersWithUnits[0]++; - } - } - }); + final HashMap cruxUnits = new HashMap<>(); - Groups.unit.each(u -> { - if (u.team == Team.crux) { - cruxUnits[0]++; + if (!ClassChooseMenu.units.isEmpty()) { + ClassChooseMenu.units.keys().toSeq().each(type -> { + Groups.unit.each(u -> { + if (u.team == Team.crux && u.type == type) { + if (cruxUnits.get(type) == null) { + cruxUnits.put(type, 0); + } else { + cruxUnits.put(type, cruxUnits.get(type)+1); + } + } + }); + if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size()) { + spawnCrux(); } }); - - if (cruxUnitsCount > (cruxUnits[0]-cruxPlayersWithUnits[0])) { - spawnCrux(); - } } } } From 7b659f56e5384cb2f83597f953ccbd9a27ca6762 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:31:34 +0300 Subject: [PATCH 310/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 3cd27292..552e6957 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -77,7 +77,7 @@ private static void spawnCrux() { spawnCrux(unitType); } - private static void spawnCrux(UnitType) { + private static void spawnCrux(UnitType unitType) { if (Utils.gameRun) { Tile cruxSpawn = RedVsBluePlugin.redSpawns.random(); @@ -147,7 +147,6 @@ public static void checkUnitCount() { int cruxUnitsCount = Math.round((players + stage) / (float) 2); - final HashMap cruxUnits = new HashMap<>(); if (!ClassChooseMenu.units.isEmpty()) { @@ -162,7 +161,7 @@ public static void checkUnitCount() { } }); if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size()) { - spawnCrux(); + spawnCrux(type); } }); } From 3ecbcf888004c6d4446db07c7d81101477857b89 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:36:01 +0300 Subject: [PATCH 311/460] Update CruxUnit.java --- .../redvsblue/game/crux/CruxUnit.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 552e6957..1eef68a3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -150,20 +150,21 @@ public static void checkUnitCount() { final HashMap cruxUnits = new HashMap<>(); if (!ClassChooseMenu.units.isEmpty()) { - ClassChooseMenu.units.keys().toSeq().each(type -> { - Groups.unit.each(u -> { - if (u.team == Team.crux && u.type == type) { - if (cruxUnits.get(type) == null) { - cruxUnits.put(type, 0); - } else { - cruxUnits.put(type, cruxUnits.get(type)+1); + ClassChooseMenu.units.keys().toSeq().each(type -> { + Groups.unit.each(u -> { + if (u.team == Team.crux && u.type == type) { + if (cruxUnits.get(type) == null) { + cruxUnits.put(type, 0); + } else { + cruxUnits.put(type, cruxUnits.get(type)+1); + } } + }); + if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size()) { + spawnCrux(type); } }); - if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size()) { - spawnCrux(type); - } - }); + } } } } From 74faeaf7b9468f4e636be5fd12470bdaf80ce3a0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:38:15 +0300 Subject: [PATCH 312/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 1eef68a3..5e34e460 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,7 +160,7 @@ public static void checkUnitCount() { } } }); - if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size()) { + if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size) { spawnCrux(type); } }); From 9525047bfb3058f01b252ea373e22f414aec372d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:46:27 +0300 Subject: [PATCH 313/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 5e34e460..9dc0e664 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -145,7 +145,7 @@ public static void checkUnitCount() { int players = Groups.player.size(); int stage = RedVsBluePlugin.stage; - int cruxUnitsCount = Math.round((players + stage) / (float) 2); + int cruxUnitsCount = Math.round((players + stage) / (float) 3); final HashMap cruxUnits = new HashMap<>(); @@ -160,7 +160,7 @@ public static void checkUnitCount() { } } }); - if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size) { + if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size+1) { spawnCrux(type); } }); From 4f88795373ff94883ed04b21a66a318905218a08 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:48:33 +0300 Subject: [PATCH 314/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 9dc0e664..7b085b0c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,7 +160,7 @@ public static void checkUnitCount() { } } }); - if (cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size+1) { + if (cruxUnits.get(type) == null || cruxUnits.get(type) < cruxUnitsCount/ClassChooseMenu.units.keys().toSeq().size) { spawnCrux(type); } }); From 0c923609c8edadfb1351f4bdd656f1b7b9f54a81 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:54:50 +0300 Subject: [PATCH 315/460] nerf evo sickness --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 9b989b39..52108503 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -137,7 +137,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/360); + multiplier = (float)((180-timeSinceLastEvo)/720); multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost)*multiplier; } if (RedVsBluePlugin.stage == stage) { From a8fa71e44f767a337175434cbcfff8defe1ad663 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:56:07 +0300 Subject: [PATCH 316/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index f647597d..8107df2b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -40,7 +40,7 @@ public void run() { try { for (Unit u : Groups.unit) { - if (u.buildPlan() != null) { + if (u.team == Team.blue && u.buildPlan() != null) { if (u.buildPlan().worldContext) { if (u.isBuilding()) { BuildPlan bp = u.buildPlan(); From 580a0d84f3d594abb51adcba2f2679e32cf44af6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:18:03 +0300 Subject: [PATCH 317/460] Update CruxUnit.java --- .../net/voiddustry/redvsblue/game/crux/CruxUnit.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 7b085b0c..1e0076bb 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -17,6 +17,7 @@ import java.util.Random; import java.util.HashMap; +import java.lang.Math; public class CruxUnit { public static void callSpawn(Player player) { @@ -153,7 +154,14 @@ public static void checkUnitCount() { ClassChooseMenu.units.keys().toSeq().each(type -> { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - if (cruxUnits.get(type) == null) { + + int minDist = 1000000; + for (Tile t : RedVsBluePlugin.redSpawns) { + minDist = Math.min(minDist, u.dst2(t)); + } + + + if (cruxUnits.get(type) == null && minDist<100) { cruxUnits.put(type, 0); } else { cruxUnits.put(type, cruxUnits.get(type)+1); From 84f4ad6f96759a0f1ad1fd4818479bedf82c2fb1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:19:55 +0300 Subject: [PATCH 318/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 1e0076bb..97570cf2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -155,7 +155,7 @@ public static void checkUnitCount() { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - int minDist = 1000000; + float minDist = 1000000; for (Tile t : RedVsBluePlugin.redSpawns) { minDist = Math.min(minDist, u.dst2(t)); } From 604a5698ae36e45ea40a311f630ca71c04f8ecee Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:24:19 +0300 Subject: [PATCH 319/460] ya daun --- .../net/voiddustry/redvsblue/game/crux/CruxUnit.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 97570cf2..d8ef0d16 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,11 +160,12 @@ public static void checkUnitCount() { minDist = Math.min(minDist, u.dst2(t)); } - - if (cruxUnits.get(type) == null && minDist<100) { - cruxUnits.put(type, 0); - } else { - cruxUnits.put(type, cruxUnits.get(type)+1); + if (minDist<100) { + if (cruxUnits.get(type) == null) { + cruxUnits.put(type, 0); + } else { + cruxUnits.put(type, cruxUnits.get(type)+1); + } } } }); From 600742d73deb2c4c29eb43953c3da5d822575270 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:31:18 +0300 Subject: [PATCH 320/460] huh --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index d8ef0d16..f25ca526 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -157,7 +157,7 @@ public static void checkUnitCount() { float minDist = 1000000; for (Tile t : RedVsBluePlugin.redSpawns) { - minDist = Math.min(minDist, u.dst2(t)); + minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,y.y-t.y*8)); } if (minDist<100) { From dc12ba2b2e48eac17ea811e43d52e237bca440ff Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:32:54 +0300 Subject: [PATCH 321/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index f25ca526..4038190d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -157,10 +157,10 @@ public static void checkUnitCount() { float minDist = 1000000; for (Tile t : RedVsBluePlugin.redSpawns) { - minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,y.y-t.y*8)); + minDist = Math.min(minDist, u.dst2(t)); } - - if (minDist<100) { + + if (minDist<800) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 9ce4585adc8db3fcf1009c7655a5593ea98539a1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:34:17 +0300 Subject: [PATCH 322/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 4038190d..6774e85c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -146,7 +146,7 @@ public static void checkUnitCount() { int players = Groups.player.size(); int stage = RedVsBluePlugin.stage; - int cruxUnitsCount = Math.round((players + stage) / (float) 3); + int cruxUnitsCount = Math.round((players + stage) / (float) 4); final HashMap cruxUnits = new HashMap<>(); From c0113027fffb73746d07e85fa26215217d8dcf82 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:35:33 +0300 Subject: [PATCH 323/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 6774e85c..2d2e0722 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,7 +160,7 @@ public static void checkUnitCount() { minDist = Math.min(minDist, u.dst2(t)); } - if (minDist<800) { + if (minDist<1200) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 021d69c6b877b60fe3c7f57f4f7079198054800c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:40:33 +0300 Subject: [PATCH 324/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 2d2e0722..3e3f844a 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,7 +160,7 @@ public static void checkUnitCount() { minDist = Math.min(minDist, u.dst2(t)); } - if (minDist<1200) { + if (minDist<1000) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 81fe68e71a0116c60d02afcaf4d934a9bdac81c6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:54:06 +0300 Subject: [PATCH 325/460] what the fuccc --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 3e3f844a..eeb6a9b6 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -157,7 +157,7 @@ public static void checkUnitCount() { float minDist = 1000000; for (Tile t : RedVsBluePlugin.redSpawns) { - minDist = Math.min(minDist, u.dst2(t)); + minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,u.y-t.y*8)); } if (minDist<1000) { From 3d8d0e427e9250f35c56676eadd67cb2065e5565 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:56:31 +0300 Subject: [PATCH 326/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index eeb6a9b6..57ec2892 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -155,7 +155,7 @@ public static void checkUnitCount() { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - float minDist = 1000000; + double minDist = 1000000; for (Tile t : RedVsBluePlugin.redSpawns) { minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,u.y-t.y*8)); } From d8ab9cf4374aa118a5df8c2e37ce50b3e37ad5ca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 23 Jan 2026 17:15:30 +0300 Subject: [PATCH 327/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 57ec2892..bfac7640 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -160,7 +160,7 @@ public static void checkUnitCount() { minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,u.y-t.y*8)); } - if (minDist<1000) { + if (minDist<800) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From a7db8336487a67785047d02e8ea2450fe19f25b3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:46:13 +0300 Subject: [PATCH 328/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 2ceb1cbf..f3ca4538 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -747,7 +747,7 @@ backColor: 99ff99 frontColor: ffffff healPercent: 5f collidesTeam: true -damage: 30f +damage: 25f ammoMultiplier: 2 } } From 0c97d7ed6166e4f0f52d43df495215138c353215 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:54:28 +0300 Subject: [PATCH 329/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 52108503..c4159e9d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else if (RedVsBluePlugin.stage > stage) { multiplier = multiplier+0.75f; } else { - multiplier = multiplier+(float)Math.pow(2,(stage-RedVsBluePlugin.stage)); + multiplier = multiplier+((float)Math.pow(2,(stage-RedVsBluePlugin.stage))/2); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); bd = bd.setScale(3, RoundingMode.HALF_UP); From ab3119013450f9d4bc45b2eb84ba9de0f577bcb6 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:59:02 +0300 Subject: [PATCH 330/460] add segment --- .../java/net/voiddustry/redvsblue/game/building/Buildings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java index 1910b641..93d8f6f8 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java @@ -31,6 +31,7 @@ public static HashMap getPrices() { prices.put(Blocks.powerNode, 3); prices.put(Blocks.battery, 5); prices.put(Blocks.mechanicalPump, 5); + prices.put(Blocks.segment, 80); return prices; } From ebdfb7f51abf834a4f2a1e9bad0fbaf87f2b5119 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:59:41 +0300 Subject: [PATCH 331/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 9d0f882c..61b2e668 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -831,6 +831,7 @@ block.force-projector.requirements: [dormant-cyst/35] block.power-node.requirements: [dormant-cyst/3] block.battery.requirements: [dormant-cyst/5] block.mechanical-pump.requirements: [dormant-cyst/4] +block.segment.requirements: [dormant-cyst/80] //building for everyone From 5eb634a5a8409e7f6f0d977da347ba9b7623a072 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 13:13:48 +0300 Subject: [PATCH 332/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index bfac7640..cad675ae 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -146,7 +146,7 @@ public static void checkUnitCount() { int players = Groups.player.size(); int stage = RedVsBluePlugin.stage; - int cruxUnitsCount = Math.round((players + stage) / (float) 4); + int cruxUnitsCount = Math.round((players + stage) / (float) 3); final HashMap cruxUnits = new HashMap<>(); From 4a64f7193b56fd46077f5c471f28fec35a2b2b72 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:32:14 +0300 Subject: [PATCH 333/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 9f109076..69afb786 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -365,6 +365,9 @@ public void init() { players.clear(); + //again + initRules(); + Vars.state.rules.canGameOver = false; Vars.state.rules.unitCap = 32; From 1ef9c50b80513db5ef4773fec9c96736a321ff4e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:34:16 +0300 Subject: [PATCH 334/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index f3ca4538..b3938c21 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -231,7 +231,7 @@ unit.disrupt.speed: 2 //disrupt drone(incite) unit.incite.localizedName: "Disruption drone" -unit.incite.controller: airAI +unit.incite.controller: flyingAI unit.incite.hitSize: 9 unit.incite.flyingLayer: 85 unit.incite.region: "unit-assembly-drone-full" From a52f3a4de74062b736b2181379b51caba0cde670 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:35:58 +0300 Subject: [PATCH 335/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 69afb786..9f109076 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -365,9 +365,6 @@ public void init() { players.clear(); - //again - initRules(); - Vars.state.rules.canGameOver = false; Vars.state.rules.unitCap = 32; From fe0ef95855259861d82ea1ee4b51113e221e2010 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:45:16 +0300 Subject: [PATCH 336/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ec122b8d..3517ac89 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -366,6 +366,9 @@ public void init() { Vars.state.rules.canGameOver = false; Vars.state.rules.unitCap = 32; + //again lol + initRules(); + Building core = Vars.state.teams.cores(Team.blue).first(); redSpawns.clear(); From 99495a9436a55ed38f0deee770b449d537596f18 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:49:07 +0300 Subject: [PATCH 337/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 3517ac89..a9446478 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -367,6 +367,7 @@ public void init() { Vars.state.rules.unitCap = 32; //again lol + Vars.state.rules.bannedBlocks.clear(); initRules(); Building core = Vars.state.teams.cores(Team.blue).first(); From 1f84a1c79ef869f39169946f73e1587d33d0e4b4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:56:07 +0300 Subject: [PATCH 338/460] Update RedVsBluePlugin.java --- .../net/voiddustry/redvsblue/RedVsBluePlugin.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index a9446478..c59420a5 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -333,7 +333,6 @@ public void init() { SuppressorTower.clearTowers(); Boss.bosses.clear(); - Vars.state.rules.bannedBlocks.clear(); initRules(); StartingMenu.canOpenMenu = true; @@ -366,9 +365,12 @@ public void init() { Vars.state.rules.canGameOver = false; Vars.state.rules.unitCap = 32; - //again lol - Vars.state.rules.bannedBlocks.clear(); - initRules(); + Timer.schedule(() -> { + UpdateConstructBlocks updateConstructBlocks = new UpdateConstructBlocks(); + Timer.schedule(updateConstructBlocks, 10f, 0.2f); + Vars.state.rules.bannedBlocks.clear(); + initRules(); + }, 5); Building core = Vars.state.teams.cores(Team.blue).first(); @@ -393,9 +395,6 @@ public void init() { Timer timer = new Timer(); timer.scheduleTask(task, 300, 300); - - UpdateConstructBlocks updateConstructBlocks = new UpdateConstructBlocks(); - Timer.schedule(updateConstructBlocks, 10f, 0.2f); Groups.player.each(player -> { From 740083d1e0151799e1034a759f9f084fd69abc09 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:47:38 +0300 Subject: [PATCH 339/460] no categoires --- patches/rvsb.json | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 15ef8bef..000259e9 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -814,24 +814,61 @@ item.dormant-cyst.uiIcon: "unit-dagger-ui" item.dormant-cyst.fullIcon: "unit-dagger-preview" block.bridge-conduit.requirements: [dormant-cyst/3] +block.bridge-conduit.category: effect + block.bridge-conveyor.requirements: [dormant-cyst/3] +block.bridge-conveyor.category: effect + block.unloader.requirements: [dormant-cyst/9] +block.unloader.category: effect + block.power-node-large.requirements: [dormant-cyst/9] +block.power-node-large.category: effect + block.pneumatic-drill.requirements: [dormant-cyst/9] +block.pneumatic-drill.category: effect + block.container.requirements: [dormant-cyst/3] +block.container.category: effect + block.beryllium-wall.requirements: [dormant-cyst/2] +block.beryllium-wall.category: effect + block.beryllium-wall-large.requirements: [dormant-cyst/6] +block.beryllium-wall-large.category: effect + block.thorium-wall.requirements: [dormant-cyst/4] +block.thorium-wall.category: effect + block.thorium-wall-large.requirements: [dormant-cyst/12] +block.thorium-wall-large.category: effect + block.blast-door.requirements: [dormant-cyst/30] +block.blast-door.category: effect + block.combustion-generator.requirements: [dormant-cyst/9] +block.combustion-generator.category: effect + block.rtg-generator.requirements: [dormant-cyst/30] +block.rtg-generator.category: effect + block.laser-drill.requirements: [dormant-cyst/25] +block.laser-drill.category: effect + block.force-projector.requirements: [dormant-cyst/35] +block.force-projector.category: effect + block.power-node.requirements: [dormant-cyst/3] +block.power-node.category: effect + block.battery.requirements: [dormant-cyst/5] +block.battery.category: effect + block.mechanical-pump.requirements: [dormant-cyst/4] +block.mechanical-pump.category: effect + block.segment.requirements: [dormant-cyst/80] +block.segment.category: effect //building for everyone From 94dd7aef6a9d2cc0ad46c4e34cb15b3bbe330734 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:06:24 +0300 Subject: [PATCH 340/460] Update Evolution.java --- src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index b2ddcb82..ecf5be81 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -34,7 +34,7 @@ public enum Evolution { CORVUS(UnitTypes.corvus, 5, 300*multp, new String[] { "aegires" }, 7), MEGA(UnitTypes.mega, 5, 100*multp, new String[] { "cyerce" }, 4), - PRECEPT(UnitTypes.precept, 6, 60*multp, new String[] { "scepter" }, 4), + PRECEPT(UnitTypes.precept, 6, 60*multp, new String[] { "scepter" }, 5), AEGIRES(UnitTypes.aegires, 6, 450*multp, new String[] { "navanax" }, 8), AVERT(UnitTypes.avert, 6, 27*multp, new String[] { "bryde" , "obviate" }, 4), CYERCE(UnitTypes.cyerce, 6, 150*multp, new String[] { "quad" }, 5), From 23680fc825cb85f01b3678d0d666eb92a2a7a27f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:21:24 +0300 Subject: [PATCH 341/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index ecf5be81..cabf98f4 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -24,10 +24,10 @@ public enum Evolution { ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 2), RETUSA(UnitTypes.retusa, 3, 15*multp, new String[] { "oxynoe" }, 3), - FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }, 3), + FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }, 2), VELA(UnitTypes.vela, 4, 170*multp, new String[] { "corvus" }, 6), SPIROCT(UnitTypes.spiroct, 4, 95*multp, new String[] { "toxopid" }, 4), - MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }, 3), + MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }, 2), OXYNOE(UnitTypes.oxynoe, 4, 35*multp, new String[] { "mega" }, 3), LOCUS(UnitTypes.locus, 5, 55*multp, new String[] { "precept" }, 4), From a50c1e7fd685396fff62be27b6387ef5027a93ad Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:22:13 +0300 Subject: [PATCH 342/460] Update Laboratory.java --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index c4159e9d..ca43d72d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -145,10 +145,10 @@ public static float getMultiplier(Evolution evo, Player player) { } else if (RedVsBluePlugin.stage > stage) { multiplier = multiplier+0.75f; } else { - multiplier = multiplier+((float)Math.pow(2,(stage-RedVsBluePlugin.stage))/2); + multiplier = multiplier+(((float)Math.pow(2,(stage-RedVsBluePlugin.stage)))/2); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); - bd = bd.setScale(3, RoundingMode.HALF_UP); + bd = bd.setScale(3, ROUND_HALF_UP); multiplier = bd.floatValue(); return multiplier; } From fe44b6b5be54cef3b5327d065f7c1d2b636b4018 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:23:47 +0300 Subject: [PATCH 343/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index ca43d72d..31dbdec1 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -148,7 +148,7 @@ public static float getMultiplier(Evolution evo, Player player) { multiplier = multiplier+(((float)Math.pow(2,(stage-RedVsBluePlugin.stage)))/2); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); - bd = bd.setScale(3, ROUND_HALF_UP); + bd = bd.setScale(3); multiplier = bd.floatValue(); return multiplier; } From 72ea4db04368a3ee04aa7ece40aabe393c91aede Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:29:01 +0300 Subject: [PATCH 344/460] fix stupid math --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 31dbdec1..027aa55e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else if (RedVsBluePlugin.stage > stage) { multiplier = multiplier+0.75f; } else { - multiplier = multiplier+(((float)Math.pow(2,(stage-RedVsBluePlugin.stage)))/2); + multiplier = multiplier+1+((float)Math.pow(2,stage-RedVsBluePlugin.stage)/2); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); bd = bd.setScale(3); From eec89e9389ed91901aa169c28c6771c5057d0b1a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:30:24 +0300 Subject: [PATCH 345/460] Update Evolution.java --- .../java/net/voiddustry/redvsblue/evolution/Evolution.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index cabf98f4..46c7ef24 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -15,19 +15,19 @@ public enum Evolution { PULSAR(UnitTypes.pulsar, 2, 25*multp, new String[] { "quasar" }, 2), ATRAX(UnitTypes.atrax, 2, 18*multp, new String[] { "cleroi" }, 2), - RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 2), + RISSO(UnitTypes.risso, 2, 45*multp, new String[] { "zenith" }, 3), POLY(UnitTypes.poly, 2, 21*multp, new String[] { "retusa" }, 2), MACE(UnitTypes.mace, 3, 20*multp, new String[] { "fortress"}, 2), QUASAR(UnitTypes.quasar, 3, 60*multp, new String[] { "vela" }, 3), CLEROI(UnitTypes.cleroi, 3, 65*multp, new String[] { "spiroct" }, 3), - ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 2), + ZENITH(UnitTypes.zenith, 3, 70*multp, new String[] { "minke" }, 3), RETUSA(UnitTypes.retusa, 3, 15*multp, new String[] { "oxynoe" }, 3), FORTRESS(UnitTypes.fortress, 4, 48*multp, new String[] { "locus" }, 2), VELA(UnitTypes.vela, 4, 170*multp, new String[] { "corvus" }, 6), SPIROCT(UnitTypes.spiroct, 4, 95*multp, new String[] { "toxopid" }, 4), - MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }, 2), + MINKE(UnitTypes.minke, 4, 90*multp, new String[] { "avert" }, 3), OXYNOE(UnitTypes.oxynoe, 4, 35*multp, new String[] { "mega" }, 3), LOCUS(UnitTypes.locus, 5, 55*multp, new String[] { "precept" }, 4), From 8463249e06389417f350553692633d20d493a08e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:32:57 +0300 Subject: [PATCH 346/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 027aa55e..f801c6f3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -145,7 +145,7 @@ public static float getMultiplier(Evolution evo, Player player) { } else if (RedVsBluePlugin.stage > stage) { multiplier = multiplier+0.75f; } else { - multiplier = multiplier+1+((float)Math.pow(2,stage-RedVsBluePlugin.stage)/2); + multiplier = multiplier+1+((float)Math.pow(2,stage-RedVsBluePlugin.stage)/4); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); bd = bd.setScale(3); From c6519abf67af5f6606107d4ac9c93d96e90c920b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 25 Jan 2026 18:45:32 +0300 Subject: [PATCH 347/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index f801c6f3..a2493baa 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -148,7 +148,7 @@ public static float getMultiplier(Evolution evo, Player player) { multiplier = multiplier+1+((float)Math.pow(2,stage-RedVsBluePlugin.stage)/4); } BigDecimal bd = new BigDecimal(String.valueOf(multiplier)); - bd = bd.setScale(3); + bd = bd.setScale(3, RoundingMode.HALF_UP); multiplier = bd.floatValue(); return multiplier; } From 223eb5793890963f822e9afbcd12ae6fdfeffa86 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:46:49 +0300 Subject: [PATCH 348/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index a2493baa..924d10c4 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -137,7 +137,7 @@ public static float getMultiplier(Evolution evo, Player player) { int stage = evo.stage; float multiplier = 0; if (timeSinceLastEvo<180) { - multiplier = (float)((180-timeSinceLastEvo)/720); + multiplier = (float)((180-timeSinceLastEvo)/1000); multiplier = multiplier + (((float)Math.sqrt(evo.cost))/evo.cost)*multiplier; } if (RedVsBluePlugin.stage == stage) { From 938ba2b4c79859992001e0e3b4d364a0c69c588c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:48:57 +0300 Subject: [PATCH 349/460] bugs --- .../java/net/voiddustry/redvsblue/util/Utils.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 694b69cf..9f7b1d90 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -5,6 +5,7 @@ import arc.struct.Seq; import arc.util.Time; import arc.util.Timer; +import arc.util.serialization.*; import mindustry.Vars; import mindustry.content.*; import mindustry.entities.bullet.BasicBulletType; @@ -38,8 +39,8 @@ public class Utils { public static boolean hardcore; public static int money_per_min = 3; - public static void initRules() { - + public static void initGlobalRules() { + HashMap prices = Buildings.getPrices(); for (Block block : Vars.content.blocks()) { if (!prices.containsKey(block)) { @@ -47,6 +48,16 @@ public static void initRules() { } } + Core.settings.defaults( + "bans", "", + "admins", "", + "shufflemode", "custom", + "globalrules", "{reactorExplosions: false, logicUnitBuild: false, logicUnitDeconstruct: false, bannedBlocks: " + JsonIO.json.toJson(Vars.state.rules.bannedBlocks) + "}" + ); + } + + public static void initRules() { + state.rules.buildSpeedMultiplier = 0; state.rules.env = Vars.defaultEnv; From 35d7ded9bdb5058c267da99900207ac55961f457 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:54:14 +0300 Subject: [PATCH 350/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 9f7b1d90..93c67ad0 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -2,6 +2,7 @@ import arc.graphics.Color; +import arc.*; import arc.struct.Seq; import arc.util.Time; import arc.util.Timer; From 49508e5a3497b153fa6b6f5f5f1a7fd2cacf8350 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:56:17 +0300 Subject: [PATCH 351/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 93c67ad0..d7b88f21 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -12,6 +12,7 @@ import mindustry.entities.bullet.BasicBulletType; import mindustry.game.Team; import mindustry.gen.*; +import mindustry.io.JsonIO; import mindustry.type.UnitType; import java.util.Locale; From d4fa6c733cda2b1706cf6c83b29537ee15964776 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:56:51 +0300 Subject: [PATCH 352/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c59420a5..dbfc1a64 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -134,7 +134,8 @@ public void run() { public void init() { Log.info("&gRedVsBlue Plugin &rStarted!"); - + + Utils.initGlobalRules(); Utils.initRules(); Utils.initTimers(); Utils.loadContent(); From f3ef9ed3ebd771cc59e80807f3133ae957a19921 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:00:33 +0300 Subject: [PATCH 353/460] Update Utils.java --- .../java/net/voiddustry/redvsblue/util/Utils.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index d7b88f21..a6d50782 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -41,8 +41,8 @@ public class Utils { public static boolean hardcore; public static int money_per_min = 3; - public static void initGlobalRules() { - + public static void initRules() { + HashMap prices = Buildings.getPrices(); for (Block block : Vars.content.blocks()) { if (!prices.containsKey(block)) { @@ -50,15 +50,6 @@ public static void initGlobalRules() { } } - Core.settings.defaults( - "bans", "", - "admins", "", - "shufflemode", "custom", - "globalrules", "{reactorExplosions: false, logicUnitBuild: false, logicUnitDeconstruct: false, bannedBlocks: " + JsonIO.json.toJson(Vars.state.rules.bannedBlocks) + "}" - ); - } - - public static void initRules() { state.rules.buildSpeedMultiplier = 0; From f5d235eddae4c06f859105dd408dc21934aa0081 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:01:01 +0300 Subject: [PATCH 354/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index dbfc1a64..82867b03 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -135,7 +135,7 @@ public void init() { Log.info("&gRedVsBlue Plugin &rStarted!"); - Utils.initGlobalRules(); + Utils.initRules(); Utils.initTimers(); Utils.loadContent(); From e4106951019776cfbfc2dbf83e7e10105ad125b5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:47:05 +0300 Subject: [PATCH 355/460] buff toxo reign --- .../net/voiddustry/redvsblue/evolution/Evolution.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java index 46c7ef24..9e81303c 100644 --- a/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java +++ b/src/main/java/net/voiddustry/redvsblue/evolution/Evolution.java @@ -41,23 +41,23 @@ public enum Evolution { SCEPTER(UnitTypes.scepter, 7, 105*multp, new String[] { "vanquish" }, 6), NAVANAX(UnitTypes.navanax, 7, 450*multp, new String[] { "flare", "merui", "dagger" }, 9), - TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }, 8), + TOXOPID(UnitTypes.toxopid, 7, 415*multp, new String[] { "collaris" }, 7), BRYDE(UnitTypes.bryde, 7, 180*multp, new String[] { "antumbra" }, 5), OBVIATE(UnitTypes.obviate, 7, 90*multp, new String[] { "quell" }, 5), QUAD(UnitTypes.quad, 7, 450*multp, new String[] { "oct" }, 7), - VANQUISH(UnitTypes.vanquish, 8, 250*multp, new String[] { "reign" }, 7), + VANQUISH(UnitTypes.vanquish, 8, 250*multp, new String[] { "reign" }, 6), COLLARIS(UnitTypes.collaris, 8, 1170*multp, new String[] { "nova", "flare", "dagger", "mono" }, 7), ANTUMBRA(UnitTypes.antumbra, 8, 180*multp, new String[] { "eclipse" }, 6), OCT(UnitTypes.oct, 8, 1500*multp, new String[] { "merui", "nova", "flare", "dagger" }, 9), QUELL(UnitTypes.quell, 8, 180*multp, new String[] { "disrupt" }, 6), - REIGN(UnitTypes.reign, 9, 450*multp, new String[] { "conquer" }, 8), + REIGN(UnitTypes.reign, 9, 450*multp, new String[] { "conquer" }, 7), ECLIPSE(UnitTypes.eclipse, 9, 270*multp, new String[] { "sei" }, 6), DISRUPT(UnitTypes.disrupt, 9, 800*multp, new String[] { "nova", "flare", "dagger"}, 8), - CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "merui", "nova", "flare", "mono" }, 8), + CONQUER(UnitTypes.conquer, 10, 450*multp, new String[] { "merui", "nova", "flare", "mono" }, 7), SEI(UnitTypes.sei, 10, 270*multp, new String[] { "omura" }, 8), OMURA(UnitTypes.omura, 11, 1650*multp, new String[] { "merui", "nova", "dagger", "mono" }, 9); From d95b0f1da3d82d2c855734aa3b619e6f60d627ab Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 12:53:52 +0300 Subject: [PATCH 356/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 82867b03..26b21ed9 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -606,7 +606,7 @@ public void registerClientCommands(CommandHandler handler) { }); handler.register("blue", "Makes you blue, works only before stage 3", (args, player) -> { - if (stage <= 3 && playing && player.team() != Team.blue && players.get(player.uuid()).getLastRedeemTime()+90 Date: Tue, 3 Feb 2026 13:05:36 +0300 Subject: [PATCH 357/460] balance --- .../redvsblue/game/crux/CruxUnit.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index cad675ae..8c2bbf28 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -6,6 +6,7 @@ import mindustry.content.StatusEffects; import mindustry.content.UnitTypes; import mindustry.game.Team; +import mindustry.game.EventType.*; import mindustry.gen.Call; import mindustry.gen.Groups; import mindustry.gen.Player; @@ -20,6 +21,13 @@ import java.lang.Math; public class CruxUnit { + + private final HashMap spawnTimes = new HashMap<>(); + + Events.on(UnitDestroyEvent.class, event -> { + spawnTimes.remove(event.unit); + }); + public static void callSpawn(Player player) { UnitType type = ClassChooseMenu.selectedUnit.get(player.uuid()); @@ -111,6 +119,7 @@ private static void spawnCrux(UnitType unitType) { } Unit unit = unitType.spawn(Team.crux, cruxSpawn); + spawnTimes.put(unit, System.currentTimeMillis()); //unit.apply(Vars.content.statusEffect("superShielded"), 120f); unit.apply(Vars.content.statusEffect("shielded"), 300f); @@ -141,6 +150,7 @@ private static void spawnCrux(UnitType unitType) { } }; + public static void checkUnitCount() { if (Utils.gameRun) { int players = Groups.player.size(); @@ -154,13 +164,8 @@ public static void checkUnitCount() { ClassChooseMenu.units.keys().toSeq().each(type -> { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - - double minDist = 1000000; - for (Tile t : RedVsBluePlugin.redSpawns) { - minDist = Math.min(minDist, Math.hypot(u.x-t.x*8,u.y-t.y*8)); - } - if (minDist<800) { + if (spawnTimes.get(u)-System.currentTimeMillis()<30000) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 7e094a22bdf27fc1f9f01e6aa2977550814f6a3f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:38:52 +0300 Subject: [PATCH 358/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 8c2bbf28..91051b76 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -1,12 +1,13 @@ package net.voiddustry.redvsblue.game.crux; import arc.util.Timer; +import arc.util.Events; import mindustry.Vars; import mindustry.content.Items; import mindustry.content.StatusEffects; import mindustry.content.UnitTypes; import mindustry.game.Team; -import mindustry.game.EventType.*; +import mindustry.game.EventType; import mindustry.gen.Call; import mindustry.gen.Groups; import mindustry.gen.Player; @@ -24,7 +25,7 @@ public class CruxUnit { private final HashMap spawnTimes = new HashMap<>(); - Events.on(UnitDestroyEvent.class, event -> { + Events.on(EventType.UnitDestroyEvent.class, event -> { spawnTimes.remove(event.unit); }); From a1bd3b5f9f1a71589b0aaab33d939957ef7d7dda Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:39:54 +0300 Subject: [PATCH 359/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 91051b76..9a4ba083 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -1,7 +1,7 @@ package net.voiddustry.redvsblue.game.crux; import arc.util.Timer; -import arc.util.Events; +import arc.Events; import mindustry.Vars; import mindustry.content.Items; import mindustry.content.StatusEffects; From f54aec876bd23a68f457c8052ddd361328790dca Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:42:54 +0300 Subject: [PATCH 360/460] Update CruxUnit.java --- .../java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 9a4ba083..ee89e4b6 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -25,9 +25,11 @@ public class CruxUnit { private final HashMap spawnTimes = new HashMap<>(); - Events.on(EventType.UnitDestroyEvent.class, event -> { - spawnTimes.remove(event.unit); - }); + public static void addEvent { + Events.on(EventType.UnitDestroyEvent.class, event -> { + spawnTimes.remove(event.unit); + }); + } public static void callSpawn(Player player) { From f60690713017f5a3f6cb55b9d39c36ea68a10b97 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:43:35 +0300 Subject: [PATCH 361/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 26b21ed9..c57298d4 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -143,6 +143,7 @@ public void init() { SpawnEffect.initEffect(); Boss.forEachBoss(); Premium.init(); + CruxUnit.addEvent(); for (UnitType unit : Vars.content.units()) { From 906ef23cf20f2ecd56109cabdd61d053a2d8dac2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:44:36 +0300 Subject: [PATCH 362/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index ee89e4b6..d37fb337 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -25,7 +25,7 @@ public class CruxUnit { private final HashMap spawnTimes = new HashMap<>(); - public static void addEvent { + public static void addEvent() { Events.on(EventType.UnitDestroyEvent.class, event -> { spawnTimes.remove(event.unit); }); From 2eae6b0c3c6614f1190d4da91af7e9182634d4d2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:47:49 +0300 Subject: [PATCH 363/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index d37fb337..ca396f50 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -23,7 +23,7 @@ public class CruxUnit { - private final HashMap spawnTimes = new HashMap<>(); + private static final HashMap spawnTimes = new HashMap<>(); public static void addEvent() { Events.on(EventType.UnitDestroyEvent.class, event -> { From 3e7f9740c907d2b9d17f0ec5d62377c0d72e49ce Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:47:48 +0300 Subject: [PATCH 364/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index ca396f50..7d995800 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -168,7 +168,7 @@ public static void checkUnitCount() { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - if (spawnTimes.get(u)-System.currentTimeMillis()<30000) { + if ((!(spawnTimes.get(u) == null)) && System.currentTimeMillis()-spawnTimes.get(u)<20000) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From c72c9091944467c578f7f8b7a4bb2c51374c20f4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:57:40 +0300 Subject: [PATCH 365/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index 7d995800..cc3f4e53 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -168,7 +168,7 @@ public static void checkUnitCount() { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - if ((!(spawnTimes.get(u) == null)) && System.currentTimeMillis()-spawnTimes.get(u)<20000) { + if ((!(spawnTimes.get(u) == null)) && System.currentTimeMillis()-spawnTimes.get(u)<30000) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 45a4fc7ba4fd2cd90e3d4adcd0fa4f889f9f8b2f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 4 Feb 2026 22:34:41 +0300 Subject: [PATCH 366/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index c2e98487..318e68c1 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -73,6 +73,8 @@ stepShake: 1.2f drownTimeMultiplier: 4 mechFrontSway: 1f mechSideSway: 0.6f +aiController: groundAi +controller: groundAi stepSound: mechStepHeavy stepSoundPitch: 0.8 @@ -389,3 +391,4 @@ buildingDamageMultiplier: 999 + From 581c89b06de2a8c7dd7ecc10966db76eb78c1c0e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:18:29 +0300 Subject: [PATCH 367/460] fix color --- patches/empirenewlegs.json | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index 318e68c1..d219f726 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -143,7 +143,7 @@ despawnSound: shockBullet lightning: 3 lightningDamage: 30 lightningLength: 14 -lightningColor: fffd7a +lightningColor: "fffd7a" fragBullet: { type: BasicBulletType damage: 100 @@ -158,7 +158,7 @@ pierceCap: 99999 lightning: 1 lightningDamage: 20 lightningLength: 14 -lightningColor: fffd7a +lightningColor: "fffd7a" despawnSound: explosion } } @@ -229,7 +229,7 @@ despawnSound: shockBullet lightning: 3 lightningDamage: 30 lightningLength: 14 -lightningColor: fffd7a +lightningColor: "fffd7a" fragBullet: { type: BasicBulletType damage: 100 @@ -244,7 +244,7 @@ pierceCap: 99999 lightning: 1 lightningDamage: 20 lightningLength: 14 -lightningColor: fffd7a +lightningColor: "fffd7a" despawnSound: explosion } } @@ -352,9 +352,9 @@ type: ExplosionEffect lifetime: 50f waveStroke: 5f waveLife: 24f -waveColor: ffff6b -sparkColor: ffff6b -smokeColor: ffffff +waveColor: "ffff6b" +sparkColor: "ffff6b" +smokeColor: "ffffff" waveRad: 64f smokeSize: 4f smokes: 21 @@ -368,7 +368,7 @@ despawnHit: true lightning: 3 lightningLength: 24 lightningDamage: 24 -lightningColor: ffff6b +lightningColor: "ffff6b" hitSound: explosionMissile killShooter: false splashDamage: 2000 @@ -392,3 +392,4 @@ buildingDamageMultiplier: 999 + From 0d1bd0563280e45dda7af0fdabd5461076ca0753 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:39:01 +0300 Subject: [PATCH 368/460] Add files via upload --- patches/rvsb.json | 58 +++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 000259e9..e8891fc3 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -58,7 +58,7 @@ unit.disrupt.speed: 2 //y: 4 //xScl: 0.4 //yScl: 2.5 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //{ //name: obviate @@ -70,7 +70,7 @@ unit.disrupt.speed: 2 //y: -4 //xScl: 0.6 //yScl: 3.4 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //{ //name: obviate @@ -82,7 +82,7 @@ unit.disrupt.speed: 2 //y: -12 //xScl: 0.8 //yScl: 4.5 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //mirror parts @@ -96,7 +96,7 @@ unit.disrupt.speed: 2 //y: 4 //xScl: 0.4 //yScl: 2.5 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //{ //name: obviate @@ -108,7 +108,7 @@ unit.disrupt.speed: 2 //y: -4 //xScl: 0.6 //yScl: 3.4 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //{ //name: obviate @@ -120,7 +120,7 @@ unit.disrupt.speed: 2 //y: -12 //xScl: 0.8 //yScl: 4.5 -//heatColor: fc4e03 +//heatColor: "fc4e03" //} //] @@ -159,7 +159,7 @@ unit.disrupt.speed: 2 //splashDamage: 900 //weaveScale: 8 //weaveMag: 1 -//trailColor: 760ee6 +//trailColor: "760ee6" //trailWidth: 5f //trailLength: 10 //sprite: missile-large @@ -173,9 +173,9 @@ unit.disrupt.speed: 2 //speed: 3 //lightRadius: 180f //lightOpacity: 0.7f -//lightColor: 760ee6 -//backColor: 760ee6 -//frontColor: ffffff +//lightColor: "760ee6" +//backColor: "760ee6" +//frontColor: "ffffff" //lifetime: 25f //fragBullets: 5 //fragRandomSpread: 360f @@ -188,11 +188,11 @@ unit.disrupt.speed: 2 //waveStroke: 6 //waveLife: 10f //waveRadBase: 7f -//waveColor: 760ee6 +//waveColor: "760ee6" //waveRad: 120f //smokes: 18 -//smokeColor: ffffff -//sparkColor: 760ee6 +//smokeColor: "ffffff" +//sparkColor: "760ee6" //sparks: 18 //sparkRad: 120f //sparkStroke: 1.5f @@ -210,8 +210,8 @@ unit.disrupt.speed: 2 //hitSize: 0 //damage: 0 //lifetime: 60 -//backColor: 760ee6 -//trailColor: 760ee6 +//backColor: "760ee6" +//trailColor: "760ee6" //trailWidth: 3 //trailLength: 12 //despawnEffect: hitBulletColor @@ -338,7 +338,7 @@ firstShotDelay: 105 } bullet: { type: laserBulletType -colors: [4d0505,940909,ff0000] +colors: ["4d0505","940909","ff0000"] lifetime: 55 maxRange: 320 range: 320 @@ -374,7 +374,7 @@ firstShotDelay: 70 bullet: { lifetime: 8 damage: 0 -colors: [666666,999999,aaaaaa] +colors: ["666666","999999","aaaaaa"] type: laserBulletType maxRange: 320 range: 320 @@ -396,7 +396,7 @@ firstShotDelay: 30 bullet: { lifetime: 8 damage: 0 -colors: [666666,999999,aaaaaa] +colors: ["666666","999999","aaaaaa"] type: laserBulletType maxRange: 320 range: 320 @@ -511,9 +511,9 @@ damage: 10 // lifetime: 50f // waveStroke: 5f // waveLife: 8f - // waveColor: ffffff - // sparkColor: 665c9f - // smokeColor: 665c9f + // waveColor: "ffffff" + // sparkColor: "665c9f" + // smokeColor: "665c9f" // waveRad: 40f // smokeSize: 4f // smokes: 7 @@ -586,9 +586,9 @@ damage: 10 // lifetime: 90f // waveStroke: 5f // waveLife: 8f -// waveColor: ffffff -// sparkColor: 665c9f -// smokeColor: 665c9f +// waveColor: "ffffff" +// sparkColor: "665c9f" +// smokeColor: "665c9f" // waveRad: 40f // smokeSize: 4f // smokes: 7 @@ -646,7 +646,7 @@ unit.anthicus.weapons: [ length: 340 pierceDamageFactor: 0.1 pointEffect: railTrail - hitColor: 89cffa + hitColor: "89cffa" pierceArmor: true hitEffect: hitSquaresColor } @@ -675,13 +675,13 @@ unit.anthicus.weapons: [ range: 350 maxRange: 350 type: continuousFlameBulletType - flareColor: 89cffa + flareColor: "89cffa" pierceCap: 1 damage: 1.6 length: 350 pierceDamageFactor: 0.1 width: 4f - colors: [89cffa,ffffff,30a7f0,ffffff] + colors: ["89cffa","ffffff","30a7f0","ffffff"] } } { @@ -743,8 +743,8 @@ maxRange: 144f speed: 10f lifetime: 14f type: laserBoltBulletType -backColor: 99ff99 -frontColor: ffffff +backColor: "99ff99" +frontColor: "ffffff" healPercent: 5f collidesTeam: true damage: 25f From 6c7d675f74071c0310a05f8270613901756042f5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Thu, 5 Feb 2026 15:38:30 +0300 Subject: [PATCH 369/460] Update rvsb.json --- patches/rvsb.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index e8891fc3..f222c504 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -799,11 +799,11 @@ block.tungsten-wall-large.targetable: false block.tungsten-wall-large.health: 99999 //generators consumption -block.combustion-generator.itemDuration: 7200 -block.steam-generator.itemDuration: 7200 +block.combustion-generator.itemDuration: 2400 +block.steam-generator.itemDuration: 2400 block.thorium-reactor.itemDuration: 1800 block.thorium-reactor.powerProduction: 45 -block.rtg-generator.itemDuration: 72000 +block.rtg-generator.itemDuration: 14400 //statuses status.electrified.reloadMultiplier: 0.75 From 05429f187ada4bacef0d27d882bcc94e9700b3ee Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:49:49 +0300 Subject: [PATCH 370/460] Update rvsb.json --- patches/rvsb.json | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index f222c504..d0dabad1 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,5 +1,43 @@ name: rvsb +//flare rework rollback +unit.flare.omniMovement: true +unit.flare.rotateSpeed: 99999 +unit.flare.health: 120 +unit.flare.weapons: [ + { + x: 0f + y: 2f + reload: 20f + ejectEffect: casing1 + shootSound: pew + bullet: { + type: basicBulletType + width: 7f + height: 9f + lifetime: 45f + shootEffect: shootSmall + smokeEffect: shootSmallSmoke + } + } + { + x: 0f + y: -2f + reload: 20f + ejectEffect: casing1 + shootSound: pew + shoot.firstShotDelay: 10 + bullet: { + type: basicBulletType + width: 7f + height: 9f + lifetime: 45f + shootEffect: shootSmall + smokeEffect: shootSmallSmoke + } + } +] + // obviate shield unit.obviate.hitSize: 19.9 //unit.obviate.flyingLayer: 115 From b3ed5bcc86648d8381b4bfcbc3186d9deb710c0b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:50:53 +0300 Subject: [PATCH 371/460] Update rvsb.json --- patches/rvsb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index d0dabad1..3e2745a8 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -12,6 +12,7 @@ unit.flare.weapons: [ ejectEffect: casing1 shootSound: pew bullet: { + damage: 9 type: basicBulletType width: 7f height: 9f From e96959e78c56f78d549482d2db68f6d4f95d4511 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:52:19 +0300 Subject: [PATCH 372/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 3e2745a8..6df30852 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -10,7 +10,7 @@ unit.flare.weapons: [ y: 2f reload: 20f ejectEffect: casing1 - shootSound: pew + shootSound: shoot bullet: { damage: 9 type: basicBulletType From fcbcbdd5b18745404038db0b4499e8e7019574e5 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:53:57 +0300 Subject: [PATCH 373/460] Update rvsb.json --- patches/rvsb.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 6df30852..5164e180 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -26,8 +26,10 @@ unit.flare.weapons: [ y: -2f reload: 20f ejectEffect: casing1 - shootSound: pew - shoot.firstShotDelay: 10 + shootSound: shoot + shoot: { + firstShotDelay: 10 + } bullet: { type: basicBulletType width: 7f From aef4671e1f0009de2c3f2301ebc1d47b4a64505b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:57:12 +0300 Subject: [PATCH 374/460] Update rvsb.json --- patches/rvsb.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 5164e180..afe005ad 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -6,8 +6,8 @@ unit.flare.rotateSpeed: 99999 unit.flare.health: 120 unit.flare.weapons: [ { - x: 0f - y: 2f + x: 5f + y: 5f reload: 20f ejectEffect: casing1 shootSound: shoot @@ -22,8 +22,8 @@ unit.flare.weapons: [ } } { - x: 0f - y: -2f + x: -5f + y: -5f reload: 20f ejectEffect: casing1 shootSound: shoot From 0fb58ea89983afd2e3fa3e3b5a752ef75eb77491 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:03:50 +0300 Subject: [PATCH 375/460] Update rvsb.json --- patches/rvsb.json | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index afe005ad..52ea884f 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -6,37 +6,40 @@ unit.flare.rotateSpeed: 99999 unit.flare.health: 120 unit.flare.weapons: [ { - x: 5f - y: 5f - reload: 20f + x: 2f + y: 0f + reload: 40f ejectEffect: casing1 shootSound: shoot bullet: { - damage: 9 + damage: 15 type: basicBulletType width: 7f height: 9f lifetime: 45f shootEffect: shootSmall smokeEffect: shootSmallSmoke + keepVelocity: true } } { - x: -5f - y: -5f - reload: 20f + x: -2f + y: 0f + reload: 40f ejectEffect: casing1 shootSound: shoot shoot: { - firstShotDelay: 10 + firstShotDelay: 20 } bullet: { + damage: 15 type: basicBulletType width: 7f height: 9f lifetime: 45f shootEffect: shootSmall smokeEffect: shootSmallSmoke + keepVelocity: true } } ] From 8b4f9fa731b289ffa6f5d800898efa8b9b090a2c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:05:02 +0300 Subject: [PATCH 376/460] Update rvsb.json --- patches/rvsb.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index 52ea884f..c1b62996 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -12,6 +12,7 @@ unit.flare.weapons: [ ejectEffect: casing1 shootSound: shoot bullet: { + speed: 3 damage: 15 type: basicBulletType width: 7f @@ -32,6 +33,7 @@ unit.flare.weapons: [ firstShotDelay: 20 } bullet: { + speed: 3 damage: 15 type: basicBulletType width: 7f From 6bb3b58546232cf92329759583e8702a7cccf16d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:10:24 +0300 Subject: [PATCH 377/460] Update rvsb.json --- patches/rvsb.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index c1b62996..30f03d4c 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -4,6 +4,8 @@ name: rvsb unit.flare.omniMovement: true unit.flare.rotateSpeed: 99999 unit.flare.health: 120 +unit.flare.maxRange: 80 +unit.flare.rotateMoveFirst: false unit.flare.weapons: [ { x: 2f @@ -12,7 +14,9 @@ unit.flare.weapons: [ ejectEffect: casing1 shootSound: shoot bullet: { - speed: 3 + range: 80 + maxRange: 80 + speed: 2.2 damage: 15 type: basicBulletType width: 7f @@ -33,7 +37,9 @@ unit.flare.weapons: [ firstShotDelay: 20 } bullet: { - speed: 3 + range: 80 + maxRange: 80 + speed: 2.2 damage: 15 type: basicBulletType width: 7f From b355b15a37e63b649fa0da9e38f9cfbe888b4d24 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 13:56:39 +0300 Subject: [PATCH 378/460] Update CruxUnit.java --- src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java index cc3f4e53..38538f33 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/CruxUnit.java @@ -168,7 +168,7 @@ public static void checkUnitCount() { Groups.unit.each(u -> { if (u.team == Team.crux && u.type == type) { - if ((!(spawnTimes.get(u) == null)) && System.currentTimeMillis()-spawnTimes.get(u)<30000) { + if ((!(spawnTimes.get(u) == null)) && System.currentTimeMillis()-spawnTimes.get(u)<45000) { if (cruxUnits.get(type) == null) { cruxUnits.put(type, 0); } else { From 441c5ffe5294bcec05caa2333a5306bcf91bd239 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:42:53 +0300 Subject: [PATCH 379/460] miner --- .../java/net/voiddustry/redvsblue/game/stations/Miner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index 3395010d..8fe1b0b4 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -55,7 +55,7 @@ public static void buyMiner(Player player) { if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { MinerData minerData = new MinerData(player, tileUnderPlayer); minersMap.put(player.uuid(), minerData); - Call.constructFinish(tileUnderPlayer, Blocks.combustionGenerator, null, (byte) 0, Team.blue, null); + Call.constructFinish(tileUnderPlayer, Blocks.pulveriser, null, (byte) 0, Team.blue, null); Call.effect(Fx.explosion, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 5, Color.red); players.get(player.uuid()).subtractScore(20); } @@ -69,7 +69,7 @@ public static void renderMiners() { if (miner != null) { if (miner.getTileOn().block() == Blocks.air || miner.getOwner().team() != Team.blue) { minersMap.remove(owner, miner); - if (miner.getTileOn().block() == Blocks.combustionGenerator) { + if (miner.getTileOn().block() == Blocks.pulveriser) { miner.getTileOn().build.kill(); } } else { From 4949085f21f1da70ca63e61a1aacde8fe00cbe95 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:50:21 +0300 Subject: [PATCH 380/460] stations 1 --- patches/rvsb.json | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 30f03d4c..9760e3eb 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -919,8 +919,34 @@ block.battery.category: effect block.mechanical-pump.requirements: [dormant-cyst/4] block.mechanical-pump.category: effect -block.segment.requirements: [dormant-cyst/80] -block.segment.category: effect +block.mender.requirements: [dormant-cyst/20] +block.mender.category: logic +block.pulverizer.localisedName: "Repair point" + +block.phase-wall.requirements: [dormant-cyst/20] +block.phase-wall.category: logic +block.pulverizer.localisedName: "Supressor tower" + +block.radar.requirements: [dormant-cyst/8] +block.radar.category: logic +block.pulverizer.localisedName: "Workbench" + +block.carbide-wall.requirements: [dormant-cyst/7] +block.carbide-wall.category: logic +block.pulverizer.localisedName: "Laboratory" + +block.beam-node.requirements: [dormant-cyst/18] +block.beam-node.category: logic +block.pulverizer.localisedName: "Booster" + +block.slag-incinerator.requirements: [dormant-cyst/80] +block.slag-incinerator.category: logic +block.pulverizer.localisedName: "Recycler" + +block.pulverizer.requirements: [dormant-cyst/6] +block.pulverizer.category: logic +block.pulverizer.localisedName: "Miner" + //building for everyone From a3feb17b97d1dbea7a8e1b2153e427f7a827c976 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:51:01 +0300 Subject: [PATCH 381/460] bye bye useless class --- .../redvsblue/game/building/Buildings.java | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java b/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java deleted file mode 100644 index 93d8f6f8..00000000 --- a/src/main/java/net/voiddustry/redvsblue/game/building/Buildings.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.voiddustry.redvsblue.game.building; - -import arc.struct.Seq; -import mindustry.content.Blocks; -import mindustry.world.Block; - -import java.util.HashMap; - -// PATCH NEEDS TO BE EDITED TOO - -public class Buildings { - - public static HashMap getPrices() { - HashMap prices = new HashMap<>(); - - prices.put(Blocks.itemBridge, 3); - prices.put(Blocks.bridgeConduit, 3); - prices.put(Blocks.unloader, 9); - prices.put(Blocks.powerNodeLarge, 9); - prices.put(Blocks.pneumaticDrill, 9); - prices.put(Blocks.container, 3); - prices.put(Blocks.berylliumWall, 2); - prices.put(Blocks.berylliumWallLarge, 6); - prices.put(Blocks.thoriumWall, 4); - prices.put(Blocks.thoriumWallLarge, 12); - prices.put(Blocks.blastDoor, 30); - prices.put(Blocks.combustionGenerator, 9); - prices.put(Blocks.rtgGenerator, 30); - prices.put(Blocks.laserDrill, 25); - prices.put(Blocks.forceProjector, 35); - prices.put(Blocks.powerNode, 3); - prices.put(Blocks.battery, 5); - prices.put(Blocks.mechanicalPump, 5); - prices.put(Blocks.segment, 80); - - return prices; - } -} From 5d1ce39ee94698de1c337c8137b057e827716724 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:55:58 +0300 Subject: [PATCH 382/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 8107df2b..15676fec 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -29,12 +29,10 @@ import mindustry.entities.units.BuildPlan; import net.voiddustry.redvsblue.RedVsBluePlugin; -import net.voiddustry.redvsblue.game.building.Buildings; // updates construct blocks instead of the game doing it, original in usurvplugin public class UpdateConstructBlocks implements Runnable { - HashMap prices = Buildings.getPrices(); @Override public void run() { try { @@ -44,15 +42,20 @@ public void run() { if (u.buildPlan().worldContext) { if (u.isBuilding()) { BuildPlan bp = u.buildPlan(); - + int cost = 0; Tile tile = Vars.world.tile(bp.x,bp.y); - Integer cost = prices.get(bp.block); + for(int i = 0; i < bp.block.requirements.length; i++){ + if (bp.block.requirements[i].item==Items.dormantCyst) { + cost = bp.block.requirements[i].amount; + break; + } + } if (u.getPlayer() != null && u.buildPlan().placeable(Team.blue) && u.dst(bp.x*8,bp.y*8)=cost && (!(cost == null))) { + if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && cost!=0) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); //Log.info("finishing construction"); Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); From 2d710ae4b182381c81fb870730bd03c845381afd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:58:09 +0300 Subject: [PATCH 383/460] Update Miner.java --- .../java/net/voiddustry/redvsblue/game/stations/Miner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index 8fe1b0b4..68627226 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -55,7 +55,7 @@ public static void buyMiner(Player player) { if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { MinerData minerData = new MinerData(player, tileUnderPlayer); minersMap.put(player.uuid(), minerData); - Call.constructFinish(tileUnderPlayer, Blocks.pulveriser, null, (byte) 0, Team.blue, null); + Call.constructFinish(tileUnderPlayer, Blocks.pulverizer, null, (byte) 0, Team.blue, null); Call.effect(Fx.explosion, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 5, Color.red); players.get(player.uuid()).subtractScore(20); } @@ -69,7 +69,7 @@ public static void renderMiners() { if (miner != null) { if (miner.getTileOn().block() == Blocks.air || miner.getOwner().team() != Team.blue) { minersMap.remove(owner, miner); - if (miner.getTileOn().block() == Blocks.pulveriser) { + if (miner.getTileOn().block() == Blocks.pulverizer) { miner.getTileOn().build.kill(); } } else { From 383df3ff8a78be43fdf688d39e1825d174355e18 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:01:03 +0300 Subject: [PATCH 384/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index a6d50782..3cd0ac67 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -24,7 +24,6 @@ import net.voiddustry.redvsblue.Bundle; import net.voiddustry.redvsblue.PlayerData; -import net.voiddustry.redvsblue.game.building.Buildings; import net.voiddustry.redvsblue.game.crux.StageUnits; import net.voiddustry.redvsblue.game.starting_menu.StartingItems; import net.voiddustry.redvsblue.game.starting_menu.StartingMenu; @@ -43,10 +42,13 @@ public class Utils { public static void initRules() { - HashMap prices = Buildings.getPrices(); for (Block block : Vars.content.blocks()) { - if (!prices.containsKey(block)) { - state.rules.bannedBlocks.add(block); + state.rules.bannedBlocks.add(block); + for(int i = 0; i < bp.block.requirements.length; i++){ + if (bp.block.requirements[i].item==Items.dormantCyst) { + state.rules.bannedBlocks.remove(block); + break; + } } } From 901e37a8e3087f2d15f6fb817a9650b70a39e3ce Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:12:27 +0300 Subject: [PATCH 385/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 15676fec..85f8da16 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -27,8 +27,10 @@ import mindustry.net.Administration.*; import mindustry.content.Blocks; import mindustry.entities.units.BuildPlan; +import mindustry.type.Category; import net.voiddustry.redvsblue.RedVsBluePlugin; +import net.voiddustry.game.stations.*; // updates construct blocks instead of the game doing it, original in usurvplugin @@ -42,8 +44,10 @@ public void run() { if (u.buildPlan().worldContext) { if (u.isBuilding()) { BuildPlan bp = u.buildPlan(); + int cost = 0; Tile tile = Vars.world.tile(bp.x,bp.y); + for(int i = 0; i < bp.block.requirements.length; i++){ if (bp.block.requirements[i].item==Items.dormantCyst) { cost = bp.block.requirements[i].amount; @@ -58,7 +62,25 @@ public void run() { if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && cost!=0) { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); //Log.info("finishing construction"); + if (bp.block.category == Category.logic) { + if (bp.block == Blocks.pulverizer) { + + } else if (bp.block == Blocks.mender) { + + } else if (bp.block == Blocks.phaseWall) { + + } else if (bp.block == Blocks.radar) { + + } else if (bp.block == Blocks.carbideWall) { + + } else if (bp.block == Blocks.beamNode) { + + } else if (bp.block == Blocks.slagIncinerator) { + + } + } else { Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); + } tile.build.placed(); } else { if (tile.block() instanceof ConstructBlock cb) { From 5f9c8a560490164c1203f318a7910bb1c2440cb8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:13:03 +0300 Subject: [PATCH 386/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 9760e3eb..84f38641 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -919,7 +919,7 @@ block.battery.category: effect block.mechanical-pump.requirements: [dormant-cyst/4] block.mechanical-pump.category: effect -block.mender.requirements: [dormant-cyst/20] +block.mender.requirements: [dormant-cyst/10] block.mender.category: logic block.pulverizer.localisedName: "Repair point" From 9b5fb4006bc0385eb0538a2432c1ce3919ef5396 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:15:14 +0300 Subject: [PATCH 387/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 85f8da16..7eae64ac 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -30,7 +30,7 @@ import mindustry.type.Category; import net.voiddustry.redvsblue.RedVsBluePlugin; -import net.voiddustry.game.stations.*; +import net.voiddustry.redvsblue.game.stations.*; // updates construct blocks instead of the game doing it, original in usurvplugin From 1a9a7c985e4bd4abbe86da9f03b4ce80a92586d2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:17:00 +0300 Subject: [PATCH 388/460] =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D1=8D=D1=82=D0=BE?= =?UTF-8?q?=20=D0=B7=D0=B0=20=D1=85=D1=83=D0=B9=D0=BD=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redvsblue/game/building/UpdateConstructBlocks.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 7eae64ac..fbacf8c0 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -48,9 +48,9 @@ public void run() { int cost = 0; Tile tile = Vars.world.tile(bp.x,bp.y); - for(int i = 0; i < bp.block.requirements.length; i++){ - if (bp.block.requirements[i].item==Items.dormantCyst) { - cost = bp.block.requirements[i].amount; + for(int i = 0; i < u.buildPlan().block.requirements.length; i++){ + if (u.buildPlan().block.requirements[i].item==Items.dormantCyst) { + cost = u.buildPlan().requirements[i].amount; break; } } From c85e799b7d2a2490cc78685463ef66692ee7865f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:17:56 +0300 Subject: [PATCH 389/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index fbacf8c0..e062181f 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -48,9 +48,9 @@ public void run() { int cost = 0; Tile tile = Vars.world.tile(bp.x,bp.y); - for(int i = 0; i < u.buildPlan().block.requirements.length; i++){ - if (u.buildPlan().block.requirements[i].item==Items.dormantCyst) { - cost = u.buildPlan().requirements[i].amount; + for(int i = 0; i < bp.block.requirements.length; i++){ + if (bp.block.requirements[i].item==Items.dormantCyst) { + cost = bp.requirements[i].amount; break; } } From 1f3e29d0b890356b09e6b13172778096021898df Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:18:23 +0300 Subject: [PATCH 390/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 3cd0ac67..846c338a 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -44,8 +44,8 @@ public static void initRules() { for (Block block : Vars.content.blocks()) { state.rules.bannedBlocks.add(block); - for(int i = 0; i < bp.block.requirements.length; i++){ - if (bp.block.requirements[i].item==Items.dormantCyst) { + for(int i = 0; i < block.requirements.length; i++){ + if (block.requirements[i].item==Items.dormantCyst) { state.rules.bannedBlocks.remove(block); break; } From 338b37829b1589bbb24c495a878da9d78a6ef2e0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:19:35 +0300 Subject: [PATCH 391/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index e062181f..7eae64ac 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -50,7 +50,7 @@ public void run() { for(int i = 0; i < bp.block.requirements.length; i++){ if (bp.block.requirements[i].item==Items.dormantCyst) { - cost = bp.requirements[i].amount; + cost = bp.block.requirements[i].amount; break; } } From 4a0589b5118eba7ff3f6addc99e6166b9146deae Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:25:33 +0300 Subject: [PATCH 392/460] Update rvsb.json --- patches/rvsb.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 84f38641..0f1b7b16 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -921,31 +921,31 @@ block.mechanical-pump.category: effect block.mender.requirements: [dormant-cyst/10] block.mender.category: logic -block.pulverizer.localisedName: "Repair point" +block.pulverizer.localizedName: "Repair point" block.phase-wall.requirements: [dormant-cyst/20] block.phase-wall.category: logic -block.pulverizer.localisedName: "Supressor tower" +block.pulverizer.localizedName: "Supressor tower" block.radar.requirements: [dormant-cyst/8] block.radar.category: logic -block.pulverizer.localisedName: "Workbench" +block.pulverizer.localizedName: "Workbench" block.carbide-wall.requirements: [dormant-cyst/7] block.carbide-wall.category: logic -block.pulverizer.localisedName: "Laboratory" +block.pulverizer.localizedName: "Laboratory" block.beam-node.requirements: [dormant-cyst/18] block.beam-node.category: logic -block.pulverizer.localisedName: "Booster" +block.pulverizer.localizedName: "Booster" block.slag-incinerator.requirements: [dormant-cyst/80] block.slag-incinerator.category: logic -block.pulverizer.localisedName: "Recycler" +block.pulverizer.localizedName: "Recycler" block.pulverizer.requirements: [dormant-cyst/6] block.pulverizer.category: logic -block.pulverizer.localisedName: "Miner" +block.pulverizer.localizedName: "Miner" From a61624f4b225eb859a6788869c9f1b63b1e4d137 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:04:38 +0300 Subject: [PATCH 393/460] Update ArmorWorkbench.java --- .../redvsblue/game/stations/ArmorWorkbench.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index 73809156..d5837dad 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -89,7 +89,7 @@ public static void initTimer() { Timer.schedule(ArmorWorkbench::renderWorkbenches, 0, 1); } - public static void buyWorkbench(Player player) { + public static void buyWorkbench(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 8) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 8)); } else { @@ -97,12 +97,14 @@ public static void buyWorkbench(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); - + if (tile == null) { + tile = tileUnderPlayer; + } if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { StationData workbenchData = new StationData(player, tileUnderPlayer); workbenches.put(player.uuid(), workbenchData); Call.constructFinish(tileUnderPlayer, Blocks.radar, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x * 8, tileUnderPlayer.y * 8, 0, Color.red); + Call.effect(Fx.regenParticle, tile.x * 8, tile.y * 8, 0, Color.red); players.get(player.uuid()).subtractScore(8); } } From 408682c5e3638fcf05bcc0a829fb59e00bae620a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:06:09 +0300 Subject: [PATCH 394/460] Update Booster.java --- .../voiddustry/redvsblue/game/stations/Booster.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java index eda79af2..fda2ef2d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java @@ -46,7 +46,7 @@ public static void initTimer() { Timer.schedule(Booster::renderBoosters, 0, 1); } - public static void buyBooster(Player player) { + public static void buyBooster(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 18) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 18)); } else { @@ -54,12 +54,15 @@ public static void buyBooster(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData boosterData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData boosterData = new StationData(player, tile); boostersMap.put(player.uuid(), boosterData); - Call.constructFinish(tileUnderPlayer, Blocks.beamNode, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 0, Color.red); + Call.constructFinish(tile, Blocks.beamNode, null, (byte) 0, Team.blue, null); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(18); } } From dcae67b0f5a6b3b8026d423786d3232feb187647 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:08:03 +0300 Subject: [PATCH 395/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index 7eae64ac..d5a0b5be 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -60,7 +60,6 @@ public void run() { if (u.buildPlan().breaking == false && u.isBuilding()) { //Log.info("Attempting to consume " + cost + " ,from player " + player); if (RedVsBluePlugin.players.get(player.uuid()).getScore()>=cost && cost!=0) { - RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); //Log.info("finishing construction"); if (bp.block.category == Category.logic) { if (bp.block == Blocks.pulverizer) { @@ -79,6 +78,7 @@ public void run() { } } else { + RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); } tile.build.placed(); From e146c0df6ecb81954d476b5d11e43e02b2486a1f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:08:20 +0300 Subject: [PATCH 396/460] Update ArmorWorkbench.java --- .../voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index d5837dad..4f7e3193 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -100,10 +100,10 @@ public static void buyWorkbench(Player player, Tile tile) { if (tile == null) { tile = tileUnderPlayer; } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData workbenchData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData workbenchData = new StationData(player, tile); workbenches.put(player.uuid(), workbenchData); - Call.constructFinish(tileUnderPlayer, Blocks.radar, null, (byte) 0, Team.blue, null); + Call.constructFinish(tile, Blocks.radar, null, (byte) 0, Team.blue, null); Call.effect(Fx.regenParticle, tile.x * 8, tile.y * 8, 0, Color.red); players.get(player.uuid()).subtractScore(8); } From 03606e2de2b76f7a8b284770f1720e7ab5b8a6ab Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:09:36 +0300 Subject: [PATCH 397/460] Update Laboratory.java --- .../redvsblue/game/stations/Laboratory.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 924d10c4..eafbd3c1 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -157,7 +157,7 @@ public static float getMultiplier(String evolution, Player player) { return getMultiplier(Evolutions.evolutions.get(evolution), player); } - public static void buyLab(Player player) { + public static void buyLab(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 7) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 7)); } else { @@ -165,12 +165,15 @@ public static void buyLab(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData laboratoryData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData laboratoryData = new StationData(player, tile); labsMap.put(player.uuid(), laboratoryData); - Call.constructFinish(tileUnderPlayer, Blocks.carbideWall, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 0, Color.red); + Call.constructFinish(tile, Blocks.carbideWall, null, (byte) 0, Team.blue, null); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(7); } } From b4f384ee0b9901a056e8857e1418e0d7bb80d246 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:10:28 +0300 Subject: [PATCH 398/460] Update Miner.java --- .../net/voiddustry/redvsblue/game/stations/Miner.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index 68627226..fea3c318 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -51,12 +51,15 @@ public static void buyMiner(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - MinerData minerData = new MinerData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + MinerData minerData = new MinerData(player, tile); minersMap.put(player.uuid(), minerData); - Call.constructFinish(tileUnderPlayer, Blocks.pulverizer, null, (byte) 0, Team.blue, null); - Call.effect(Fx.explosion, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 5, Color.red); + Call.constructFinish(tile, Blocks.pulverizer, null, (byte) 0, Team.blue, null); + Call.effect(Fx.explosion, tile.x*8, tile.y*8, 5, Color.red); players.get(player.uuid()).subtractScore(20); } } From bed33505a2040f40a56e9d7e1dde4532cae7bc00 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:11:27 +0300 Subject: [PATCH 399/460] Update Recycler.java --- .../redvsblue/game/stations/Recycler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index e1276a62..2ef43e0e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -55,7 +55,7 @@ public static void initTimer() { Timer.schedule(Recycler::renderRecycler, 0, 1); } - public static void buyRecycler(Player player) { + public static void buyRecycler(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 6) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 6)); } else { @@ -63,12 +63,15 @@ public static void buyRecycler(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData recyclerData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData recyclerData = new StationData(player, tile); recyclersmap.put(player.uuid(), recyclerData); - Call.constructFinish(tileUnderPlayer, Blocks.slagIncinerator, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 0, Color.red); + Call.constructFinish(tile, Blocks.slagIncinerator, null, (byte) 0, Team.blue, null); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(6); } } From 84f965321e32c7efe8180e44a3023829c9b69b55 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:12:51 +0300 Subject: [PATCH 400/460] Update RepairPoint.java --- .../redvsblue/game/stations/RepairPoint.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java b/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java index 9625f8b7..8ecef2e3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java @@ -56,7 +56,7 @@ public static void initTimer() { Timer.schedule(RepairPoint::renderRepairPoints, 0, 1); } - public static void buyRepairPoint(Player player) { + public static void buyRepairPoint(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 10) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 10)); } else { @@ -64,12 +64,15 @@ public static void buyRepairPoint(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData repairPointsData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData repairPointsData = new StationData(player, tile); repairPointsMap.put(player.uuid(), repairPointsData); - Call.constructFinish(tileUnderPlayer, Blocks.mender, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 0, Color.red); + Call.constructFinish(tile, Blocks.mender, null, (byte) 0, Team.blue, null); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(10); } } From 166a0825d2d2ec8b261d146b16cfb55f9826b9e4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:13:40 +0300 Subject: [PATCH 401/460] Update SuppressorTower.java --- .../redvsblue/game/stations/SuppressorTower.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 7c5a4840..1126ba7e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -55,7 +55,7 @@ public static void initTimer() { Timer.schedule(SuppressorTower::renderSuppressorTowers, 0, 0.5F); } - public static void buyTower(Player player) { + public static void buyTower(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { @@ -63,12 +63,15 @@ public static void buyTower(Player player) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); + if (tile == null) { + tile = tileUnderPlayer; + } - if (!player.dead() && player.team() == Team.blue && tileUnderPlayer.block().isAir()) { - StationData towerData = new StationData(player, tileUnderPlayer); + if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { + StationData towerData = new StationData(player, tile); suppressorTowerMap.put(player.uuid(), towerData); - Call.constructFinish(tileUnderPlayer, Blocks.phaseWall, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tileUnderPlayer.x*8, tileUnderPlayer.y*8, 0, Color.red); + Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(20); } } From 4022181c4c083a49e6daad5cd0f5d19902fef0f3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:14:14 +0300 Subject: [PATCH 402/460] Update StationsMenu.java --- .../redvsblue/game/stations/StationsMenu.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java b/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java index c1371b54..4d7ce5b2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java @@ -11,13 +11,13 @@ public static void openMenu(Player player) { if (!player.dead() && player.team() == Team.blue) { int menu = Menus.registerMenu((player1, option) -> { switch (option) { - case 0 -> SuppressorTower.buyTower(player); - case 1 -> Miner.buyMiner(player); - case 2 -> RepairPoint.buyRepairPoint(player); - case 3 -> ArmorWorkbench.buyWorkbench(player); - case 4 -> Laboratory.buyLab(player); - case 5 -> Recycler.buyRecycler(player); - case 6 -> Booster.buyBooster(player); + case 0 -> SuppressorTower.buyTower(player, null); + case 1 -> Miner.buyMiner(player, null); + case 2 -> RepairPoint.buyRepairPoint(player, null); + case 3 -> ArmorWorkbench.buyWorkbench(player, null); + case 4 -> Laboratory.buyLab(player, null); + case 5 -> Recycler.buyRecycler(player, null); + case 6 -> Booster.buyBooster(player, null); } }); From 9989c9e8ff1cd8df495636fb42cad051c4fd37ab Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:15:18 +0300 Subject: [PATCH 403/460] Update Miner.java --- src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index fea3c318..0215deed 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -43,7 +43,7 @@ public static void initTimer() { Timer.schedule(Miner::renderMiners, 0, 1); } - public static void buyMiner(Player player) { + public static void buyMiner(Player player, Tile tile) { if ((!(players.get(player.uuid()) == null)) && players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", 20)); } else { From c1bba26fea304637d443bb174ac721ddf9aa7e4f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:20:32 +0300 Subject: [PATCH 404/460] Update UpdateConstructBlocks.java --- .../game/building/UpdateConstructBlocks.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index d5a0b5be..e1a1795d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -63,19 +63,19 @@ public void run() { //Log.info("finishing construction"); if (bp.block.category == Category.logic) { if (bp.block == Blocks.pulverizer) { - + Miner.buyMiner(player, tile); } else if (bp.block == Blocks.mender) { - + RepairPoint.buyRepairPoint(player, tile); } else if (bp.block == Blocks.phaseWall) { - + SupressorTower.buyTower(player, tile); } else if (bp.block == Blocks.radar) { - + Workbench.buyWorkbench(player, tile); } else if (bp.block == Blocks.carbideWall) { - + Laboratory.buyLab(player, tile); } else if (bp.block == Blocks.beamNode) { - + Booster.buyBooster(player, tile); } else if (bp.block == Blocks.slagIncinerator) { - + Recycler.buyRecycler(player, tile); } } else { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); From febb6957abb6d009d56c3c88eaede9fed0ec782b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:27:12 +0300 Subject: [PATCH 405/460] supressor delay --- .../redvsblue/game/stations/SuppressorTower.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 1126ba7e..3aca334b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -1,6 +1,7 @@ package net.voiddustry.redvsblue.game.stations; import arc.graphics.Color; +import arc.util.Timer; import arc.util.Timer; import mindustry.Vars; @@ -68,11 +69,15 @@ public static void buyTower(Player player, Tile tile) { } if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { - StationData towerData = new StationData(player, tile); - suppressorTowerMap.put(player.uuid(), towerData); Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); - Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); players.get(player.uuid()).subtractScore(20); + String text = player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying"; + StationUtils.drawStationName(pointData.tileOn(), text, 10.5F); + Timer.schedule(() -> { + StationData towerData = new StationData(player, tile); + suppressorTowerMap.put(player.uuid(), towerData); + Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); + }, 10); } } } From 7730060a5c5934e2800817c8d2233def494a2aea Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:28:31 +0300 Subject: [PATCH 406/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index e1a1795d..b895432c 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -67,9 +67,9 @@ public void run() { } else if (bp.block == Blocks.mender) { RepairPoint.buyRepairPoint(player, tile); } else if (bp.block == Blocks.phaseWall) { - SupressorTower.buyTower(player, tile); + SuppressorTower.buyTower(player, tile); } else if (bp.block == Blocks.radar) { - Workbench.buyWorkbench(player, tile); + ArmorWorkbench.buyWorkbench(player, tile); } else if (bp.block == Blocks.carbideWall) { Laboratory.buyLab(player, tile); } else if (bp.block == Blocks.beamNode) { From a06af823b821959244fefa6c504ba1e2b4e61cac Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:34:15 +0300 Subject: [PATCH 407/460] Update SuppressorTower.java --- .../voiddustry/redvsblue/game/stations/SuppressorTower.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 3aca334b..258fcba3 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -71,8 +71,7 @@ public static void buyTower(Player player, Tile tile) { if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); - String text = player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying"; - StationUtils.drawStationName(pointData.tileOn(), text, 10.5F); + StationUtils.drawStationName(tile, player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying", 10.5F); Timer.schedule(() -> { StationData towerData = new StationData(player, tile); suppressorTowerMap.put(player.uuid(), towerData); From af0e9b03596f91b1d86b275386f7d7a6f3403591 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:37:55 +0300 Subject: [PATCH 408/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 258fcba3..d29c7fff 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -56,7 +56,7 @@ public static void initTimer() { Timer.schedule(SuppressorTower::renderSuppressorTowers, 0, 0.5F); } - public static void buyTower(Player player, Tile tile) { + public static void buyTower(Player player, final Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { From 0eddeb84ed8b45593c1b978dd150f977d334d6ae Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:45:11 +0300 Subject: [PATCH 409/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index d29c7fff..f0e15367 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -72,7 +72,7 @@ public static void buyTower(Player player, final Tile tile) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); StationUtils.drawStationName(tile, player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying", 10.5F); - Timer.schedule(() -> { + Timer.schedule(tile -> { StationData towerData = new StationData(player, tile); suppressorTowerMap.put(player.uuid(), towerData); Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); From 37b8522eda1cfbd62304c728af2cd5c58f9de93b Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:49:12 +0300 Subject: [PATCH 410/460] Update SuppressorTower.java --- .../voiddustry/redvsblue/game/stations/SuppressorTower.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index f0e15367..c3b2e9d4 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -68,14 +68,15 @@ public static void buyTower(Player player, final Tile tile) { tile = tileUnderPlayer; } + final placeTile = tile; if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); StationUtils.drawStationName(tile, player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying", 10.5F); Timer.schedule(tile -> { - StationData towerData = new StationData(player, tile); + StationData towerData = new StationData(player, placeTile); suppressorTowerMap.put(player.uuid(), towerData); - Call.effect(Fx.regenParticle, tile.x*8, tile.y*8, 0, Color.red); + Call.effect(Fx.regenParticle, placeTile.x*8, placeTile.y*8, 0, Color.red); }, 10); } } From 86ce53253e4fd2c74eb94a1eb871ec34f0946005 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:51:02 +0300 Subject: [PATCH 411/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index c3b2e9d4..e1b36f2e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -68,7 +68,7 @@ public static void buyTower(Player player, final Tile tile) { tile = tileUnderPlayer; } - final placeTile = tile; + final Tile placeTile = tile; if (!player.dead() && player.team() == Team.blue && tile.block().isAir()) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); From c6bb606ad47f1eb4127ba64e201a0409d1774008 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:52:03 +0300 Subject: [PATCH 412/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index e1b36f2e..d8187eeb 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -73,7 +73,7 @@ public static void buyTower(Player player, final Tile tile) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); StationUtils.drawStationName(tile, player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying", 10.5F); - Timer.schedule(tile -> { + Timer.schedule(() -> { StationData towerData = new StationData(player, placeTile); suppressorTowerMap.put(player.uuid(), towerData); Call.effect(Fx.regenParticle, placeTile.x*8, placeTile.y*8, 0, Color.red); From 2f725cc051685da041068fe509551d4b8cd59fa2 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:53:00 +0300 Subject: [PATCH 413/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index d8187eeb..59273bc7 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -56,7 +56,7 @@ public static void initTimer() { Timer.schedule(SuppressorTower::renderSuppressorTowers, 0, 0.5F); } - public static void buyTower(Player player, final Tile tile) { + public static void buyTower(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { From 5e86f0316a898991d15ef5f6b8b91a115d573bea Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:34:34 +0300 Subject: [PATCH 414/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 59273bc7..051a3392 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -87,7 +87,7 @@ public static void buyTower(Player player, Tile tile) { public static void renderSuppressorTowers() { suppressorTowerMap.forEach((owner, tower) -> { if (tower != null) { - if (tower.tileOn().block() == Blocks.air || tower.owner().team() != Team.blue) { + if (tower.tileOn().block() != Blocks.phaseWall || tower.owner().team() != Team.blue) { suppressorTowerMap.remove(owner); if (tower.tileOn().block() == Blocks.phaseWall) { tower.tileOn().build.kill(); From 3d6284261132fb2324e7483e3299f462443bb50f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:34:59 +0300 Subject: [PATCH 415/460] Update ArmorWorkbench.java --- .../net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index 4f7e3193..617108ad 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -115,7 +115,7 @@ public static void buyWorkbench(Player player, Tile tile) { public static void renderWorkbenches() { workbenches.forEach((owner, workbench) -> { if (workbench != null) { - if (workbench.tileOn().block() == Blocks.air || workbench.owner().team() != Team.blue) { + if (workbench.tileOn().block() != Blocks.radar || workbench.owner().team() != Team.blue) { workbenches.remove(owner); if (workbench.tileOn().block() == Blocks.radar) { workbench.tileOn().build.kill(); From b270cfecaf85927fc1a7a1ebc7f491e37faa2999 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:35:20 +0300 Subject: [PATCH 416/460] Update Booster.java --- .../java/net/voiddustry/redvsblue/game/stations/Booster.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java index fda2ef2d..11aa7143 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Booster.java @@ -73,7 +73,7 @@ public static void buyBooster(Player player, Tile tile) { public static void renderBoosters() { boostersMap.forEach((owner, booster) -> { if (booster != null) { - if (booster.tileOn().block() == Blocks.air || booster.owner().team() != Team.blue) { + if (booster.tileOn().block() != Blocks.beamNode || booster.owner().team() != Team.blue) { boostersMap.remove(owner); if (booster.tileOn().block() == Blocks.beamNode) { booster.tileOn().build.kill(); From 032809bd46c18b3ac807af45a428cc24b6090bcd Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:35:35 +0300 Subject: [PATCH 417/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index eafbd3c1..629546e2 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -184,7 +184,7 @@ public static void buyLab(Player player, Tile tile) { public static void renderLabs() { labsMap.forEach((owner, lab) -> { if (lab != null) { - if (lab.tileOn().block() == Blocks.air || lab.owner().team() != Team.blue) { + if (lab.tileOn().block() == Blocks.carbideWall || lab.owner().team() != Team.blue) { labsMap.remove(owner); if (lab.tileOn().block() == Blocks.carbideWall) { lab.tileOn().build.kill(); From 415272ea2523590bef25de815dcd1a9e65289f0f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:35:52 +0300 Subject: [PATCH 418/460] Update Miner.java --- src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index 0215deed..db418c70 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -70,7 +70,7 @@ public static void buyMiner(Player player, Tile tile) { public static void renderMiners() { minersMap.forEach((owner, miner) -> { if (miner != null) { - if (miner.getTileOn().block() == Blocks.air || miner.getOwner().team() != Team.blue) { + if (miner.getTileOn().block() == Blocks.pulveriser || miner.getOwner().team() != Team.blue) { minersMap.remove(owner, miner); if (miner.getTileOn().block() == Blocks.pulverizer) { miner.getTileOn().build.kill(); From 13e1a70a78ed6f71ce4031b2846256332bf6b16e Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:36:19 +0300 Subject: [PATCH 419/460] Update Recycler.java --- .../java/net/voiddustry/redvsblue/game/stations/Recycler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java index 2ef43e0e..aa51fc0b 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Recycler.java @@ -82,7 +82,7 @@ public static void buyRecycler(Player player, Tile tile) { public static void renderRecycler() { recyclersmap.forEach((owner, recycler) -> { if (recycler != null) { - if (recycler.tileOn().block() == Blocks.air || recycler.owner().team() != Team.blue) { + if (recycler.tileOn().block() != Blocks.slagIncinerator || recycler.owner().team() != Team.blue) { recyclersmap.remove(owner); if (recycler.tileOn().block() == Blocks.slagIncinerator) { recycler.tileOn().build.kill(); From b692174fa3113a24a6f24b25bd982c14bd38da03 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:36:38 +0300 Subject: [PATCH 420/460] Update Miner.java --- src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index db418c70..0540eacd 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -70,7 +70,7 @@ public static void buyMiner(Player player, Tile tile) { public static void renderMiners() { minersMap.forEach((owner, miner) -> { if (miner != null) { - if (miner.getTileOn().block() == Blocks.pulveriser || miner.getOwner().team() != Team.blue) { + if (miner.getTileOn().block() != Blocks.pulveriser || miner.getOwner().team() != Team.blue) { minersMap.remove(owner, miner); if (miner.getTileOn().block() == Blocks.pulverizer) { miner.getTileOn().build.kill(); From 2412412572d049b467874eaa8f38efc6c3e4320d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:37:05 +0300 Subject: [PATCH 421/460] Update RepairPoint.java --- .../net/voiddustry/redvsblue/game/stations/RepairPoint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java b/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java index 8ecef2e3..b21822dc 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/RepairPoint.java @@ -83,7 +83,7 @@ public static void buyRepairPoint(Player player, Tile tile) { public static void renderRepairPoints() { repairPointsMap.forEach((owner, repairPoint) -> { if (repairPoint != null) { - if (repairPoint.tileOn().block() == Blocks.air || repairPoint.owner().team() != Team.blue) { + if (repairPoint.tileOn().block() != Blocks.mender || repairPoint.owner().team() != Team.blue) { repairPointsMap.remove(owner); if (repairPoint.tileOn().block() == Blocks.mender) { repairPoint.tileOn().build.kill(); From 2067f5b41feeb8e6e1f59729d9454fff4932fc63 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:37:51 +0300 Subject: [PATCH 422/460] Z --- src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java index 0540eacd..34f1167e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Miner.java @@ -70,7 +70,7 @@ public static void buyMiner(Player player, Tile tile) { public static void renderMiners() { minersMap.forEach((owner, miner) -> { if (miner != null) { - if (miner.getTileOn().block() != Blocks.pulveriser || miner.getOwner().team() != Team.blue) { + if (miner.getTileOn().block() != Blocks.pulverizer || miner.getOwner().team() != Team.blue) { minersMap.remove(owner, miner); if (miner.getTileOn().block() == Blocks.pulverizer) { miner.getTileOn().build.kill(); From 65608a08e7d68e161a6a8be3deb9ced2c5a04125 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:51:30 +0300 Subject: [PATCH 423/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index c57298d4..60bc7ea9 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -226,6 +226,10 @@ public void init() { } }); + Events.on(EventType.PlayEvent.class, event -> { + Utils.initRules(); + }); + //blue kill registration Events.on(EventType.UnitDestroyEvent.class, event -> { From 51f8d84ef53302778a70947b552b8fd021056407 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:54:44 +0300 Subject: [PATCH 424/460] Update Laboratory.java --- .../java/net/voiddustry/redvsblue/game/stations/Laboratory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 629546e2..3de4f31e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -184,7 +184,7 @@ public static void buyLab(Player player, Tile tile) { public static void renderLabs() { labsMap.forEach((owner, lab) -> { if (lab != null) { - if (lab.tileOn().block() == Blocks.carbideWall || lab.owner().team() != Team.blue) { + if (lab.tileOn().block() != Blocks.carbideWall || lab.owner().team() != Team.blue) { labsMap.remove(owner); if (lab.tileOn().block() == Blocks.carbideWall) { lab.tileOn().build.kill(); From 488a842e93705376e10ed36ff8819877df3cb738 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:56:56 +0300 Subject: [PATCH 425/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 60bc7ea9..0ff9b2c1 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -376,7 +376,7 @@ public void init() { Timer.schedule(updateConstructBlocks, 10f, 0.2f); Vars.state.rules.bannedBlocks.clear(); initRules(); - }, 5); + }, 0.5); Building core = Vars.state.teams.cores(Team.blue).first(); From fa6e741c84059d75ac37b8fb8e8191129a68434a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:00:10 +0300 Subject: [PATCH 426/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 0ff9b2c1..15474599 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -376,7 +376,7 @@ public void init() { Timer.schedule(updateConstructBlocks, 10f, 0.2f); Vars.state.rules.bannedBlocks.clear(); initRules(); - }, 0.5); + }, 0.5f); Building core = Vars.state.teams.cores(Team.blue).first(); From 4af73aebec92aaa1135229f0ea3f5dded3999480 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:00:51 +0300 Subject: [PATCH 427/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 0f1b7b16..b8861ab8 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -939,11 +939,11 @@ block.beam-node.requirements: [dormant-cyst/18] block.beam-node.category: logic block.pulverizer.localizedName: "Booster" -block.slag-incinerator.requirements: [dormant-cyst/80] +block.slag-incinerator.requirements: [dormant-cyst/6] block.slag-incinerator.category: logic block.pulverizer.localizedName: "Recycler" -block.pulverizer.requirements: [dormant-cyst/6] +block.pulverizer.requirements: [dormant-cyst/20] block.pulverizer.category: logic block.pulverizer.localizedName: "Miner" From ad9c9f47359b43495e02c65c0e3af6ccf442dcc0 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:10:15 +0300 Subject: [PATCH 428/460] give points command --- .../voiddustry/redvsblue/RedVsBluePlugin.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 15474599..9157b431 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -192,7 +192,6 @@ public void init() { }); Events.on(EventType.PlayerChatEvent.class, event -> { - Call.sound(Sounds.uiChat, 2, 2, 1); if (Utils.voting) { if (Strings.canParseInt(event.message)) { MapVote.registerVote(event.player, Strings.parseInt(event.message)); @@ -649,6 +648,22 @@ public void registerServerCommands(CommandHandler handler) { // } // }); + handler.register("givePoints", " ", "now actually works", (args) -> { + try { + Player player = null; + for (Player p : Groups.player) { + if (p.name == args[1].trim()) { + player = p; + break; + } + } + players.get(player.uuid()).setScore(players.get(player.uuid()).getScore() + args[0]); + Log.info("Gave " + args[0] + " points to player " + player.name); + } catch (Exception e) { + Log.info("An error occured while executing the command"); + } + }); + handler.register("restart", "now actually works", (args) -> { Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); Log.info("Server is restarting"); From 1b5bf458eb34ce5340fed2d1c0c3676ba2a88037 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:13:48 +0300 Subject: [PATCH 429/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 9157b431..502e99c3 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -657,7 +657,7 @@ public void registerServerCommands(CommandHandler handler) { break; } } - players.get(player.uuid()).setScore(players.get(player.uuid()).getScore() + args[0]); + players.get(player.uuid()).setScore(players.get(player.uuid()).getScore() + Integer.parseInt(args[0])); Log.info("Gave " + args[0] + " points to player " + player.name); } catch (Exception e) { Log.info("An error occured while executing the command"); From e4d7481a2329972c50259a5f59f5e6c3a19666a8 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:20:13 +0300 Subject: [PATCH 430/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 502e99c3..ea5f57e7 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -648,7 +648,7 @@ public void registerServerCommands(CommandHandler handler) { // } // }); - handler.register("givePoints", " ", "now actually works", (args) -> { + handler.register("givePoints", " ", "give people money, admin abuse, breaks capitalism, evil", (args) -> { try { Player player = null; for (Player p : Groups.player) { @@ -661,6 +661,7 @@ public void registerServerCommands(CommandHandler handler) { Log.info("Gave " + args[0] + " points to player " + player.name); } catch (Exception e) { Log.info("An error occured while executing the command"); + e.printStackTrace(); } }); From 32a3a1a1b7c00cd3197ecaa81382ad1b200f8920 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:25:11 +0300 Subject: [PATCH 431/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index ea5f57e7..6bd230df 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -652,9 +652,8 @@ public void registerServerCommands(CommandHandler handler) { try { Player player = null; for (Player p : Groups.player) { - if (p.name == args[1].trim()) { + if (p.name.trim() == args[1].trim()) { player = p; - break; } } players.get(player.uuid()).setScore(players.get(player.uuid()).getScore() + Integer.parseInt(args[0])); From 6e677bf010dc655b2b90354a39fc6545810c8dda Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:31:46 +0300 Subject: [PATCH 432/460] Update rvsb.json --- patches/rvsb.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index b8861ab8..23f883d1 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -921,27 +921,27 @@ block.mechanical-pump.category: effect block.mender.requirements: [dormant-cyst/10] block.mender.category: logic -block.pulverizer.localizedName: "Repair point" +block.mender.localizedName: "Repair point" block.phase-wall.requirements: [dormant-cyst/20] block.phase-wall.category: logic -block.pulverizer.localizedName: "Supressor tower" +block.phase-wall.localizedName: "Supressor tower" block.radar.requirements: [dormant-cyst/8] block.radar.category: logic -block.pulverizer.localizedName: "Workbench" +block.radar.localizedName: "Workbench" block.carbide-wall.requirements: [dormant-cyst/7] block.carbide-wall.category: logic -block.pulverizer.localizedName: "Laboratory" +block.carbide-wall.localizedName: "Laboratory" block.beam-node.requirements: [dormant-cyst/18] block.beam-node.category: logic -block.pulverizer.localizedName: "Booster" +block.beam-node.localizedName: "Booster" block.slag-incinerator.requirements: [dormant-cyst/6] block.slag-incinerator.category: logic -block.pulverizer.localizedName: "Recycler" +block.slag-incinerator.localizedName: "Recycler" block.pulverizer.requirements: [dormant-cyst/20] block.pulverizer.category: logic From 79712e32e33a32fcb38fab3dd42ea16358582641 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:36:02 +0300 Subject: [PATCH 433/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 6bd230df..53db2d7e 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -648,15 +648,15 @@ public void registerServerCommands(CommandHandler handler) { // } // }); - handler.register("givePoints", " ", "give people money, admin abuse, breaks capitalism, evil", (args) -> { + handler.register("setpoints", "[number] [playername...]", "give people money, or take it(better), admin abuse, breaks capitalism, evil", (args) -> { try { Player player = null; for (Player p : Groups.player) { - if (p.name.trim() == args[1].trim()) { + if (p.name.contains(args[1].trim())) { player = p; } } - players.get(player.uuid()).setScore(players.get(player.uuid()).getScore() + Integer.parseInt(args[0])); + players.get(player.uuid()).setScore(Integer.parseInt(args[0])); Log.info("Gave " + args[0] + " points to player " + player.name); } catch (Exception e) { Log.info("An error occured while executing the command"); From d171d3fd0c4616640cddf48b2138b0f2ccb64909 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:04:54 +0300 Subject: [PATCH 434/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 846c338a..55dd38e3 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -63,6 +63,7 @@ public static void initRules() { state.rules.bannedUnits.add(UnitTypes.alpha); state.rules.hideBannedBlocks = true; + state.rules.blockWhitelist = false; state.rules.teams.get(Team.malis).blockHealthMultiplier = 2; From ebcb3fa5cb4d53a95ee5f3184ce22eda60b1b3e1 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:15:39 +0300 Subject: [PATCH 435/460] Update rvsb.json --- patches/rvsb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 23f883d1..2d6092d9 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -925,7 +925,7 @@ block.mender.localizedName: "Repair point" block.phase-wall.requirements: [dormant-cyst/20] block.phase-wall.category: logic -block.phase-wall.localizedName: "Supressor tower" +block.phase-wall.localizedName: "Suppressor tower" block.radar.requirements: [dormant-cyst/8] block.radar.category: logic From 527eded77fc189d0ba5d38109c2f5b4d26ed376f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:19:46 +0300 Subject: [PATCH 436/460] Update UpdateConstructBlocks.java --- .../redvsblue/game/building/UpdateConstructBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java index b895432c..c35f1849 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java +++ b/src/main/java/net/voiddustry/redvsblue/game/building/UpdateConstructBlocks.java @@ -80,8 +80,8 @@ public void run() { } else { RedVsBluePlugin.players.get(player.uuid()).subtractScore(cost); Call.constructFinish(tile,bp.block,null,(byte)bp.rotation,player.team(),bp.config); - } tile.build.placed(); + } } else { if (tile.block() instanceof ConstructBlock cb) { tile.setNet(Blocks.air,Team.derelict,0); From b0d4d7a2cd1d15c3047c1683503bdf566b49076f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:24:40 +0300 Subject: [PATCH 437/460] fix suppressor --- .../voiddustry/redvsblue/game/stations/SuppressorTower.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 051a3392..c2141d08 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -24,6 +24,7 @@ public class SuppressorTower { private static final Map suppressorTowerMap = new ConcurrentHashMap<>(); + private static final Seq suppressorPlaced = new Seq<>(); public static void initTimer() { Timer.schedule(() -> suppressorTowerMap.forEach((owner, pointData) -> { @@ -60,7 +61,7 @@ public static void buyTower(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { - if (!suppressorTowerMap.containsKey(player.uuid())) { + if (!suppressorTowerMap.containsKey(player.uuid()) || !suppressorPlaced.has(player.uuid())) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); @@ -73,9 +74,11 @@ public static void buyTower(Player player, Tile tile) { Call.constructFinish(tile, Blocks.phaseWall, null, (byte) 0, Team.blue, null); players.get(player.uuid()).subtractScore(20); StationUtils.drawStationName(tile, player.name + "[gold]'s\n[accent]Suppressor Tower" + " - deploying", 10.5F); + suppressorPlaced.add(player.uuid()); Timer.schedule(() -> { StationData towerData = new StationData(player, placeTile); suppressorTowerMap.put(player.uuid(), towerData); + suppressorPlaced.remove(player.uuid()); Call.effect(Fx.regenParticle, placeTile.x*8, placeTile.y*8, 0, Color.red); }, 10); } @@ -99,5 +102,6 @@ public static void renderSuppressorTowers() { public static void clearTowers() { suppressorTowerMap.clear(); + suppressorPlaced.clear(); } } From 5013dd907a9b8fe00f1bbabe0f9ffac033b1b2c4 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:25:39 +0300 Subject: [PATCH 438/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index c2141d08..28aba835 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -2,6 +2,7 @@ import arc.graphics.Color; import arc.util.Timer; +import arc.struct.Seq; import arc.util.Timer; import mindustry.Vars; From 7a12e04510f14f4b80d5799a6f54b9f0af17844a Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:27:12 +0300 Subject: [PATCH 439/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index 28aba835..f3f92bc6 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -62,7 +62,7 @@ public static void buyTower(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { - if (!suppressorTowerMap.containsKey(player.uuid()) || !suppressorPlaced.has(player.uuid())) { + if (!suppressorTowerMap.containsKey(player.uuid()) || !suppressorPlaced.contains(player.uuid())) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); From c42c67cc60adb8499dbfba6124c67de6290abe4f Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:01:31 +0300 Subject: [PATCH 440/460] Update SuppressorTower.java --- .../net/voiddustry/redvsblue/game/stations/SuppressorTower.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java index f3f92bc6..553d5211 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/SuppressorTower.java @@ -62,7 +62,7 @@ public static void buyTower(Player player, Tile tile) { if (players.get(player.uuid()).getScore() < 20) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 20)); } else { - if (!suppressorTowerMap.containsKey(player.uuid()) || !suppressorPlaced.contains(player.uuid())) { + if (!suppressorTowerMap.containsKey(player.uuid()) && !suppressorPlaced.contains(player.uuid())) { if (!player.dead()) { Tile playerTileOn = player.tileOn(); Tile tileUnderPlayer = Vars.world.tile(playerTileOn.x, playerTileOn.y - 1); From e1dae352dc86b0eeabda63b26aabe0a8acf91860 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:02:06 +0300 Subject: [PATCH 441/460] Update ArmorWorkbench.java --- .../net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index 617108ad..e8731188 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -90,6 +90,7 @@ public static void initTimer() { } public static void buyWorkbench(Player player, Tile tile) { + Log.info("wrokbench"); if (players.get(player.uuid()).getScore() < 8) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 8)); } else { From b5ed9ce2934abbe1cb94acebc617b086742d3a28 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:05:05 +0300 Subject: [PATCH 442/460] Update ArmorWorkbench.java --- .../net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index e8731188..ff0ace52 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -1,7 +1,7 @@ package net.voiddustry.redvsblue.game.stations; import arc.graphics.Color; -import arc.util.Timer; +import arc.util.*; import mindustry.Vars; import mindustry.content.Blocks; import mindustry.content.Fx; From 874aa5847e2c4afe0f9625ab67fefc5c874050ff Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:08:50 +0300 Subject: [PATCH 443/460] Update ArmorWorkbench.java --- .../net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index ff0ace52..4d205bda 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -90,7 +90,6 @@ public static void initTimer() { } public static void buyWorkbench(Player player, Tile tile) { - Log.info("wrokbench"); if (players.get(player.uuid()).getScore() < 8) { player.sendMessage(Bundle.format("station.not-enough-money", Bundle.findLocale(player.locale), 8)); } else { From 1fa0cf8f4a2c0566fdd03db21b44dedcbe042918 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:18:50 +0300 Subject: [PATCH 444/460] Update Utils.java --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 55dd38e3..71f6fbc9 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -21,6 +21,7 @@ import mindustry.type.Weapon; import mindustry.world.Block; import mindustry.world.blocks.environment.*; +import mindustry.world.meta.BuildVisibility; import net.voiddustry.redvsblue.Bundle; import net.voiddustry.redvsblue.PlayerData; @@ -47,6 +48,7 @@ public static void initRules() { for(int i = 0; i < block.requirements.length; i++){ if (block.requirements[i].item==Items.dormantCyst) { state.rules.bannedBlocks.remove(block); + block.buildVisibility=BuildVisibility.shown; break; } } From 8439ab36cfb113925becf1587671c3cbd3e3d674 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:33:45 +0300 Subject: [PATCH 445/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 2d6092d9..6772cecb 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -17,7 +17,7 @@ unit.flare.weapons: [ range: 80 maxRange: 80 speed: 2.2 - damage: 15 + damage: 10 type: basicBulletType width: 7f height: 9f @@ -40,7 +40,7 @@ unit.flare.weapons: [ range: 80 maxRange: 80 speed: 2.2 - damage: 15 + damage: 10 type: basicBulletType width: 7f height: 9f From 8e529910a63c548f0cf0e01f3e2473f55a8da540 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:39:33 +0300 Subject: [PATCH 446/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 6772cecb..3a7f9054 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -17,7 +17,7 @@ unit.flare.weapons: [ range: 80 maxRange: 80 speed: 2.2 - damage: 10 + damage: 8 type: basicBulletType width: 7f height: 9f @@ -40,7 +40,7 @@ unit.flare.weapons: [ range: 80 maxRange: 80 speed: 2.2 - damage: 10 + damage: 8 type: basicBulletType width: 7f height: 9f From dadb1558c61e6be743c94d0b88353005e9648af3 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Feb 2026 23:01:04 +0300 Subject: [PATCH 447/460] Add files via upload --- patches/rvsb.json | 528 +++++++++++++++++++++++++--------------------- 1 file changed, 282 insertions(+), 246 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 3a7f9054..cd2cf13a 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -81,204 +81,207 @@ unit.flare.abilities.+: [ unit.disrupt.speed: 2 //disrupt ability "wings" -//unit.disrupt.weapons.+: [ { -//alwaysShooting: true +//disrupt ability uses emanate as "base" because minShootVelocity is broken +unit.emanate.hitSize: 0 +unit.emanate.region: dagger +unit.emanate.weapons.+: [ { +alwaysShooting: true //minShootVelocity: 28.8 -//x: 0 -//y: 0 -//name: small-mount-weapon -//recoil: 0 -//recoils: 0 -//recoilTime: 0 -//reload: 10 -//shake: 3.5f -//inaccuracy: 360 -//shootSound: loopFlux -//bullet: { -//type: lightningBulletType -//lightningLength: 1 -//lightningLengthRand: 15 -//damage: 100 -//} -//parts: [ { -//name: obviate -//rotation: -85 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: 14 -//y: 4 -//xScl: 0.4 -//yScl: 2.5 -//heatColor: "fc4e03" -//} -//{ -//name: obviate -//rotation: -90 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: 16 -//y: -4 -//xScl: 0.6 -//yScl: 3.4 -//heatColor: "fc4e03" -//} -//{ -//name: obviate -//rotation: -103 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: 18 -//y: -12 -//xScl: 0.8 -//yScl: 4.5 -//heatColor: "fc4e03" -//} +x: 0 +y: 0 +name: small-mount-weapon +recoil: 0 +recoils: 0 +recoilTime: 0 +reload: 10 +shake: 3.5f +inaccuracy: 360 +shootSound: loopFlux +bullet: { +type: lightningBulletType +lightningLength: 1 +lightningLengthRand: 15 +damage: 100 +} +parts: [ { +name: obviate +rotation: -85 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: 14 +y: 4 +xScl: 0.4 +yScl: 2.5 +heatColor: "fc4e03" +} +{ +name: obviate +rotation: -90 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: 16 +y: -4 +xScl: 0.6 +yScl: 3.4 +heatColor: "fc4e03" +} +{ +name: obviate +rotation: -103 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: 18 +y: -12 +xScl: 0.8 +yScl: 4.5 +heatColor: "fc4e03" +} -//mirror parts -//{ -//name: obviate -//rotation: 85 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: -14 -//y: 4 -//xScl: 0.4 -//yScl: 2.5 -//heatColor: "fc4e03" -//} -//{ -//name: obviate -//rotation: 90 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: -16 -//y: -4 -//xScl: 0.6 -//yScl: 3.4 -//heatColor: "fc4e03" -//} -//{ -//name: obviate -//rotation: 103 -//type: regionPart -//layerOffset: -11000f -//heatLayerOffset: 10999.5f -//x: -18 -//y: -12 -//xScl: 0.8 -//yScl: 4.5 -//heatColor: "fc4e03" -//} +mirror parts +{ +name: obviate +rotation: 85 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: -14 +y: 4 +xScl: 0.4 +yScl: 2.5 +heatColor: "fc4e03" +} +{ +name: obviate +rotation: 90 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: -16 +y: -4 +xScl: 0.6 +yScl: 3.4 +heatColor: "fc4e03" +} +{ +name: obviate +rotation: 103 +type: regionPart +layerOffset: -11000f +heatLayerOffset: 10999.5f +x: -18 +y: -12 +xScl: 0.8 +yScl: 4.5 +heatColor: "fc4e03" +} -//] -//} +] +} //disrupt ability additional sfx -//{ -//alwaysShooting: true +{ +alwaysShooting: true //minShootVelocity: 28.8 -//reload: 20 -//shootSound: loopMalign -//bullet: { -//lifetime: 0 -//speed: 0 -//} -//} +reload: 20 +shootSound: loopMalign +bullet: { +lifetime: 0 +speed: 0 +} +} -// disrupt ability bombs -//{ -//shake: 7 -//alwaysShooting: true -//x: 0 -//y: 0 +//disrupt ability bombs +{ +shake: 7 +alwaysShooting: true +x: 0 +y: 0 //minShootVelocity: 28.8 -//reload: 540 -//shoot: { -//firstShotDelay: 60 -//} -//shootSound: none -//chargeSound: chargeVela -//bullet: { -//splashDamagePierce: true -//despawnHit: true -//type: missileBulletType -//splashDamageRadius: 80f -//splashDamage: 900 -//weaveScale: 8 -//weaveMag: 1 -//trailColor: "760ee6" -//trailWidth: 5f -//trailLength: 10 -//sprite: missile-large -//width: 30f -//height: 30f -//shrinkY: -0.5f -//shrinkY: -0.5f -//drag: 0f -//homingPower: 0 -//keepVelocity: false -//speed: 3 -//lightRadius: 180f -//lightOpacity: 0.7f -//lightColor: "760ee6" -//backColor: "760ee6" -//frontColor: "ffffff" -//lifetime: 25f -//fragBullets: 5 -//fragRandomSpread: 360f -//fragVelocityMin: 0.3f -//hitSound: explosionQuad -//despawnSound: explosionQuad -//hitEffect: { -//lifetime: 90f -//type: explosionEffect -//waveStroke: 6 -//waveLife: 10f -//waveRadBase: 7f -//waveColor: "760ee6" -//waveRad: 120f -//smokes: 18 -//smokeColor: "ffffff" -//sparkColor: "760ee6" -//sparks: 18 -//sparkRad: 120f -//sparkStroke: 1.5f -//sparkLen: 4f -//} -//fragBullet: { -//velocityScaleRandMin: 0.3 -//velocityScaleRandMax: 1 -//despawnHit: true -//type: missileBulletType -//despawnEffect: none -//homingPower: 0f -//width: 12 -//height: 22 -//hitSize: 0 -//damage: 0 -//lifetime: 60 -//backColor: "760ee6" -//trailColor: "760ee6" -//trailWidth: 3 -//trailLength: 12 -//despawnEffect: hitBulletColor -//hitEffect: hitBulletColor -//keepVelocity: false -//fragBullets: 1 -//fragBullet: { -//speed: 0f -//keepVelocity: false -//spawnUnit: incite -//} -//} -//} -//} -//] +reload: 540 +shoot: { +firstShotDelay: 60 +} +shootSound: none +chargeSound: chargeVela +bullet: { +splashDamagePierce: true +despawnHit: true +type: missileBulletType +splashDamageRadius: 80f +splashDamage: 900 +weaveScale: 8 +weaveMag: 1 +trailColor: "760ee6" +trailWidth: 5f +trailLength: 10 +sprite: missile-large +width: 30f +height: 30f +shrinkY: -0.5f +shrinkY: -0.5f +drag: 0f +homingPower: 0 +keepVelocity: false +speed: 3 +lightRadius: 180f +lightOpacity: 0.7f +lightColor: "760ee6" +backColor: "760ee6" +frontColor: "ffffff" +lifetime: 25f +fragBullets: 5 +fragRandomSpread: 360f +fragVelocityMin: 0.3f +hitSound: explosionQuad +despawnSound: explosionQuad +hitEffect: { +lifetime: 90f +type: explosionEffect +waveStroke: 6 +waveLife: 10f +waveRadBase: 7f +waveColor: "760ee6" +waveRad: 120f +smokes: 18 +smokeColor: "ffffff" +sparkColor: "760ee6" +sparks: 18 +sparkRad: 120f +sparkStroke: 1.5f +sparkLen: 4f +} +fragBullet: { +velocityScaleRandMin: 0.3 +velocityScaleRandMax: 1 +despawnHit: true +type: missileBulletType +despawnEffect: none +homingPower: 0f +width: 12 +height: 22 +hitSize: 0 +damage: 0 +lifetime: 60 +backColor: "760ee6" +trailColor: "760ee6" +trailWidth: 3 +trailLength: 12 +despawnEffect: hitBulletColor +hitEffect: hitBulletColor +keepVelocity: false +fragBullets: 1 +fragBullet: { +speed: 0f +keepVelocity: false +spawnUnit: incite +} +} +} +} +] //disrupt drone(incite) @@ -300,6 +303,8 @@ unit.incite.useUnitCap: false unit.incite.health: 60 unit.incite.hittable: true unit.incite.targetable: true +unit.incite.controller: FlyingAI +unit.incite.aiController: FlyingAI //drone timed death @@ -503,15 +508,32 @@ damage: 10 -//quell and disrupt missile change for kill reward to work,yeah they pierce now,quell missile is same as disrupt except a bit more damage -//unit.disrupt-missile.range: 23 -//unit.disrupt-missile.maxRange: 23 -//unit.disrupt.targetAir: true -//unit.disrupt-missile.targetAir: true -//unit.disrupt.weapons.0.bullet.collidesAir: true -//unit.disrupt-missile.health: 99999 -//unit.disrupt-missile.weapons: [ - // { +//quell and disrupt missiles +unit.disrupt.targetAir: true +unit.disrupt-missile.targetAir: true +unit.disrupt-missile.weapons.0: { +reload: 9999 +bullet: { +collidesAir: true +killShooter: false +fragBullets: 1 +fragBullet: { +type: basicBulletType +collides: false +speed: 0f +lifetime: 5f +drawSize: 0 +fragBullets: 1 +fragBullet: { +killShooter: true +instantDisappear: true +} +} +} +} +unit.disrupt-missile.health: 99999 +// unit.disrupt-missile.weapons: [ +// { // shootSound: none // shootStatusDuration: 2 // shootStatus: freezing @@ -527,15 +549,15 @@ damage: 10 // { // shootSound: none // shootStatusDuration: 2 - // shootStatus: tarred - // shootCone: 360f +// shootStatus: tarred +// shootCone: 360f // bullet: { // range: 13 // maxRange: 13 - // lifetime: 1f - // type: basicBulletType - // damage: 0 - // } +// lifetime: 1f +// type: basicBulletType +// damage: 0 +// } // } // { // shootCone: 360f @@ -546,58 +568,74 @@ damage: 10 // shootStatus: slow // shootOnDeath: true // bullet: { - // range: 13 - // maxRange: 13 +// range: 13 +// maxRange: 13 // type: basicBulletType - // lightning: 1 - // sprite: "" +// lightning: 1 +// sprite: "" // lifetime: 1f // collidesAir: true // suppressionRange: 140f // width: 49.6f // height: 49.6f // damage: 33f - // pierce: true - // shootEffect: { - // type: ExplosionEffect - // lifetime: 50f - // waveStroke: 5f - // waveLife: 8f - // waveColor: "ffffff" - // sparkColor: "665c9f" - // smokeColor: "665c9f" - // waveRad: 40f - // smokeSize: 4f - // smokes: 7 - // smokeSizeBase: 0f - // sparks: 10 +// pierce: true +// shootEffect: { +// type: ExplosionEffect +// lifetime: 50f +// waveStroke: 5f +// waveLife: 8f +// waveColor: "ffffff" +// sparkColor: "665c9f" +// smokeColor: "665c9f" +// waveRad: 40f +// smokeSize: 4f +// smokes: 7 +// smokeSizeBase: 0f +// sparks: 10 // sparkRad: 40f - // sparkLen: 6f - // sparkStroke: 2f - // } +// sparkLen: 6f +// sparkStroke: 2f +// } // } -//} -//] +// } +// ] -//unit.quell-missile.range: 40 -//unit.quell-missile.maxRange: 40 -//unit.quell.targetAir: true -//unit.quell-missile.targetAir: true -//unit.quell.weapons.0.bullet.collidesAir: true -//unit.quell-missile.health: 99999 -//unit.quell-missile.weapons: [ +unit.quell.targetAir: true +unit.quell-missile.targetAir: true +unit.quell-missile.weapons.0: { +reload: 9999 +bullet: { +collidesAir: true +killShooter: false +fragBullets: 1 +fragBullet: { +type: basicBulletType +collides: false +speed: 0f +lifetime: 5f +drawSize: 0 +fragBullets: 1 +fragBullet: { +killShooter: true +instantDisappear: true +} +} +} +} +// unit.quell-missile.weapons: [ // { - // shootSound: none +// shootSound: none // shootStatusDuration: 2 // shootStatus: freezing // shootCone: 360f - // bullet: { +// bullet: { // range: 13 // maxRange: 13 - // lifetime: 1f - // type: basicBulletType - // damage: 0 - // } +// lifetime: 1f +// type: basicBulletType +// damage: 0 +// } // } // { // shootSound: none @@ -651,8 +689,8 @@ damage: 10 // sparkStroke: 2f // } // } -//} -//] +// } +// ] @@ -1008,6 +1046,4 @@ unit.elude.buildSpeed: 0.01 unit.avert.buildSpeed: 0.01 unit.obviate.buildSpeed: 0.01 unit.quell.buildSpeed: 0.01 -unit.disrupt.buildSpeed: 0.01 - - +unit.disrupt.buildSpeed: 0.01 \ No newline at end of file From ea47f7c6f61e68ca3ba1dd077a6828c32ac04613 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Mon, 9 Feb 2026 14:44:34 +0300 Subject: [PATCH 448/460] fix workbench --- src/main/java/net/voiddustry/redvsblue/util/Utils.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 71f6fbc9..2db183d1 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -43,18 +43,21 @@ public class Utils { public static void initRules() { + state.rules.bannedBlocks.clear(); + state.rules.revealedBlocks.clear(); + for (Block block : Vars.content.blocks()) { state.rules.bannedBlocks.add(block); for(int i = 0; i < block.requirements.length; i++){ if (block.requirements[i].item==Items.dormantCyst) { state.rules.bannedBlocks.remove(block); - block.buildVisibility=BuildVisibility.shown; + state.rules.revealedBlocks.add(block); + break; } } } - - + state.rules.buildSpeedMultiplier = 0; state.rules.env = Vars.defaultEnv; From a3d410a01aeabe89bc7edbc98ccaded9d8c2cf2d Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:47:17 +0300 Subject: [PATCH 449/460] Update RedVsBluePlugin.java --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 53db2d7e..5e59d784 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -358,7 +358,7 @@ public void init() { Log.info("[scarlet]The server is restarting"); //net.dispose(); where do you find this mythical method Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); - Core.app.exit(); + System.exit(0); } }); @@ -667,7 +667,7 @@ public void registerServerCommands(CommandHandler handler) { handler.register("restart", "now actually works", (args) -> { Groups.player.each(p -> p.kick("[scarlet]Server is restarting")); Log.info("Server is restarting"); - Core.app.exit(); + System.exit(0); }); handler.register("setstage","" ,"Sets rvsb stage", (args) -> { From 00bfb55256a3dfc27acb6f0bffa9c9c508adb75c Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:53:32 +0300 Subject: [PATCH 450/460] Update empirenewlegs.json --- patches/empirenewlegs.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/patches/empirenewlegs.json b/patches/empirenewlegs.json index d219f726..2b758526 100644 --- a/patches/empirenewlegs.json +++ b/patches/empirenewlegs.json @@ -73,8 +73,8 @@ stepShake: 1.2f drownTimeMultiplier: 4 mechFrontSway: 1f mechSideSway: 0.6f -aiController: groundAi -controller: groundAi +aiController: GroundAI +controller: GroundAI stepSound: mechStepHeavy stepSoundPitch: 0.8 @@ -393,3 +393,4 @@ buildingDamageMultiplier: 999 + From debf5515f9bda27c95653ff3300d8ea787b96e15 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:58:13 +0300 Subject: [PATCH 451/460] Update rvsb.json --- patches/rvsb.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index cd2cf13a..e74848f0 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -140,7 +140,7 @@ yScl: 4.5 heatColor: "fc4e03" } -mirror parts +//mirror parts { name: obviate rotation: 85 @@ -1046,4 +1046,4 @@ unit.elude.buildSpeed: 0.01 unit.avert.buildSpeed: 0.01 unit.obviate.buildSpeed: 0.01 unit.quell.buildSpeed: 0.01 -unit.disrupt.buildSpeed: 0.01 \ No newline at end of file +unit.disrupt.buildSpeed: 0.01 From 641db8136e4dcc97a84efc408865063b3adb1d34 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Tue, 17 Feb 2026 11:22:15 +0300 Subject: [PATCH 452/460] undelete segment --- patches/rvsb.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index e74848f0..05b83e9b 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -954,6 +954,9 @@ block.power-node.category: effect block.battery.requirements: [dormant-cyst/5] block.battery.category: effect +block.segment.requirements: [dormant-cyst/80] +block.segment.category: effect + block.mechanical-pump.requirements: [dormant-cyst/4] block.mechanical-pump.category: effect From d8190d0cf7bd9cc72f348339c7cafe3e94f598a7 Mon Sep 17 00:00:00 2001 From: osp54 <76648940+osp54@users.noreply.github.com> Date: Sun, 22 Feb 2026 19:44:16 +0200 Subject: [PATCH 453/460] fix(laboratory): prevent ArrayIndexOutOfBoundsException in evolution menu --- .../net/voiddustry/redvsblue/game/stations/Laboratory.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 3de4f31e..75bf0544 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -36,7 +36,10 @@ public class Laboratory { public static final int evolutionMenu = Menus.registerMenu((player, option) -> { if (option == -1) return; + if (player.unit() == null || player.unit().type() == null) return; Evolution evolution = Evolutions.evolutions.get(player.unit().type().name); + + if (evolution == null || option < 0 || option >= evolution.evolutions.length) return; Evolution evolutionOption = Evolutions.evolutions.get(evolution.evolutions[option]); PlayerData playerData = players.get(player.uuid()); From 2de14e12da2ddadb0c5c2f0a747d717b065cd7bf Mon Sep 17 00:00:00 2001 From: alphy Date: Mon, 23 Feb 2026 20:18:46 +0300 Subject: [PATCH 454/460] new player accessibility,sneaky sei buff --- patches/rvsb.json | 29 ++++++++++++++----- .../game/stations/ArmorWorkbench.java | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/patches/rvsb.json b/patches/rvsb.json index 05b83e9b..bb423bc4 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -1,10 +1,10 @@ name: rvsb -//flare rework rollback +//flare rework unit.flare.omniMovement: true unit.flare.rotateSpeed: 99999 unit.flare.health: 120 -unit.flare.maxRange: 80 +unit.flare.maxRange: 120 unit.flare.rotateMoveFirst: false unit.flare.weapons: [ { @@ -14,8 +14,8 @@ unit.flare.weapons: [ ejectEffect: casing1 shootSound: shoot bullet: { - range: 80 - maxRange: 80 + range: 120 + maxRange: 120 speed: 2.2 damage: 8 type: basicBulletType @@ -24,7 +24,7 @@ unit.flare.weapons: [ lifetime: 45f shootEffect: shootSmall smokeEffect: shootSmallSmoke - keepVelocity: true + keepVelocity: false } } { @@ -37,8 +37,8 @@ unit.flare.weapons: [ firstShotDelay: 20 } bullet: { - range: 80 - maxRange: 80 + range: 120 + maxRange: 120 speed: 2.2 damage: 8 type: basicBulletType @@ -47,7 +47,7 @@ unit.flare.weapons: [ lifetime: 45f shootEffect: shootSmall smokeEffect: shootSmallSmoke - keepVelocity: true + keepVelocity: false } } ] @@ -1050,3 +1050,16 @@ unit.avert.buildSpeed: 0.01 unit.obviate.buildSpeed: 0.01 unit.quell.buildSpeed: 0.01 unit.disrupt.buildSpeed: 0.01 + +//boat accesibility to match cheat clients/mods +unit.risso.omniMovement: true +unit.minke.omniMovement: true +unit.bryde.omniMovement: true +unit.sei.omniMovement: true +unit.omura.omniMovement: true + +unit.retusa.omniMovement: true +unit.oxynoe.omniMovement: true +unit.cyerce.omniMovement: true +unit.aegires.omniMovement: true +unit.navanax.omniMovement: true diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index 4d205bda..c66ace05 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -54,7 +54,7 @@ public static void initTimer() { maxShield = p.unit().type.health/3; } else if (p.unit().type.health <= 290) { maxShield = p.unit().type.health*4; - } else if (p.unit().type.health >= 11000) { + } else if (p.unit().type == UnitTypes.aegires) { maxShield = p.unit().type.health/2; } From 8c338a5a02dd19a6e39a9041dd65c091412b0720 Mon Sep 17 00:00:00 2001 From: alphy Date: Mon, 23 Feb 2026 20:25:15 +0300 Subject: [PATCH 455/460] fix import --- .../net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index c66ace05..6f5adf22 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -3,7 +3,7 @@ import arc.graphics.Color; import arc.util.*; import mindustry.Vars; -import mindustry.content.Blocks; +import mindustry.content.*; import mindustry.content.Fx; import mindustry.game.Team; import mindustry.gen.Call; From 4c9c14c092fe4e44347be2a81bebcb4056760e36 Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Sun, 8 Mar 2026 18:42:10 +0300 Subject: [PATCH 456/460] unregister broken commands --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index 5e59d784..b3794644 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -630,7 +630,8 @@ public void registerClientCommands(CommandHandler handler) { }); handler.removeCommand("rtv"); - + handler.removeCommand("observer"); + handler.removeCommand("spectator"); // handler.register("reset-data", "Use that if you blue and dont have unit.", (args, player) -> { // if (player.team() == Team.blue) { // players.put(player.uuid(), new PlayerData(player)); From 1fa6bf21b2006ddb9eb2554d97e8ecbb90bf81a5 Mon Sep 17 00:00:00 2001 From: osp54 <76648940+osp54@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:45:43 +0200 Subject: [PATCH 457/460] fix(stats): emit RVSB winner before shuffle Fire a game-over event with the winning team before post-match team shuffling so XCore can persist correct winners and placements for RVSB matches. --- src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java index b3794644..6e3ff448 100644 --- a/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java +++ b/src/main/java/net/voiddustry/redvsblue/RedVsBluePlugin.java @@ -709,6 +709,7 @@ public static void gameOverCheck() { } public static void gameOver(Team winner) { + Events.fire("rvsb_game_over:" + winner.name); Groups.player.each(p -> { PlayerData data = players.get(p.uuid()); From 6bb62f3d167d3bd31df7f6c94e8a79751bb58212 Mon Sep 17 00:00:00 2001 From: osp54 <76648940+osp54@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:37:16 +0200 Subject: [PATCH 458/460] fix(menus): guard canceled menu selections Ignore invalid menu option values from Mindustry callbacks to prevent array indexing and unintended fallthrough when players close menus. --- src/main/java/net/voiddustry/redvsblue/admin/Admin.java | 4 ++++ .../voiddustry/redvsblue/game/crux/BossChooseMenu.java | 3 +++ .../voiddustry/redvsblue/game/crux/ClassChooseMenu.java | 9 ++++++--- .../redvsblue/game/starting_menu/StartingMenu.java | 4 ++++ .../redvsblue/game/stations/ArmorWorkbench.java | 4 ++++ .../voiddustry/redvsblue/game/stations/Laboratory.java | 7 +++++-- .../voiddustry/redvsblue/game/stations/StationsMenu.java | 4 ++++ 7 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/admin/Admin.java b/src/main/java/net/voiddustry/redvsblue/admin/Admin.java index 5674759f..27af7c39 100644 --- a/src/main/java/net/voiddustry/redvsblue/admin/Admin.java +++ b/src/main/java/net/voiddustry/redvsblue/admin/Admin.java @@ -10,6 +10,10 @@ public class Admin { public static void openAdminPanelMenu(Player player) { int menu = Menus.registerMenu((playerInMenu, option) -> { + if (option < 0) { + return; + } + switch (option) { case 0 -> Boss.spawnBoss(Utils.getRandomPlayer(Team.crux)); } diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/BossChooseMenu.java b/src/main/java/net/voiddustry/redvsblue/game/crux/BossChooseMenu.java index 904b8d25..fe41229d 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/BossChooseMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/BossChooseMenu.java @@ -18,6 +18,9 @@ public static void openMenu(Player player) { PlayerData data = RedVsBluePlugin.players.get(player.uuid()); int menu = Menus.registerMenu(((player1, option) -> { + if (option < 0) { + return; + } switch (option) { case 0 -> data.setSelectedBoss(UnitTypes.mace); diff --git a/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java b/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java index ad27c5d3..a8761d09 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/crux/ClassChooseMenu.java @@ -31,8 +31,12 @@ public static void openMenu(Player player) { }); int menu = Menus.registerMenu((playerInMenu, option) -> { - selectedUnit.put(player.uuid(), unitsNumbers[option]); - CruxUnit.callSpawn(player); + if (option < 0 || option >= unitsNumbers.length) { + return; + } + + selectedUnit.put(playerInMenu.uuid(), unitsNumbers[option]); + CruxUnit.callSpawn(playerInMenu); }); Call.menu(player.con, menu, Bundle.get("units.crux.menu.title", player.locale), "", unitsBundleKeys); @@ -53,4 +57,3 @@ public static void updateUnitsMap() { } } } - diff --git a/src/main/java/net/voiddustry/redvsblue/game/starting_menu/StartingMenu.java b/src/main/java/net/voiddustry/redvsblue/game/starting_menu/StartingMenu.java index 5d490f3f..4aef391e 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/starting_menu/StartingMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/starting_menu/StartingMenu.java @@ -25,6 +25,10 @@ public static void openMenu(Player player, int category) { NetConnection connection = player.con; if (canOpenMenu) { int menu = Menus.registerMenu((player1, option) -> { + if (option < 0) { + return; + } + if (option <= 3) { switch (option) { case 0 -> openMenu(player, 0); diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java index 6f5adf22..0b4342a1 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/ArmorWorkbench.java @@ -62,6 +62,10 @@ public static void initTimer() { float finalMaxShield = maxShield; int menu = Menus.registerMenu((player, option) -> { + if (option < 0) { + return; + } + if (option == 0 && players.get(p.uuid()).getScore() >= 1 && p.unit().shield <= (int) finalMaxShield) { p.unit().shield = p.unit().shield + shieldPerPoint; players.get(p.uuid()).subtractScore(1); diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java index 75bf0544..d000ad86 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/Laboratory.java @@ -40,9 +40,12 @@ public class Laboratory { Evolution evolution = Evolutions.evolutions.get(player.unit().type().name); if (evolution == null || option < 0 || option >= evolution.evolutions.length) return; - Evolution evolutionOption = Evolutions.evolutions.get(evolution.evolutions[option]); + String selectedEvolution = evolution.evolutions[option]; + Evolution evolutionOption = Evolutions.evolutions.get(selectedEvolution); + if (evolutionOption == null) return; PlayerData playerData = players.get(player.uuid()); + if (playerData == null) return; if (playerData.getScore() >= ((int)(evolutionOption.cost*getMultiplier(evolutionOption, player)))) { if (player.unit() != null && (player.tileOn().block() == Blocks.air || evolutionOption.unitType.flying==true || evolutionOption.unitType.canBoost == true || evolutionOption.unitType.groundLayer==Layer.legUnit)) { @@ -60,7 +63,7 @@ public class Laboratory { playerData.setEvolutionStage(evolutionOption.tier); playerData.setLastEvolutionTime(Instant.now().getEpochSecond()); - Utils.sendBundled("game.evolved", player.name(), evolution.evolutions[option]); + Utils.sendBundled("game.evolved", player.name(), selectedEvolution); } } } diff --git a/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java b/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java index 4d7ce5b2..78951bd9 100644 --- a/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java +++ b/src/main/java/net/voiddustry/redvsblue/game/stations/StationsMenu.java @@ -10,6 +10,10 @@ public class StationsMenu { public static void openMenu(Player player) { if (!player.dead() && player.team() == Team.blue) { int menu = Menus.registerMenu((player1, option) -> { + if (option < 0) { + return; + } + switch (option) { case 0 -> SuppressorTower.buyTower(player, null); case 1 -> Miner.buyMiner(player, null); From fe6d41baa537757b6986d5a73248283ce6649eee Mon Sep 17 00:00:00 2001 From: alphy228 <89208763+alphy228@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:58:00 +0300 Subject: [PATCH 459/460] new crux vela bullet --- patches/rvsb.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/patches/rvsb.json b/patches/rvsb.json index bb423bc4..6c85af1d 100644 --- a/patches/rvsb.json +++ b/patches/rvsb.json @@ -842,6 +842,28 @@ ammoMultiplier: 2 } } + +//crux vela wproc bullet +unit.vela.weapons.+: { +shoot: { +firstShotDelay: 9999999 +} +bullet: { +type: ShrapnelBulletType +length: 90f +damage: 110f +width: 25f +serrations : 5 +serrationLenScl: 7 +serrationSpaceOffset: 60f +serrationFadeOffset: 0f +serrationWidth: 4f +fromColor: ffcb82 +toColor: c2ffbf +shootEffect: sparkShoot +} +} + //dont register crawlers that manually explode unit.crawler.weapons.0.shootStatus: noRegisterKills unit.crawler.weapons.0.shootStatusDuration: 1000 From f0043851ede3fd82e6222acfc89ccf329f8a4dc3 Mon Sep 17 00:00:00 2001 From: hack-banana Date: Wed, 29 Apr 2026 13:36:54 +0300 Subject: [PATCH 460/460] tile solid --- .../net/voiddustry/redvsblue/util/Utils.java | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/voiddustry/redvsblue/util/Utils.java b/src/main/java/net/voiddustry/redvsblue/util/Utils.java index 2db183d1..7efd9c13 100644 --- a/src/main/java/net/voiddustry/redvsblue/util/Utils.java +++ b/src/main/java/net/voiddustry/redvsblue/util/Utils.java @@ -9,6 +9,7 @@ import arc.util.serialization.*; import mindustry.Vars; import mindustry.content.*; +import mindustry.entities.EntityGroup; import mindustry.entities.bullet.BasicBulletType; import mindustry.game.Team; import mindustry.gen.*; @@ -19,6 +20,7 @@ import java.util.HashMap; import mindustry.type.Weapon; +import mindustry.world.Tile; import mindustry.world.Block; import mindustry.world.blocks.environment.*; import mindustry.world.meta.BuildVisibility; @@ -120,35 +122,26 @@ public static void initTimers() { Timer.schedule(() -> stageTimer--, 0, 1); - Timer.schedule(() -> Groups.player.each(player -> { - if (player.tileOn() != null && player.team() == Team.blue && player.unit() != null) { - if (player.tileOn().block() != null && (player.tileOn().block() == Blocks.cliff || (player.tileOn().block() instanceof Prop && player.tileOn().block().breakable) || player.tileOn().block() instanceof TallBlock)) { - return; - } - if (player.tileOn().build != null && player.tileOn().build.team != Team.blue && player.tileOn().build.team != Team.derelict) { - if (player.unit().health <= 1) { - player.unit().kill(); - } - player.unit().health -= player.unit().type.health/100; - Call.effect(Fx.burning, player.x, player.y, 1, Color.red); - - } else if (!player.tileOn().block().isAir() || player.tileOn().isDarkened()) { - if (player.unit().health <= 1) { - player.unit().kill(); - } - if (!player.tileOn().block().canBeBuilt()) { - player.unit().health -= player.unit().type.health/100; - Call.effect(Fx.burning, player.x, player.y, 1, Color.red); - } - } - } else if (player.tileOn() == null && player.unit() != null) { - if (player.unit().health <= 1) { - player.unit().kill(); + Timer.schedule(() -> { + EntityGroup units = Groups.unit; + int size = units.size(); + for (int i = 0; i < size; i++) { + Unit unit = units.index(i); + if (unit.team != Team.blue) continue; + Tile tile = unit.tileOn(); + if (tile == null) continue; + Building build = tile.build; + if (build != null) { + Team team = build.team; + if (team == Team.blue || team == Team.derelict) continue; + } else if (!tile.legSolid()) { + continue; } - player.unit().health -= player.unit().type.health/100; - Call.effect(Fx.burning, player.x, player.y, 1, Color.red); + if (unit.health <= 1f) unit.kill(); + unit.health -= unit.type.health / 100f; + Call.effect(Fx.burning, unit.x, unit.y, 1, Color.red); } - }), 0, 0.1F); + }, 0, 0.1f); } public static void processLevel(Player player, PlayerData data) {