diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 65cb29ad98..37532a26e9 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1393,6 +1393,7 @@ rules.unitcostmultiplier = Unit Cost Multiplier rules.unithealthmultiplier = Unit Health Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitcrashdamagemultiplier = Unit Crash Damage Multiplier +rules.unitminespeedmultiplier = Unit Mine Speed Multiplier rules.solarmultiplier = Solar Power Multiplier rules.unitcapvariable = Cores Contribute To Unit Cap rules.unitpayloadsexplode = Carried Payloads Explode With The Unit diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index a58a0503c3..4e9c28bc3d 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -65,7 +65,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ } public boolean canMine(){ - return type.mineSpeed > 0 && type.mineTier >= 0; + return type.mineSpeed * state.rules.unitMineSpeed(team()) > 0 && type.mineTier >= 0; } @Override @@ -89,7 +89,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ mineTile = null; mineTimer = 0f; }else if(mining() && item != null){ - mineTimer += Time.delta * type.mineSpeed; + mineTimer += Time.delta * type.mineSpeed * state.rules.unitMineSpeed(team()); if(Mathf.chance(0.06 * Time.delta)){ Fx.pulverizeSmall.at(mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), 0f, item.color); diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index f2b940154c..1afebb99e9 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -84,6 +84,8 @@ public class Rules{ public float unitHealthMultiplier = 1f; /** How much damage unit crash damage deals. (Compounds with unitDamageMultiplier) */ public float unitCrashDamageMultiplier = 1f; + /** How fast units can mine. */ + public float unitMineSpeedMultiplier = 1f; /** If true, ghost blocks will appear upon destruction, letting builder blocks/units rebuild them. */ public boolean ghostBlocks = true; /** Whether to allow units to build with logic. */ @@ -262,6 +264,10 @@ public class Rules{ return unitDamage(team) * unitCrashDamageMultiplier * teams.get(team).unitCrashDamageMultiplier; } + public float unitMineSpeed(Team team){ + return unitMineSpeedMultiplier * teams.get(team).unitMineSpeedMultiplier; + } + public float blockHealth(Team team){ return blockHealthMultiplier * teams.get(team).blockHealthMultiplier; } @@ -312,6 +318,8 @@ public class Rules{ public float unitDamageMultiplier = 1f; /** How much damage unit crash damage deals. (Compounds with unitDamageMultiplier) */ public float unitCrashDamageMultiplier = 1f; + /** How fast units can mine. */ + public float unitMineSpeedMultiplier = 1f; /** Multiplier of resources that units take to build. */ public float unitCostMultiplier = 1f; /** How much health units start with. */ diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 9c2dd94759..888bf1cbac 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -265,6 +265,7 @@ public class CustomRulesDialog extends BaseDialog{ numberi("@rules.unitcap", f -> rules.unitCap = f, () -> rules.unitCap, -999, 999); number("@rules.unitdamagemultiplier", f -> rules.unitDamageMultiplier = f, () -> rules.unitDamageMultiplier); number("@rules.unitcrashdamagemultiplier", f -> rules.unitCrashDamageMultiplier = f, () -> rules.unitCrashDamageMultiplier); + number("@rules.unitminespeedmultiplier", f -> rules.unitMineSpeedMultiplier = f, () -> rules.unitMineSpeedMultiplier); number("@rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier, 0f, 50f); number("@rules.unitcostmultiplier", f -> rules.unitCostMultiplier = f, () -> rules.unitCostMultiplier); number("@rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier);