diff --git a/core/assets/maps/two.msav b/core/assets/maps/two.msav index b5782042e7..ba78b1bf5f 100644 Binary files a/core/assets/maps/two.msav and b/core/assets/maps/two.msav differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b6daafd228..16787a9820 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1589,12 +1589,14 @@ public class Blocks{ requirements(Category.defense, with(Items.beryllium, 6)); health = 130 * wallHealthMultiplier; armor = 2f; + buildCostMultiplier = 6.5f; }}; berylliumWallLarge = new Wall("beryllium-wall-large"){{ requirements(Category.defense, ItemStack.mult(berylliumWall.requirements, 4)); health = 130 * wallHealthMultiplier * 4; armor = 2f; + buildCostMultiplier = 5f; size = 2; }}; @@ -1602,12 +1604,14 @@ public class Blocks{ requirements(Category.defense, with(Items.tungsten, 6)); health = 180 * wallHealthMultiplier; armor = 14f; + buildCostMultiplier = 6.5f; }}; tungstenWallLarge = new Wall("tungsten-wall-large"){{ requirements(Category.defense, ItemStack.mult(tungstenWall.requirements, 4)); health = 180 * wallHealthMultiplier * 4; armor = 14f; + buildCostMultiplier = 5f; size = 2; }}; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 4a048b97f9..5585c6a6d2 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -2192,9 +2192,11 @@ public class Fx{ }), healBlockFull = new Effect(20, e -> { - color(e.color); + if(!(e.data instanceof Block block)) return; + + mixcol(e.color, 1f); alpha(e.fout()); - Fill.square(e.x, e.y, e.rotation * tilesize / 2f); + Draw.rect(block.fullIcon, e.x, e.y); }), rotateBlock = new Effect(30, e -> { diff --git a/core/src/mindustry/entities/TargetPriority.java b/core/src/mindustry/entities/TargetPriority.java index 9528ae4a75..800bdc87d3 100644 --- a/core/src/mindustry/entities/TargetPriority.java +++ b/core/src/mindustry/entities/TargetPriority.java @@ -3,6 +3,7 @@ package mindustry.entities; /** Higher priority blocks will always get targeted over those of lower priority, regardless of distance. */ public class TargetPriority{ public static final float + wall = -1f, base = 0f, constructing = 1f, turret = 2f, diff --git a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java index c397f614ba..d8bde36599 100644 --- a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java +++ b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java @@ -135,7 +135,7 @@ public class EnergyFieldAbility extends Ability{ hitEffect.at(rx, ry, unit.angleTo(other), color); if(other instanceof Building b){ - Fx.healBlockFull.at(b.x, b.y, b.block.size, color); + Fx.healBlockFull.at(b.x, b.y, 0f, color, b.block); } } }else{ diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 3ab4334749..c1c3a7f93a 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -265,7 +265,7 @@ public class BulletType extends Content implements Cloneable{ } if(heals() && build.team == b.team && !(build.block instanceof ConstructBlock)){ - healEffect.at(build.x, build.y, build.block.size, healColor); + healEffect.at(build.x, build.y, 0f, healColor, build.block); build.heal(healPercent / 100f * build.maxHealth + healAmount); }else if(build.team != b.team && direct){ hit(b); @@ -337,7 +337,7 @@ public class BulletType extends Content implements Cloneable{ if(heals()){ indexer.eachBlock(b.team, x, y, splashDamageRadius, Building::damaged, other -> { - healEffect.at(other.x, other.y, other.block.size, healColor); + healEffect.at(other.x, other.y, 0f, healColor, other.block); other.heal(healPercent / 100f * other.maxHealth() + healAmount); }); } diff --git a/core/src/mindustry/entities/bullet/EmpBulletType.java b/core/src/mindustry/entities/bullet/EmpBulletType.java index 05b74a9bf0..8f793c4e50 100644 --- a/core/src/mindustry/entities/bullet/EmpBulletType.java +++ b/core/src/mindustry/entities/bullet/EmpBulletType.java @@ -28,7 +28,7 @@ public class EmpBulletType extends BasicBulletType{ if(other.block.hasPower && other.damaged()){ other.heal(healPercent / 100f * other.maxHealth() + healAmount); - Fx.healBlockFull.at(other.x, other.y, other.block.size, hitColor); + Fx.healBlockFull.at(other.x, other.y, other.block.size, hitColor, other.block); applyEffect.at(other, other.block.size * 7f); } }else if(other.power != null){ diff --git a/core/src/mindustry/entities/comp/TankComp.java b/core/src/mindustry/entities/comp/TankComp.java index 26491bb2bf..8982205da1 100644 --- a/core/src/mindustry/entities/comp/TankComp.java +++ b/core/src/mindustry/entities/comp/TankComp.java @@ -109,7 +109,7 @@ abstract class TankComp implements Posc, Flyingc, Hitboxc, Unitc, ElevationMovec @Override public void moveAt(Vec2 vector, float acceleration){ //mark walking state when moving in a controlled manner - if(!vector.isZero()){ + if(!vector.isZero(0.001f)){ walked = true; } } diff --git a/core/src/mindustry/type/weapons/RepairBeamWeapon.java b/core/src/mindustry/type/weapons/RepairBeamWeapon.java index 1a8b559904..d33920322a 100644 --- a/core/src/mindustry/type/weapons/RepairBeamWeapon.java +++ b/core/src/mindustry/type/weapons/RepairBeamWeapon.java @@ -146,7 +146,7 @@ public class RepairBeamWeapon extends Weapon{ //create heal effect periodically if(canShoot && mount.target instanceof Building b && b.damaged() && (heal.effectTimer += Time.delta) >= reload){ - healEffect.at(b.x, b.y, b.block.size, healColor); + healEffect.at(b.x, b.y, 0f, healColor, b.block); heal.effectTimer = 0f; } diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 724be7ff81..751873d70a 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -95,7 +95,7 @@ public class MendProjector extends Block{ indexer.eachBlock(this, realRange, b -> b.damaged() && !b.isHealSuppressed(), other -> { other.heal(other.maxHealth() * (healPercent + phaseHeat * phaseBoost) / 100f * efficiency); other.recentlyHealed(); - Fx.healBlockFull.at(other.x, other.y, other.block.size, baseColor); + Fx.healBlockFull.at(other.x, other.y, other.block.size, baseColor, other.block); }); } } diff --git a/core/src/mindustry/world/blocks/defense/Wall.java b/core/src/mindustry/world/blocks/defense/Wall.java index b3248feebd..03b919f795 100644 --- a/core/src/mindustry/world/blocks/defense/Wall.java +++ b/core/src/mindustry/world/blocks/defense/Wall.java @@ -37,6 +37,7 @@ public class Wall extends Block{ canOverdrive = false; drawDisabled = false; crushDamageMultiplier = 5f; + priority = TargetPriority.wall; //it's a wall of course it's supported everywhere envEnabled = Env.any;