From 005964f7bed81976fef05832bdaf6ea461025f0c Mon Sep 17 00:00:00 2001 From: EggleEgg <125359838+EggleEgg@users.noreply.github.com> Date: Sun, 11 Jan 2026 19:19:24 +0100 Subject: [PATCH] crash damage rebalancing --- core/src/mindustry/content/Blocks.java | 4 ++-- core/src/mindustry/content/UnitTypes.java | 11 ++++++----- core/src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/game/Gamemode.java | 2 +- core/src/mindustry/game/Rules.java | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 8edfb76107..92209b08fc 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -3930,11 +3930,11 @@ public class Blocks{ Items.titanium, new ShrapnelBulletType(){{ length = brange + 64f; rangeChange = 64f; - damage = 66f; + damage = 50f; ammoMultiplier = 2f; width = 17f; reloadMultiplier = 1.3f; - pierceCap = 3; + pierceCap = 4; serrations = 9; serrationSpacing = 20f; shootPattern = new ShootSpread(3, 10f); diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 69840ad1db..f909d04c9d 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -430,7 +430,7 @@ public class UnitTypes{ lightningLengthRand = 7; shootEffect = Fx.shootHeal; //Does not actually do anything; Just here to make stats work - healPercent = 2f; + healAmount = 22f; lightningType = new BulletType(0.0001f, 0f){{ lifetime = Fx.lightning.lifetime; @@ -1387,15 +1387,16 @@ public class UnitTypes{ engineOffset = 6.5f; hitSize = 9f; lowAltitude = true; + itemCapacity = 20; ammoType = new PowerAmmoType(900); mineTier = 2; mineSpeed = 3.5f; wreckSoundVolume = 0.9f; - abilities.add(new RepairFieldAbility(5f, 112f, 50f) + abilities.add(new RepairFieldAbility(5f, 60f * 6f, 50f) {{ - sameTypeHealMult = 0.25f; + sameTypeHealMult = 0.75f; }}); weapons.add(new Weapon("poly-weapon"){{ @@ -1462,7 +1463,7 @@ public class UnitTypes{ rotate = true; bullet = new LaserBoltBulletType(5.2f, 10){{ lifetime = 35f; - healPercent = 5.5f; + healAmount = 45f; collidesTeam = true; backColor = Pal.heal; frontColor = Color.white; @@ -1500,7 +1501,7 @@ public class UnitTypes{ faceTarget = false; hitSize = 36f; payloadCapacity = (3 * 3) * tilePayload; - buildSpeed = 4.5f; + buildSpeed = 6f; buildBeamOffset = 23; range = 140f; targetAir = false; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 0fdf05ad94..8c0206a1fe 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -843,7 +843,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I public void destroy(){ if(!isAdded() || !killable()) return; - float explosiveness = 2f + item().explosiveness * stack().amount * 0.75f; + float explosiveness = 2f + item().explosiveness * stack().amount * state.rules.unitCrashDamage(team) * 0.75f; float flammability = item().flammability * stack().amount / 1.9f; float power = item().charge * Mathf.pow(stack().amount, 1.11f) * 160f; @@ -878,7 +878,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //if this unit crash landed (was flying), damage stuff in a radius if(type.flying && !spawnedByCore && type.createWreck && state.rules.unitCrashDamage(team) > 0){ var shields = indexer.getEnemy(team, BlockFlag.shield); - float crashDamage = Mathf.pow(hitSize, 0.5f) * type.crashDamageMultiplier * 1.5f * state.rules.unitCrashDamage(team); + float crashDamage = Mathf.pow(hitSize, 0.75f) * type.crashDamageMultiplier * state.rules.unitCrashDamage(team); if(shields.isEmpty() || !shields.contains(b -> b instanceof ExplosionShield s && s.absorbExplosion(x, y, crashDamage))){ Damage.damage(team, x, y, hitSize * 1.25f, crashDamage, true, false, true); } diff --git a/core/src/mindustry/game/Gamemode.java b/core/src/mindustry/game/Gamemode.java index 778b4b0f0f..ab0bc3c0ce 100644 --- a/core/src/mindustry/game/Gamemode.java +++ b/core/src/mindustry/game/Gamemode.java @@ -20,7 +20,6 @@ public enum Gamemode{ attack(rules -> { rules.attackMode = true; rules.waveTimer = true; - rules.waveSpacing = 2f * Time.toMinutes; rules.waveTeam.rules().infiniteResources = true; }, map -> map.teams.size > 1), @@ -31,6 +30,7 @@ public enum Gamemode{ rules.buildSpeedMultiplier = 1f; rules.unitBuildSpeedMultiplier = 2f; rules.attackMode = true; + rules.unitCrashDamageMultiplier = 1.75f; }, map -> map.teams.size > 1), editor(true, rules -> { rules.infiniteResources = true; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index e633265a4e..cad4df4cfa 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -84,7 +84,7 @@ public class Rules{ public float unitDamageMultiplier = 1f; /** How much health units start with. */ public float unitHealthMultiplier = 1f; - /** How much damage unit crash damage deals. (Compounds with unitDamageMultiplier) */ + /** How much damage unit crash and unit explosive damage deals. (Compounds with unitDamageMultiplier) */ public float unitCrashDamageMultiplier = 1f; /** How fast units can mine. */ public float unitMineSpeedMultiplier = 1f;