diff --git a/core/src/mindustry/world/blocks/units/CommandCenter.java b/core/src/mindustry/world/blocks/units/CommandCenter.java index a2c9f34007..ad2b3e075a 100644 --- a/core/src/mindustry/world/blocks/units/CommandCenter.java +++ b/core/src/mindustry/world/blocks/units/CommandCenter.java @@ -26,12 +26,13 @@ public class CommandCenter extends Block{ public Color topColor = null, bottomColor = Color.valueOf("5e5e5e"); public Effect effect = Fx.commandSend; public float effectSize = 150f; + public float forceRadius = 31f, forceStrength = 0.2f; public CommandCenter(String name){ super(name); flags = EnumSet.of(BlockFlag.rally); - destructible = true; + update = true; solid = true; configurable = true; drawDisabled = false; @@ -72,6 +73,22 @@ public class CommandCenter extends Block{ return team.data().command; } + @Override + public void updateTile(){ + super.updateTile(); + + //push away allied units + team.data().tree().intersect(x - forceRadius/2f, y - forceRadius/2f, forceRadius, forceRadius, u -> { + if(!u.isPlayer()){ + float dst = dst(u); + float rs = forceRadius + u.hitSize/2f; + if(dst < rs){ + u.vel.add(Tmp.v1.set(u).sub(x, y).setLength(1f - dst / rs).scl(forceStrength)); + } + } + }); + } + @Override public void draw(){ super.draw();