From 98c56e474f182f5cc7a004a4326ceddd3ef20783 Mon Sep 17 00:00:00 2001 From: EggleEgg <125359838+EggleEgg@users.noreply.github.com> Date: Sat, 6 Sep 2025 05:10:13 +0200 Subject: [PATCH 1/3] Another erekir rebalance pr (#11184) * wip * wipp * real * aaa * ae * oh yeah * fixx * wip * afflict stuff * this should work ig * wip * real * a * maybe? * a * holy shit * what the fuck am I doing * I have children in my basement * 9 * o * a * good enough * more thor disperse overrange * no * fix this * a * restore * ohno * oh nice * aaa * some changes * FREEDOM * nvm * perhaps * h * aio * ya * should be all * ig * almost * well this works * more surge scathe hp nerfs * wip * drowntime changes * last tweaks * last change probs * quick locus hotfix * sadedwerwfw * targetable fix --- core/assets/bundles/bundle.properties | 10 ++- core/src/mindustry/content/Blocks.java | 7 +- core/src/mindustry/content/UnitTypes.java | 59 +++++++------ .../entities/abilities/ShieldArcAbility.java | 86 +++++++++++++++++-- .../src/mindustry/entities/comp/TankComp.java | 4 +- .../src/mindustry/entities/comp/UnitComp.java | 2 +- core/src/mindustry/type/UnitType.java | 7 ++ .../world/blocks/units/RepairTower.java | 6 ++ core/src/mindustry/world/meta/Stat.java | 1 + 9 files changed, 140 insertions(+), 42 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index b2d0fd8715..a895a8a230 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1016,6 +1016,7 @@ stat.damage = Damage stat.frequency = Frequency stat.targetsair = Targets Air stat.targetsground = Targets Ground +stat.crushdamage = Crush Damage stat.itemsmoved = Move Speed stat.launchtime = Time Between Launches stat.shootrange = Range @@ -1100,7 +1101,7 @@ ability.movelightning.description = Releases lightning while moving ability.armorplate = Armor Plate ability.armorplate.description = Reduces damage taken while shooting ability.shieldarc = Shield Arc -ability.shieldarc.description = Projects a force shield in an arc that absorbs bullets +ability.shieldarc.description = Projects a force shield in an arc that absorbs or deflects bullets, missiles and units ability.suppressionfield = Repair Suppression ability.suppressionfield.description = Stops nearby repair buildings ability.energyfield = Energy Field @@ -1120,6 +1121,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] max shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets @@ -2476,9 +2478,9 @@ unit.navanax.description = Fires explosive EMP projectiles, dealing significant #Erekir unit.stell.description = Fires standard bullets at enemy targets. unit.locus.description = Fires alternating bullets at enemy targets. -unit.precept.description = Fires piercing cluster bullets at enemy targets. -unit.vanquish.description = Fires large piercing splitting bullets at enemy targets. -unit.conquer.description = Fires large piercing cascades of bullets at enemy targets. +unit.precept.description = Fires piercing cluster bullets at enemy targets. Less affected by harmful terrain. +unit.vanquish.description = Fires large piercing splitting bullets at enemy targets. Less affected by harmful terrain. +unit.conquer.description = Fires large piercing cascades of bullets at enemy targets. Less affected by harmful terrain. unit.merui.description = Fires long-range artillery at enemy ground targets. Can step over most terrain. unit.cleroi.description = Fires dual shells at enemy targets. Targets enemy projectiles with point defense turrets. Can step over most terrain. unit.anthicus.description = Fires long-range homing missiles at enemy targets. Can step over most terrain. diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 167b14c417..ae8f695ec0 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4804,6 +4804,7 @@ public class Blocks{ ammoMultiplier = 1f; lifetime = 34f; + extraRangeMargin = 32f; rotationOffset = 90f; trailRotation = true; trailEffect = Fx.disperseTrail; @@ -5160,7 +5161,7 @@ public class Blocks{ fogRadius = 6f; - health = 210; + health = 240; weapons.add(new Weapon(){{ shootCone = 360f; @@ -5353,7 +5354,7 @@ public class Blocks{ fogRadius = 6f; - health = 400; + health = 300; weapons.add(new Weapon(){{ shootCone = 360f; @@ -5408,7 +5409,7 @@ public class Blocks{ fogRadius = 6f; - health = 100; + health = 50; weapons.add(new Weapon(){{ shootCone = 360f; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index c242913966..c0b9e88efc 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -196,7 +196,7 @@ public class UnitTypes{ mechStepParticles = true; stepShake = 0.15f; singleTarget = true; - drownTimeMultiplier = 4f; + drownTimeMultiplier = 1.5f; abilities.add(new ShieldRegenFieldAbility(25f, 250f, 60f * 1, 60f)); @@ -262,7 +262,7 @@ public class UnitTypes{ armor = 18f; mechStepParticles = true; stepShake = 0.75f; - drownTimeMultiplier = 6f; + drownTimeMultiplier = 1.6f; mechFrontSway = 1.9f; mechSideSway = 0.6f; ammoType = new ItemAmmoType(Items.thorium); @@ -459,7 +459,7 @@ public class UnitTypes{ mechStepParticles = true; stepShake = 0.15f; ammoType = new PowerAmmoType(2500); - drownTimeMultiplier = 4f; + drownTimeMultiplier = 1.3f; speed = 0.44f; boostMultiplier = 2.4f; @@ -539,7 +539,7 @@ public class UnitTypes{ armor = 9f; stepShake = 1.5f; rotateSpeed = 1.5f; - drownTimeMultiplier = 6f; + drownTimeMultiplier = 1.6f; legCount = 4; legLength = 14f; @@ -770,7 +770,6 @@ public class UnitTypes{ legSplashDamage = 32; legSplashRange = 30; - drownTimeMultiplier = 2f; hovering = true; shadowElevation = 0.65f; @@ -857,7 +856,6 @@ public class UnitTypes{ lightRadius = 140f; rotateSpeed = 1.9f; - drownTimeMultiplier = 3f; legCount = 8; legMoveSpace = 0.8f; @@ -2506,6 +2504,7 @@ public class UnitTypes{ health = 850; armor = 6f; itemCapacity = 0; + floorMultiplier = 0.95f; treadRects = new Rect[]{new Rect(12 - 32f, 7 - 32f, 14, 51)}; researchCostMultiplier = 0f; @@ -2547,6 +2546,7 @@ public class UnitTypes{ health = 2100; armor = 8f; itemCapacity = 0; + floorMultiplier = 0.8f; treadRects = new Rect[]{new Rect(17 - 96f/2f, 10 - 96f/2f, 19, 76)}; researchCostMultiplier = 0f; @@ -2625,6 +2625,9 @@ public class UnitTypes{ health = 5000; armor = 11f; itemCapacity = 0; + floorMultiplier = 0.65f; + drownTimeMultiplier = 1.2f; + immunities.addAll(StatusEffects.burning, StatusEffects.melting); treadRects = new Rect[]{new Rect(16 - 60f, 48 - 70f, 30, 75), new Rect(44 - 60f, 17 - 70f, 17, 60)}; researchCostMultiplier = 0f; @@ -2695,6 +2698,9 @@ public class UnitTypes{ armor = 20f; itemCapacity = 0; crushDamage = 13f / 5f; + floorMultiplier = 0.5f; + drownTimeMultiplier = 1.25f; + immunities.addAll(StatusEffects.burning, StatusEffects.melting); treadRects = new Rect[]{new Rect(22 - 154f/2f, 16 - 154f/2f, 28, 130)}; weapons.add(new Weapon("vanquish-weapon"){{ @@ -2791,7 +2797,9 @@ public class UnitTypes{ armor = 26f; crushDamage = 25f / 5f; rotateSpeed = 0.8f; - + floorMultiplier = 0.3f; + immunities.addAll(StatusEffects.burning, StatusEffects.melting); + float xo = 231f/2f, yo = 231f/2f; treadRects = new Rect[]{new Rect(27 - xo, 152 - yo, 56, 73), new Rect(24 - xo, 51 - 9 - yo, 29, 17), new Rect(59 - xo, 18 - 9 - yo, 39, 19)}; @@ -3306,7 +3314,7 @@ public class UnitTypes{ drag = 0.1f; speed = 0.6f; hitSize = 30f; - health = 7300; + health = 6500; armor = 5f; lockLegBase = true; @@ -3319,14 +3327,15 @@ public class UnitTypes{ abilities.add(new ShieldArcAbility(){{ region = "tecta-shield"; - radius = 36f; + radius = 45f; angle = 82f; - regen = 0.6f; + regen = 40f / 60f; cooldown = 60f * 8f; - max = 2000f; + max = 2200f; y = -20f; - width = 6f; + width = 8f; whenShooting = false; + chanceDeflect = 1f; }}); rotateSpeed = 2.1f; @@ -3344,7 +3353,7 @@ public class UnitTypes{ legSplashDamage = 32; legSplashRange = 30; - drownTimeMultiplier = 2f; + drownTimeMultiplier = 0.5f; hovering = true; shadowElevation = 0.4f; @@ -3435,7 +3444,7 @@ public class UnitTypes{ legSplashDamage = 32; legSplashRange = 32; - drownTimeMultiplier = 2f; + drownTimeMultiplier = 0.5f; hovering = true; shadowElevation = 0.4f; @@ -3487,7 +3496,7 @@ public class UnitTypes{ bullet = new ArtilleryBulletType(5.5f, 260){{ collidesTiles = collides = true; - lifetime = 70f; + lifetime = 60f; shootEffect = Fx.shootBigColor; smokeEffect = Fx.shootSmokeSquareBig; frontColor = Color.white; @@ -3495,6 +3504,7 @@ public class UnitTypes{ hitSound = Sounds.none; width = 18f; height = 24f; + rangeOverride = 385f; lightColor = trailColor = hitColor = backColor = Pal.techBlue; lightRadius = 40f; @@ -3508,10 +3518,10 @@ public class UnitTypes{ despawnSound = Sounds.dullExplosion; hitEffect = despawnEffect = new ExplosionEffect(){{ - lifetime = 34f; - waveStroke = 4f; + lifetime = 50f; + waveStroke = 5f; waveColor = sparkColor = trailColor; - waveRad = 25f; + waveRad = 45f; smokeSize = 0f; smokeSizeBase = 0f; sparks = 10; @@ -3520,8 +3530,8 @@ public class UnitTypes{ sparkStroke = 3f; }}; - splashDamage = 85f; - splashDamageRadius = 20f; + splashDamage = 120f; + splashDamageRadius = 36f; fragBullets = 15; fragVelocityMin = 0.5f; @@ -3529,14 +3539,14 @@ public class UnitTypes{ fragLifeMin = 0.3f; despawnShake = 5f; - fragBullet = new BasicBulletType(5.5f, 50){{ + fragBullet = new BasicBulletType(5.5f, 37){{ pierceCap = 2; pierceBuilding = true; homingPower = 0.09f; homingRange = 150f; - lifetime = 50f; + lifetime = 40f; shootEffect = Fx.shootBigColor; smokeEffect = Fx.shootSmokeSquareBig; frontColor = Color.white; @@ -3555,7 +3565,7 @@ public class UnitTypes{ collidesAir = false; despawnEffect = Fx.none; - splashDamage = 46f; + splashDamage = 35f; splashDamageRadius = 30f; hitEffect = despawnEffect = new MultiEffect(new ExplosionEffect(){{ @@ -4074,7 +4084,7 @@ public class UnitTypes{ hitSize = 9f; omniMovement = false; rotateSpeed = 2.5f; - drownTimeMultiplier = 2f; + drownTimeMultiplier = 1.75f; segments = 3; drawBody = false; hidden = true; @@ -4094,7 +4104,6 @@ public class UnitTypes{ hitSize = 48f; omniMovement = false; rotateSpeed = 1.7f; - drownTimeMultiplier = 4f; segments = 4; drawBody = false; hidden = true; diff --git a/core/src/mindustry/entities/abilities/ShieldArcAbility.java b/core/src/mindustry/entities/abilities/ShieldArcAbility.java index a4d60c3eec..21974c3330 100644 --- a/core/src/mindustry/entities/abilities/ShieldArcAbility.java +++ b/core/src/mindustry/entities/abilities/ShieldArcAbility.java @@ -1,5 +1,6 @@ package mindustry.entities.abilities; +import arc.audio.*; import arc.func.*; import arc.graphics.*; import arc.graphics.g2d.*; @@ -9,6 +10,7 @@ import arc.scene.ui.layout.*; import arc.util.*; import mindustry.*; import mindustry.content.*; +import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.ui.*; @@ -19,25 +21,86 @@ public class ShieldArcAbility extends Ability{ private static Vec2 paramPos = new Vec2(); private static final Cons shieldConsumer = b -> { if(b.team != paramUnit.team && b.type.absorbable && paramField.data > 0 && - !(b.within(paramPos, paramField.radius - paramField.width/2f) && paramPos.within(b.x - b.deltaX, b.y - b.deltaY, paramField.radius - paramField.width/2f)) && - (Tmp.v1.set(b).add(b.deltaX, b.deltaY).within(paramPos, paramField.radius + paramField.width/2f) || b.within(paramPos, paramField.radius + paramField.width/2f)) && + !(b.within(paramPos, paramField.radius - paramField.width) && paramPos.within(b.x - b.deltaX, b.y - b.deltaY, paramField.radius - paramField.width)) && + (Tmp.v1.set(b).add(b.deltaX, b.deltaY).within(paramPos, paramField.radius + paramField.width) || b.within(paramPos, paramField.radius + paramField.width)) && (Angles.within(paramPos.angleTo(b), paramUnit.rotation + paramField.angleOffset, paramField.angle / 2f) || Angles.within(paramPos.angleTo(b.x + b.deltaX, b.y + b.deltaY), paramUnit.rotation + paramField.angleOffset, paramField.angle / 2f))){ - b.absorb(); - Fx.absorb.at(b); + if(paramField.chanceDeflect > 0f && b.vel.len() >= 0.1f && b.type.reflectable && Mathf.chance(paramField.chanceDeflect)){ - //break shield + //make sound + paramField.deflectSound.at(paramPos, Mathf.random(0.9f, 1.1f)); + + //translate bullet back to where it was upon collision + b.trns(-b.vel.x, -b.vel.y); + + float penX = Math.abs(paramPos.x - b.x), penY = Math.abs(paramPos.y - b.y); + + if(penX > penY){ + b.vel.x *= -1; + }else{ + b.vel.y *= -1; + } + + b.owner = paramUnit; + b.team = paramUnit.team; + b.time += 1f; + + }else{ + b.absorb(); + Fx.absorb.at(b); + } + + // break shield if(paramField.data <= b.damage()){ paramField.data -= paramField.cooldown * paramField.regen; Fx.arcShieldBreak.at(paramPos.x, paramPos.y, 0, paramField.color == null ? paramUnit.type.shieldColor(paramUnit) : paramField.color, paramUnit); } - paramField.data -= b.damage(); + // shieldDamage for consistency + paramField.data -= b.type.shieldDamage(b); paramField.alpha = 1f; } }; + protected static final Cons unitConsumer = unit -> { + // ignore core units + if(paramField.data > 0 && unit.targetable(paramUnit.team) && + !(unit.within(paramPos, paramField.radius - paramField.width) && paramPos.within(unit.x - unit.deltaX, unit.y - unit.deltaY, paramField.radius - paramField.width)) && + (Tmp.v1.set(unit).add(unit.deltaX, unit.deltaY).within(paramPos, paramField.radius + paramField.width) || unit.within(paramPos, paramField.radius + paramField.width)) && + (Angles.within(paramPos.angleTo(unit), paramUnit.rotation + paramField.angleOffset, paramField.angle / 2f) || Angles.within(paramPos.angleTo(unit.x + unit.deltaX, unit.y + unit.deltaY), paramUnit.rotation + paramField.angleOffset, paramField.angle / 2f))){ + + if(unit.isMissile() && unit.killable() && paramField.missileUnitMultiplier >= 0f){ + + unit.remove(); + unit.type.deathSound.at(unit); + unit.type.deathExplosionEffect.at(unit); + Fx.absorb.at(unit); + Fx.circleColorSpark.at(unit.x, unit.y,paramUnit.team.color); + + // consider missile hp and gamerule to damage the shield + paramField.data -= unit.health() * paramField.missileUnitMultiplier * Vars.state.rules.unitDamage(unit.team); + paramField.alpha = 1f; + + }else{ + + float reach = paramField.radius + paramField.width; + float overlapDst = reach - unit.dst(paramPos.x,paramPos.y); + + if(overlapDst>0){ + //stop + unit.vel.setZero(); + // get out + unit.move(Tmp.v1.set(unit).sub(paramUnit).setLength(overlapDst + 0.01f)); + + if(Mathf.chanceDelta(0.5f*Time.delta)){ + Fx.circleColorSpark.at(unit.x,unit.y,paramUnit.team.color); + } + } + } + } + }; + /** Shield radius. */ public float radius = 60f; /** Shield regen speed in damage/tick. */ @@ -54,6 +117,12 @@ public class ShieldArcAbility extends Ability{ public boolean whenShooting = true; /** Width of shield line. */ public float width = 6f; + /** Bullet deflection chance. -1 to disable */ + public float chanceDeflect = -1f; + /** Deflection sound. */ + public Sound deflectSound = Sounds.none; + /** Multiplier for shield damage taken from missile units. */ + public float missileUnitMultiplier = 2f; /** Whether to draw the arc line. */ public boolean drawArc = true; @@ -75,6 +144,8 @@ public class ShieldArcAbility extends Ability{ t.add(abilityStat("repairspeed", Strings.autoFixed(regen * 60f, 2))); t.row(); t.add(abilityStat("cooldown", Strings.autoFixed(cooldown / 60f, 2))); + t.row(); + t.add(abilityStat("deflectchance", Strings.autoFixed(chanceDeflect *100f, 2))); } @Override @@ -93,8 +164,9 @@ public class ShieldArcAbility extends Ability{ paramField = this; paramPos.set(x, y).rotate(unit.rotation - 90f).add(unit); - float reach = radius + width / 2f; + float reach = radius + width; Groups.bullet.intersect(paramPos.x - reach, paramPos.y - reach, reach * 2f, reach * 2f, shieldConsumer); + Units.nearbyEnemies(paramUnit.team, paramPos.x - reach, paramPos.y - reach, reach * 2f, reach * 2f, unitConsumer); }else{ widthScale = Mathf.lerpDelta(widthScale, 0f, 0.11f); } diff --git a/core/src/mindustry/entities/comp/TankComp.java b/core/src/mindustry/entities/comp/TankComp.java index 67245b25ab..5f998e5546 100644 --- a/core/src/mindustry/entities/comp/TankComp.java +++ b/core/src/mindustry/entities/comp/TankComp.java @@ -56,7 +56,7 @@ abstract class TankComp implements Posc, Hitboxc, Unitc, ElevationMovec{ boolean anyNonDeep = false; //calculate overlapping tiles so it slows down when going "over" walls - int r = Math.max((int)(hitSize * 0.6f / tilesize), 0); + int r = Math.max((int)(hitSize * 0.75f / tilesize), 0); int solids = 0, total = (r*2+1)*(r*2+1); for(int dx = -r; dx <= r; dx++){ @@ -104,7 +104,7 @@ abstract class TankComp implements Posc, Hitboxc, Unitc, ElevationMovec{ public float floorSpeedMultiplier(){ Floor on = isFlying() || type.hovering ? Blocks.air.asFloor() : floorOn(); //TODO take into account extra blocks - return on.speedMultiplier * speedMultiplier * lastSlowdown; + return (float)Math.pow(on.speedMultiplier, type.floorMultiplier) * speedMultiplier * lastSlowdown; } @Replace diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 8e47c5ea52..c1c3d48211 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -606,7 +606,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I if(floor != null && floor.isLiquid && floor.drownTime > 0 && canDrown()){ lastDrownFloor = floor; - drownTime += Time.delta / floor.drownTime / type.drownTimeMultiplier; + drownTime += Time.delta / (hitSize / 8f * type.drownTimeMultiplier * floor.drownTime); if(Mathf.chanceDelta(0.05f)){ floor.drownUpdateEffect.at(x, y, hitSize, floor.mapColor); } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 646c4f12d5..773fa35465 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -439,6 +439,8 @@ public class UnitType extends UnlockableContent implements Senseable{ public int treadFrames = 18; /** how much of a top part of a tread sprite is "cut off" relative to the pattern; this is corrected for */ public int treadPullOffset = 0; + /** how affected this unit is by terrain */ + public float floorMultiplier = 1f; //SEGMENTED / CRAWL UNITS (this is WIP content!) @@ -743,6 +745,11 @@ public class UnitType extends UnlockableContent implements Senseable{ stats.add(Stat.size, StatValues.squared(hitSize / tilesize, StatUnit.blocks)); stats.add(Stat.itemCapacity, itemCapacity); stats.add(Stat.range, Strings.autoFixed(maxRange / tilesize, 1), StatUnit.blocks); + + if(crushDamage > 0){ + stats.add(Stat.crushDamage, crushDamage * 60f * 5f, StatUnit.perSecond); + } + stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround); diff --git a/core/src/mindustry/world/blocks/units/RepairTower.java b/core/src/mindustry/world/blocks/units/RepairTower.java index 1d969964e3..b935b2878d 100644 --- a/core/src/mindustry/world/blocks/units/RepairTower.java +++ b/core/src/mindustry/world/blocks/units/RepairTower.java @@ -28,6 +28,7 @@ public class RepairTower extends Block{ super(name); update = true; solid = true; + suppressable = true; } @Override @@ -64,6 +65,11 @@ public class RepairTower extends Block{ }); } + if(checkSuppression()){ + warmup = 0f; + return; + } + boolean any = false; if(efficiency > 0){ for(var target : targets){ diff --git a/core/src/mindustry/world/meta/Stat.java b/core/src/mindustry/world/meta/Stat.java index c8190e8cee..54b2614910 100644 --- a/core/src/mindustry/world/meta/Stat.java +++ b/core/src/mindustry/world/meta/Stat.java @@ -82,6 +82,7 @@ public class Stat implements Comparable{ inaccuracy = new Stat("inaccuracy", StatCat.function), shots = new Stat("shots", StatCat.function), reload = new Stat("reload", StatCat.function), + crushDamage = new Stat("crushDamage", StatCat.function), targetsAir = new Stat("targetsAir", StatCat.function), targetsGround = new Stat("targetsGround", StatCat.function), damage = new Stat("damage", StatCat.function), From ffa92adb0f965f831f74110d9bc6a9bfa6597f60 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sat, 6 Sep 2025 03:11:17 +0000 Subject: [PATCH 2/3] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 93df6134bf..7cda3ad8f4 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -1013,6 +1013,7 @@ stat.damage = Страты stat.frequency = Frequency stat.targetsair = Паветраныя мэты stat.targetsground = Наземныя мэты +stat.crushdamage = Crush Damage stat.itemsmoved = Хуткасць перамяшчэння stat.launchtime = Інтэрвал запускаў stat.shootrange = Радыус дзеяння @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index bec5b17c04..11fc3204ac 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -1013,6 +1013,7 @@ stat.damage = Щети stat.frequency = Frequency stat.targetsair = Напада по въздух stat.targetsground = Напада по земя +stat.crushdamage = Crush Damage stat.itemsmoved = Скорост на движение stat.launchtime = Време между изстрелванията stat.shootrange = Обхват @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] здраве/сек. ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] щит ability.stat.repairspeed = [stat]{0}/в сек.[lightgray] скорост на поправка +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] здраве/количество течност ability.stat.cooldown = [stat]{0} в сек.[lightgray] презареждане ability.stat.maxtargets = [stat]{0}[lightgray] макс. мишени diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 7494f88615..52630ef9c9 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -1013,6 +1013,7 @@ stat.damage = Dany stat.frequency = Frequency stat.targetsair = Dispara objectius aeris stat.targetsground = Dispara objectius terrestres +stat.crushdamage = Crush Damage stat.itemsmoved = Velocitat de moviment stat.launchtime = Temps entre llançaments stat.shootrange = Abast @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] de salut/seg ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] d’escut ability.stat.repairspeed = [stat]{0}/seg[lightgray] de velocitat de reparació +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] de salut/unitat de líquid ability.stat.cooldown = [stat]{0} seg[lightgray] de temps de refredament ability.stat.maxtargets = [stat]{0}[lightgray] objectius com a màxim diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index b4cd3a170d..b07ff373f2 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -1013,6 +1013,7 @@ stat.damage = Poškození stat.frequency = Frequency stat.targetsair = Zaměřuje vzdušné jednotky stat.targetsground = Zaměřuje pozemní jednotky +stat.crushdamage = Crush Damage stat.itemsmoved = Rychlost pohybu stat.launchtime = Čas mezi vysláním stat.shootrange = Dostřel @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index d93db376a3..8c42ee6362 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -1013,6 +1013,7 @@ stat.damage = Skade stat.frequency = Frequency stat.targetsair = Skyder flyvere stat.targetsground = Skyder fodgængere +stat.crushdamage = Crush Damage stat.itemsmoved = Bevægelseshastighed stat.launchtime = Tid mellem affyringer stat.shootrange = Rækkevidde @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 31277e05a6..56a8e6b98f 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -1013,6 +1013,7 @@ stat.damage = Schaden stat.frequency = Frequency stat.targetsair = Visiert Lufteinheiten an stat.targetsground = Visiert Bodeneinheiten an +stat.crushdamage = Crush Damage stat.itemsmoved = Bewegungsgeschwindigkeit stat.launchtime = Zeit zwischen Starts stat.shootrange = Reichweite @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] Lebenspunkte/sek ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] Schild ability.stat.repairspeed = [stat]{0}/sek[lightgray] Repariergeschwindigkeit +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] Lebenspunkte/Flüssigkeitseinheit ability.stat.cooldown = [stat]{0} sek[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max Ziele diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index b1c229ba3f..7b627bff79 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1013,6 +1013,7 @@ stat.damage = Daño stat.frequency = Frequency stat.targetsair = Apunta al aire stat.targetsground = Apunta a tierra +stat.crushdamage = Crush Damage stat.itemsmoved = Velocidad de movimiento stat.launchtime = Tiempo entre lanzamientos stat.shootrange = Alcance @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 596ef9287a..34bf35021a 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1013,6 +1013,7 @@ stat.damage = Hävituspunkte stat.frequency = Frequency stat.targetsair = Sihib õhku stat.targetsground = Sihib maapinnale +stat.crushdamage = Crush Damage stat.itemsmoved = Transportimise kiirus stat.launchtime = Aeg lendutõusude vahel stat.shootrange = Ulatus @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index e7297443db..99328c66ce 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -1013,6 +1013,7 @@ stat.damage = Kaltea stat.frequency = Frequency stat.targetsair = Airera tirokatzen du stat.targetsground = Lurrera tirokatzen du +stat.crushdamage = Crush Damage stat.itemsmoved = Garraio-abiadura stat.launchtime = Egozketen arteko denbora stat.shootrange = Irismena @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 5f56bc68f0..7420a5db7b 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -1013,6 +1013,7 @@ stat.damage = Vahinko stat.frequency = Frequency stat.targetsair = Hyökkää ilmaan stat.targetsground = Hyökkää maahan +stat.crushdamage = Crush Damage stat.itemsmoved = Liikkumisnopeus stat.launchtime = Aika laukaisujen välillä stat.shootrange = Kantama @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 81f56a4918..604dbd59f9 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1013,6 +1013,7 @@ stat.damage = Pinsala stat.frequency = Frequency stat.targetsair = Tinatarget ng mga Air stat.targetsground = Tinatarget ng mga Ground +stat.crushdamage = Crush Damage stat.itemsmoved = Bilis ng Pag-galaw stat.launchtime = Oras sa pagitan ng mga launches stat.shootrange = Saklaw @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max ng mga target diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 5a8c9b1a86..ea2104a657 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1013,6 +1013,7 @@ stat.damage = Dégâts stat.frequency = Frequency stat.targetsair = Cibles Aériennes stat.targetsground = Cibles Terrestres +stat.crushdamage = Crush Damage stat.itemsmoved = Vitesse de Déplacement stat.launchtime = Temps entre chaque lancement stat.shootrange = Portée de tir @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index a8175deee5..d5ff119b6a 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1013,6 +1013,7 @@ stat.damage = Sebzés stat.frequency = Frequency stat.targetsair = Légi célpontok stat.targetsground = Földi célpontok +stat.crushdamage = Crush Damage stat.itemsmoved = Szállítási sebesség stat.launchtime = Kilövések közötti idő stat.shootrange = Hatótávolság @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] életerő/mp ability.stat.pulseregen = [stat]{0}[lightgray] életerő/impulzus ability.stat.shield = [stat]{0}[lightgray] maximális pajzs ability.stat.repairspeed = [stat]{0}/mp[lightgray] javítási sebesség +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] életerő/folyadékegység ability.stat.cooldown = [stat]{0} mp[lightgray] újratöltődés ability.stat.maxtargets = [stat]{0}[lightgray] célpont (legfeljebb) diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 5440bdb4f7..caa71b1662 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -1013,6 +1013,7 @@ stat.damage = Damage stat.frequency = Frequency stat.targetsair = Target Udara stat.targetsground = Target Darat +stat.crushdamage = Crush Damage stat.itemsmoved = Kecepatan Barang stat.launchtime = Waktu Antara Peluncuran stat.shootrange = Jarak @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] nyawa/detik ability.stat.pulseregen = [stat]{0}[lightgray] nyawa/denyut ability.stat.shield = [stat]{0}[lightgray] perisai ability.stat.repairspeed = [stat]{0}/sec[lightgray] kecepatan perbaikan +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] nyawa/unit cair ability.stat.cooldown = [stat]{0} sec[lightgray] waktu jeda ability.stat.maxtargets = [stat]{0}[lightgray] target maksimal diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index fb491edcf1..6d0c5581d9 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1013,6 +1013,7 @@ stat.damage = Danno stat.frequency = Frequency stat.targetsair = Attacca Nemici Aerei stat.targetsground = Attacca Nemici Terreni +stat.crushdamage = Crush Damage stat.itemsmoved = Velocità stat.launchtime = Tempo tra Lanci stat.shootrange = Raggio @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 7654b91758..f5d275db76 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1013,6 +1013,7 @@ stat.damage = ダメージ stat.frequency = Frequency stat.targetsair = 対空攻撃 stat.targetsground = 対地攻撃 +stat.crushdamage = Crush Damage stat.itemsmoved = 輸送速度 stat.launchtime = 発射の待機時間 stat.shootrange = 範囲 @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] 回復/秒 ability.stat.pulseregen = [stat]{0}[lightgray] 回復/パルス ability.stat.shield = [stat]{0}[lightgray] シールド ability.stat.repairspeed = [stat]{0}/sec[lightgray] 修復速度 +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] 体力/液体保管量 ability.stat.cooldown = [stat]{0} sec[lightgray] クールダウン ability.stat.maxtargets = [stat]{0}[lightgray] 最大標的補足数 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index cd80c9637e..1074454251 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1013,6 +1013,7 @@ stat.damage = 피해량 stat.frequency = Frequency stat.targetsair = 공중 조준 stat.targetsground = 지상 조준 +stat.crushdamage = Crush Damage stat.itemsmoved = 이동 속도 stat.launchtime = 출격 간격 stat.shootrange = 사거리 @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] 체력/초 ability.stat.pulseregen = [stat]{0}[lightgray] 체력/파동 ability.stat.shield = [stat]{0}[lightgray] 실드 ability.stat.repairspeed = [stat]{0}/초[lightgray] 수리 속도 +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] 체력/액체 단위 ability.stat.cooldown = [stat]{0} 초[lightgray] 쿨타임 ability.stat.maxtargets = [stat]{0}[lightgray] 최대 목표 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index a1404af996..3b7c513120 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -1013,6 +1013,7 @@ stat.damage = Žala stat.frequency = Frequency stat.targetsair = Šaudo į oro taikinius stat.targetsground = Šaudo į žemės taikinius +stat.crushdamage = Crush Damage stat.itemsmoved = Judėjimo Greitis stat.launchtime = Laikas Tarp Paleidimų stat.shootrange = Atstumas @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index d750088f3f..8b7b9a4633 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1013,6 +1013,7 @@ stat.damage = Schade stat.frequency = Frequency stat.targetsair = Luchtdoelwitten stat.targetsground = Gronddoelwitten +stat.crushdamage = Crush Damage stat.itemsmoved = Beweegingssnelheid stat.launchtime = Tijd tussen lanceringen stat.shootrange = Bereik @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index aeef4d3568..19f634df31 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -1013,6 +1013,7 @@ stat.damage = Damage stat.frequency = Frequency stat.targetsair = Targets Air stat.targetsground = Targets Ground +stat.crushdamage = Crush Damage stat.itemsmoved = Move Speed stat.launchtime = Time Between Launches stat.shootrange = Range @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index f8b9fc19aa..fb29983bac 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -1013,6 +1013,7 @@ stat.damage = Obrażenia stat.frequency = Frequency stat.targetsair = Namierza wrogów powietrznych stat.targetsground = Namierza wrogów lądowych +stat.crushdamage = Crush Damage stat.itemsmoved = Prędkość poruszania się stat.launchtime = Czas pomiędzy wystrzeleniami stat.shootrange = Zasięg @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] zdrowie/sek ability.stat.pulseregen = [stat]{0}[lightgray] zdrowie/puls ability.stat.shield = [stat]{0}[lightgray] osłony ability.stat.repairspeed = [stat]{0}/sek[lightgray] szybkość naprawy +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] zdrowie/jednostka cieczy ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index d3fb3520bd..5535b978dc 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -1013,6 +1013,7 @@ stat.damage = Dano stat.frequency = Frequency stat.targetsair = Mira no ar stat.targetsground = Mira no chão +stat.crushdamage = Crush Damage stat.itemsmoved = Velocidade de movimento stat.launchtime = Tempo entre Disparos stat.shootrange = Alcance @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index fe19b4860e..4c79d764c8 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -1013,6 +1013,7 @@ stat.damage = Dano stat.frequency = Frequency stat.targetsair = Mirar no Ar stat.targetsground = Mirar no Chão +stat.crushdamage = Crush Damage stat.itemsmoved = Velocidade de movimento stat.launchtime = Tempo entre Tiros stat.shootrange = Alcance de Tiro @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] vida/sec ability.stat.pulseregen = [stat]{0}[lightgray] vida/pulso ability.stat.shield = [stat]{0}[lightgray] escudo ability.stat.repairspeed = [stat]{0}/seg.[lightgray] velocidade de reparação +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] unidade de vida/líquido ability.stat.cooldown = [stat]{0} seg.[lightgray] espera ability.stat.maxtargets = [stat]{0}[lightgray] alvos máximos diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 3bc49b5d37..db365df8c0 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1013,6 +1013,7 @@ stat.damage = Forță stat.frequency = Frequency stat.targetsair = Lovește Aeronave stat.targetsground = Lovește Artilerie +stat.crushdamage = Crush Damage stat.itemsmoved = Viteză de Mișcare a Materialelor stat.launchtime = Timp între Lansări stat.shootrange = Rază @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index f0afcb1979..9abc16b9c3 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1013,6 +1013,7 @@ stat.damage = Урон stat.frequency = Frequency stat.targetsair = Воздушные цели stat.targetsground = Наземные цели +stat.crushdamage = Crush Damage stat.itemsmoved = Скорость перемещения stat.launchtime = Интервал запусков stat.shootrange = Радиус действия @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] здоровья/сек ability.stat.pulseregen = [stat]{0}[lightgray] здоровья/раз ability.stat.shield = [stat]{0}[lightgray] щит ability.stat.repairspeed = [stat]{0}/сек[lightgray] скорость регенерации +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] здоровья/единица жидкости ability.stat.cooldown = [stat]{0} сек[lightgray] перезарядка ability.stat.maxtargets = [stat]{0}[lightgray] максимум целей diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index ac3b4d5682..e9364a1da2 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -1013,6 +1013,7 @@ stat.damage = Šteta stat.frequency = Frequency stat.targetsair = Nišani vazduh stat.targetsground = Nišani zemlju +stat.crushdamage = Crush Damage stat.itemsmoved = Brzina kretanja stat.launchtime = Vreme između lansiranja stat.shootrange = Domet @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 85e7214b88..670a126b24 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1013,6 +1013,7 @@ stat.damage = Skada stat.frequency = Frequency stat.targetsair = Targets Air stat.targetsground = Targets Ground +stat.crushdamage = Crush Damage stat.itemsmoved = Move Speed stat.launchtime = Time Between Launches stat.shootrange = Range @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index a56260a5ec..26b6a5300d 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -1013,6 +1013,7 @@ stat.damage = ดาเมจ stat.frequency = Frequency stat.targetsair = ยิงอากาศ stat.targetsground = ยิงพื้นดิน +stat.crushdamage = Crush Damage stat.itemsmoved = ความเร็วการเคลื่อนย้าย stat.launchtime = เวลาระหว่างการส่ง stat.shootrange = ระยะยิง @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] พลังชีวิต/วิ ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] เกราะ ability.stat.repairspeed = [stat]{0}/วิ[lightgray] ความเร็วการซ่อมแซม +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] พลังชีวิต/หน่วยของเหลว ability.stat.cooldown = [stat]{0} วิ[lightgray] คูลดาวน์ ability.stat.maxtargets = [lightgray]เป้าหมายสูงสุด: [white]{0} diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 19ed44b1c3..75b69f346a 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -1013,6 +1013,7 @@ stat.damage = Damage stat.frequency = Frequency stat.targetsair = Havayi hedef alir mi? stat.targetsground = Targets Ground +stat.crushdamage = Crush Damage stat.itemsmoved = Move Speed stat.launchtime = Time Between Launches stat.shootrange = Menzil @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] health/sec ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] shield ability.stat.repairspeed = [stat]{0}/sec[lightgray] repair speed +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] health/liquid unit ability.stat.cooldown = [stat]{0} sec[lightgray] cooldown ability.stat.maxtargets = [stat]{0}[lightgray] max targets diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index c26f390022..b9d6f8fbcd 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -1013,6 +1013,7 @@ stat.damage = Hasar stat.frequency = Frequency stat.targetsair = Havayı Hedefler Mi stat.targetsground = Yeri Hedefler Mi +stat.crushdamage = Crush Damage stat.itemsmoved = Hareket Hızı stat.launchtime = Fırlatmalar Arasındaki Süre stat.shootrange = Menzil @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] can/sn ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray] kalkan ability.stat.repairspeed = [stat]{0}/sn[lightgray] tamir hızı +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] can/sıvı miktarı ability.stat.cooldown = [stat]{0} sn[lightgray] bekleme süresi ability.stat.maxtargets = [stat]{0}[lightgray] maks hedef diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 67f3d5a55f..2af80a88b5 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -1013,6 +1013,7 @@ stat.damage = Шкода stat.frequency = Frequency stat.targetsair = Повітряні противники stat.targetsground = Наземні противники +stat.crushdamage = Crush Damage stat.itemsmoved = Швидкість переміщення stat.launchtime = Час між запусками stat.shootrange = Радіус дії @@ -1117,6 +1118,7 @@ ability.stat.regen = Відновлення здоров'я: [stat]{0} за се ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [lightgray]Щит: [stat]{0} ability.stat.repairspeed = [lightgray]Швидкість відновлення: [stat]{0} за сек. +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [lightgray]Здоров'я за одиницю рідини: [stat]{0} ability.stat.cooldown = [lightgray]Перезаряджання: [stat]{0} за сек. ability.stat.maxtargets = [lightgray]Максимум цілей: [white]{0} diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index d0eaa04aac..d3742f209e 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1013,6 +1013,7 @@ stat.damage = Sát thương stat.frequency = Frequency stat.targetsair = Mục tiêu trên không stat.targetsground = Mục tiêu mặt đất +stat.crushdamage = Crush Damage stat.itemsmoved = Tốc độ dịch chuyển stat.launchtime = Thời gian giữa các lần phóng stat.shootrange = Phạm vi @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray] độ bền/giây ability.stat.pulseregen = [stat]{0}[lightgray] độ bền/xung nhịp ability.stat.shield = [stat]{0}[lightgray] khiên tối đa ability.stat.repairspeed = [stat]{0}/giây[lightgray] tốc độ sửa chữa +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] độ bền/đơn vị chất lỏng ability.stat.cooldown = [stat]{0} giây[lightgray] hồi phục ability.stat.maxtargets = [stat]{0}[lightgray] mục tiêu tối đa diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 8402955f92..b54502c107 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -1013,6 +1013,7 @@ stat.damage = 伤害 stat.frequency = Frequency stat.targetsair = 攻击空中单位 stat.targetsground = 攻击地面单位 +stat.crushdamage = Crush Damage stat.itemsmoved = 移动速度 stat.launchtime = 发射间隔 stat.shootrange = 范围 @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}/秒[lightgray] 生命恢复速度 ability.stat.pulseregen = [stat]{0}[lightgray] 回盾/每次 ability.stat.shield = [stat]{0}[lightgray] 护盾 ability.stat.repairspeed = [stat]{0}/秒[lightgray] 修复速度 +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray] 生命/液体单位 ability.stat.cooldown = [stat]{0} 秒[lightgray] 冷却时间 ability.stat.maxtargets = [stat]{0}[lightgray] 最大目标数 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 772e070633..6b1479ec01 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1013,6 +1013,7 @@ stat.damage = 傷害 stat.frequency = Frequency stat.targetsair = 攻擊空中目標 stat.targetsground = 攻擊地面目標 +stat.crushdamage = Crush Damage stat.itemsmoved = 移動速度 stat.launchtime = 發射間隔 stat.shootrange = 範圍 @@ -1117,6 +1118,7 @@ ability.stat.regen = [stat]{0}[lightgray]生命恢復/秒 ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse ability.stat.shield = [stat]{0}[lightgray]護盾 ability.stat.repairspeed = [stat]{0}/秒[lightgray]修復速度 +ability.stat.deflectchance = [stat]{0}%[lightgray] deflect chance ability.stat.slurpheal = [stat]{0}[lightgray]生命/液體單位 ability.stat.cooldown = [stat]{0}秒[lightgray]冷卻時間 ability.stat.maxtargets = [stat]{0}[lightgray]最大目標數 From a51c6c35247d7546ce86033423ec4962cd1f6b64 Mon Sep 17 00:00:00 2001 From: EggleEgg <125359838+EggleEgg@users.noreply.github.com> Date: Sat, 6 Sep 2025 16:31:23 +0200 Subject: [PATCH 3/3] Same type mult for repair field ability (#11205) * breh * do not display if 1 * Update core/src/mindustry/entities/abilities/RepairFieldAbility.java Co-authored-by: Jason <131086642+JasonP01@users.noreply.github.com> * Update core/src/mindustry/entities/abilities/RepairFieldAbility.java --------- Co-authored-by: Jason <131086642+JasonP01@users.noreply.github.com> Co-authored-by: Anuken --- .../mindustry/entities/abilities/RepairFieldAbility.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/abilities/RepairFieldAbility.java b/core/src/mindustry/entities/abilities/RepairFieldAbility.java index 7c871978cc..486a11980b 100644 --- a/core/src/mindustry/entities/abilities/RepairFieldAbility.java +++ b/core/src/mindustry/entities/abilities/RepairFieldAbility.java @@ -14,6 +14,8 @@ public class RepairFieldAbility extends Ability{ public Effect healEffect = Fx.heal; public Effect activeEffect = Fx.healWaveDynamic; public boolean parentizeEffects = false; + /** Multiplies healing to units of the same type by this amount. */ + public float sameTypeHealMult = 1f; protected float timer; protected boolean wasHealed = false; @@ -32,6 +34,10 @@ public class RepairFieldAbility extends Ability{ t.add(Core.bundle.format("bullet.range", Strings.autoFixed(range / tilesize, 2))); t.row(); t.add(abilityStat("repairspeed", Strings.autoFixed(amount * 60f / reload, 2))); + if(sameTypeHealMult != 1f){ + t.row(); + t.add(abilityStat("sametypehealmultiplier", (sameTypeHealMult < 1f ? "[negstat]" : "") + Strings.autoFixed(sameTypeHealMult * 100f, 2))); + } } @Override @@ -46,7 +52,8 @@ public class RepairFieldAbility extends Ability{ healEffect.at(other, parentizeEffects); wasHealed = true; } - other.heal(amount); + float healMult = unit.type == other.type ? sameTypeHealMult : 1f; + other.heal(amount * healMult); }); if(wasHealed){