diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 61e5d81e03..877ed38abc 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -167,7 +167,7 @@ public class RtsAI{ //defend when close, or this is the only squad defending //TODO will always rush to defense no matter what - if(best instanceof CoreBuild || units.size >= data.team.rules().rtsAiMinSquadSize || best.within(ax, ay, 500f)){ + if(best instanceof CoreBuild || units.size >= data.team.rules().rtsMinSquad || best.within(ax, ay, 500f)){ defend = best; if(debug){ @@ -234,7 +234,7 @@ public class RtsAI{ } @Nullable Building findTarget(float x, float y, int total, float dps, float health){ - if(total < data.team.rules().rtsAiMinSquadSize) return null; + if(total < data.team.rules().rtsMinSquad) return null; //flag priority? //1. generator @@ -264,7 +264,7 @@ public class RtsAI{ ); float weight = weights.get(result, 0f); - if(weight < data.team.rules().minAttackWeight && total < Units.getCap(data.team)){ + if(weight < data.team.rules().rtsMinWeight && total < Units.getCap(data.team)){ return null; } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index b295ff0d1e..18ee1d244e 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -597,7 +597,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I remove(); } - /** @return name of direct or indirect player controller. TODO comamnd support*/ + /** @return name of direct or indirect player controller. */ @Override public @Nullable String getControllerName(){ if(isPlayer()) return getPlayer().name; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 10c95fa56b..b9f5c837df 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -225,9 +225,9 @@ public class Rules{ /** Enables "RTS" unit AI. TODO wip */ public boolean rtsAi; /** Minimum size of attack squads. */ - public int rtsAiMinSquadSize = 4; + public int rtsMinSquad = 4; /** Minimum "advantage" needed for a squad to attack. Higher -> more cautious. */ - public float minAttackWeight = 1.2f; + public float rtsMinWeight = 1.2f; /** How fast unit factories build units. */ public float unitBuildSpeedMultiplier = 1f; diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 286d976345..7e22b57b2d 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -1355,7 +1355,7 @@ public class LExecutor{ } } case ambientLight -> state.rules.ambientLight.fromDouble(exec.num(value)); - case unitBuildSpeed, unitDamage, blockHealth, blockDamage, buildSpeed -> { + case unitBuildSpeed, unitDamage, blockHealth, blockDamage, buildSpeed, rtsMinSquad, rtsMinWeight -> { if(exec.obj(p1) instanceof Team team){ float num = exec.numf(value); switch(rule){ @@ -1364,6 +1364,8 @@ public class LExecutor{ case unitDamage -> team.rules().unitDamageMultiplier = Math.max(num, 0f); case blockHealth -> team.rules().blockHealthMultiplier = Math.max(num, 0.001f); case blockDamage -> team.rules().blockDamageMultiplier = Math.max(num, 0f); + case rtsMinWeight -> team.rules().rtsMinWeight = num; + case rtsMinSquad -> team.rules().rtsMinSquad = (int)num; } } } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 451551cf8d..13ce817a37 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -1265,7 +1265,7 @@ public class LStatements{ fields(table, "w", p3, s -> p3 = s); fields(table, "h", p4, s -> p4 = s); } - case buildSpeed, unitBuildSpeed, unitDamage, blockHealth, blockDamage -> { + case buildSpeed, unitBuildSpeed, unitDamage, blockHealth, blockDamage, rtsMinSquad, rtsMinWeight -> { if(p1.equals("0")){ p1 = "@sharded"; } diff --git a/core/src/mindustry/logic/LogicRule.java b/core/src/mindustry/logic/LogicRule.java index 62ec3795a7..066ec36d35 100644 --- a/core/src/mindustry/logic/LogicRule.java +++ b/core/src/mindustry/logic/LogicRule.java @@ -18,7 +18,9 @@ public enum LogicRule{ unitBuildSpeed, unitDamage, blockHealth, - blockDamage; + blockDamage, + rtsMinWeight, + rtsMinSquad; public static final LogicRule[] all = values(); } diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 8aaefd3b71..43fde917ee 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -254,8 +254,8 @@ public class CustomRulesDialog extends BaseDialog{ number("@rules.blockdamagemultiplier", f -> teams.blockDamageMultiplier = f, () -> teams.blockDamageMultiplier); check("@rules.rtsai", b -> teams.rtsAi = b, () -> teams.rtsAi, () -> team != rules.defaultTeam); - numberi("@rules.rtsminsquadsize", f -> teams.rtsAiMinSquadSize = f, () -> teams.rtsAiMinSquadSize, () -> teams.rtsAi, 0, 100); - number("@rules.rtsminattackweight", f -> teams.minAttackWeight = f, () -> teams.minAttackWeight, () -> teams.rtsAi); + numberi("@rules.rtsminsquadsize", f -> teams.rtsMinSquad = f, () -> teams.rtsMinSquad, () -> teams.rtsAi, 0, 100); + number("@rules.rtsminattackweight", f -> teams.rtsMinWeight = f, () -> teams.rtsMinWeight, () -> teams.rtsAi); check("@rules.infiniteresources", b -> teams.infiniteResources = b, () -> teams.infiniteResources); number("@rules.buildspeedmultiplier", f -> teams.buildSpeedMultiplier = f, () -> teams.buildSpeedMultiplier, 0.001f, 50f);