crash damage rebalancing

This commit is contained in:
EggleEgg 2026-01-11 19:19:24 +01:00
parent 9ebe629928
commit 005964f7be
5 changed files with 12 additions and 11 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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;