Disable leg damage on disarmed units (#9755)

* Disable leg damage on disarmed units

* import

* Disable crush damage from disarmed units
This commit is contained in:
BalaM314
2024-04-19 19:10:47 +05:30
committed by GitHub
parent 206adf46bf
commit 7b759d41df
2 changed files with 4 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc{
@Import float x, y, rotation, speedMultiplier; @Import float x, y, rotation, speedMultiplier;
@Import UnitType type; @Import UnitType type;
@Import Team team; @Import Team team;
@Import boolean disarmed;
transient Leg[] legs = {}; transient Leg[] legs = {};
transient float totalLength; transient float totalLength;
@@ -191,7 +192,7 @@ abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc{
} }
} }
if(type.legSplashDamage > 0){ if(type.legSplashDamage > 0 && !disarmed){
Damage.damage(team, l.base.x, l.base.y, type.legSplashRange, type.legSplashDamage * state.rules.unitDamage(team), false, true); Damage.damage(team, l.base.x, l.base.y, type.legSplashRange, type.legSplashDamage * state.rules.unitDamage(team), false, true);
} }
} }

View File

@@ -18,7 +18,7 @@ import static mindustry.Vars.*;
@Component @Component
abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec{ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec{
@Import float x, y, hitSize, rotation, speedMultiplier; @Import float x, y, hitSize, rotation, speedMultiplier;
@Import boolean hovering; @Import boolean hovering, disarmed;
@Import UnitType type; @Import UnitType type;
@Import Team team; @Import Team team;
@@ -62,7 +62,7 @@ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec
} }
//TODO should this apply to the player team(s)? currently PvE due to balancing //TODO should this apply to the player team(s)? currently PvE due to balancing
if(type.crushDamage > 0 && (walked || deltaLen() >= 0.01f) && t != null && t.build != null && t.build.team != team if(type.crushDamage > 0 && !disarmed && (walked || deltaLen() >= 0.01f) && t != null && t.build != null && t.build.team != team
//damage radius is 1 tile smaller to prevent it from just touching walls as it passes //damage radius is 1 tile smaller to prevent it from just touching walls as it passes
&& Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){ && Math.max(Math.abs(dx), Math.abs(dy)) <= r - 1){