diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index c5b03f40bd..8c9a9cda6d 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -19,7 +19,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class Pathfinder implements Runnable{ - private static final long maxUpdate = Time.millisToNanos(6); + private static final long maxUpdate = Time.millisToNanos(7); private static final int updateFPS = 60; private static final int updateInterval = 1000 / updateFPS; private static final int impassable = -1; @@ -37,7 +37,7 @@ public class Pathfinder implements Runnable{ public static final int costGround = 0, costLegs = 1, - costWater = 2; + costNaval = 2; public static final Seq costTypes = Seq.with( //ground @@ -90,6 +90,11 @@ public class Pathfinder implements Runnable{ preloadPath(getField(state.rules.waveTeam, costGround, fieldCore)); + //preload water on naval maps + if(spawner.getSpawns().contains(t -> t.floor().isLiquid)){ + preloadPath(getField(state.rules.waveTeam, costNaval, fieldCore)); + } + start(); }); diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index 39b0c81cde..8a4f351b4e 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -48,8 +48,8 @@ public class FormationAI extends AIController implements FormationMember{ Vec2 realtarget = vec.set(target).add(leader.vel.x, leader.vel.y); - float speed = unit.realSpeed() * unit.floorSpeedMultiplier(); - unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, 0f, 0.01f, speed, 1f)); + float speed = unit.realSpeed() * unit.floorSpeedMultiplier() * Time.delta; + unit.approach(Mathf.arrive(unit.x, unit.y, realtarget.x, realtarget.y, unit.vel, speed, 0f, speed, 1f).scl(1f / Time.delta)); if(unit.canMine() && leader.canMine()){ if(leader.mineTile != null && unit.validMine(leader.mineTile)){ diff --git a/core/src/mindustry/entities/comp/WaterMoveComp.java b/core/src/mindustry/entities/comp/WaterMoveComp.java index f87679efdb..69d178f41d 100644 --- a/core/src/mindustry/entities/comp/WaterMoveComp.java +++ b/core/src/mindustry/entities/comp/WaterMoveComp.java @@ -39,7 +39,7 @@ abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{ @Override @Replace public int pathType(){ - return Pathfinder.costWater; + return Pathfinder.costNaval; } @Override diff --git a/core/src/mindustry/entities/units/AIController.java b/core/src/mindustry/entities/units/AIController.java index 40d509b116..0eb12d7a6a 100644 --- a/core/src/mindustry/entities/units/AIController.java +++ b/core/src/mindustry/entities/units/AIController.java @@ -88,7 +88,7 @@ public class AIController implements UnitController{ if(tile == null) return; Tile targetTile = pathfinder.getTargetTile(tile, pathfinder.getField(unit.team, costType, pathTarget)); - if(tile == targetTile || (costType == Pathfinder.costWater && !targetTile.floor().isLiquid)) return; + if(tile == targetTile || (costType == Pathfinder.costNaval && !targetTile.floor().isLiquid)) return; unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.speed())); }