From 43aeb90eb92ecd2b85635f8dc18480154bd4186e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 23 Apr 2022 12:26:59 -0400 Subject: [PATCH] Min attack weight rule --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/ai/RtsAI.java | 4 +--- core/src/mindustry/game/Rules.java | 2 ++ core/src/mindustry/ui/dialogs/CustomRulesDialog.java | 1 + gradle.properties | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index a93d70cd1d..f570829f43 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1082,6 +1082,7 @@ rules.waves = Waves rules.attack = Attack Mode rules.rtsai = RTS AI rules.rtsminsquadsize = Min Squad Size +rules.rtsminattackweight = Min Attack Weight rules.cleanupdeadteams = Clean Up Defeated Team Buildings (PvP) rules.corecapture = Capture Core On Destruction rules.polygoncoreprotection = Polygonal Core Protection diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index aa2c46157e..6b15a818c5 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -28,8 +28,6 @@ public class RtsAI{ static final IntSet assignedTargets = new IntSet(); static final float squadRadius = 120f; static final int timeUpdate = 0, timerSpawn = 1; - //TODO make configurable - static final float minWeight = 1f; //in order of priority?? static final BlockFlag[] flags = {BlockFlag.generator, BlockFlag.factory, BlockFlag.core, BlockFlag.battery}; @@ -267,7 +265,7 @@ public class RtsAI{ ); float weight = weights.get(result, 0f); - if(weight < minWeight && total < Units.getCap(data.team)){ + if(weight < data.team.rules().minAttackWeight && total < Units.getCap(data.team)){ return null; } diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 2217cc408f..915abe1058 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -226,6 +226,8 @@ public class Rules{ public boolean rtsAi; /** Minimum size of attack squads. */ public int rtsAiMinSquadSize = 4; + /** Minimum "advantage" needed for a squad to attack. Higher -> more cautious. */ + public float minAttackWeight = 1.2f; /** How fast unit factories build units. */ public float unitBuildSpeedMultiplier = 1f; diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 0743722019..8aaefd3b71 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -255,6 +255,7 @@ public class CustomRulesDialog extends BaseDialog{ 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); check("@rules.infiniteresources", b -> teams.infiniteResources = b, () -> teams.infiniteResources); number("@rules.buildspeedmultiplier", f -> teams.buildSpeedMultiplier = f, () -> teams.buildSpeedMultiplier, 0.001f, 50f); diff --git a/gradle.properties b/gradle.properties index 28fe5ac058..36f5382df3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,4 @@ org.gradle.caching=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=99ceda8bf2 +archash=871de12b14