diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index f6e953d2f7..6c4ec55281 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -338,17 +338,19 @@ public class LExecutor{ @Nullable public static LogicAI checkLogicAI(LExecutor exec, Object unitObj){ if(unitObj instanceof Unit unit && exec.obj(varUnit) == unit && unit.team == exec.team && !unit.isPlayer() && !(unit.controller() instanceof FormationAI)){ - if(!(unit.controller() instanceof LogicAI)){ - unit.controller(new LogicAI()); - ((LogicAI)unit.controller()).controller = exec.building(varThis); + if(unit.controller() instanceof LogicAI la){ + return la; + }else{ + var la = new LogicAI(); + la.controller = exec.building(varThis); + unit.controller(la); //clear old state unit.mineTile = null; unit.clearBuilding(); - return (LogicAI)unit.controller(); + return la; } - return (LogicAI)unit.controller(); } return null; } diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index c51d875920..8a11429eec 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -178,6 +178,12 @@ public class ForceProjector extends Block{ return (radius + phaseHeat * phaseRadiusBoost) * radscl; } + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.heat) return buildup; + return super.sense(sensor); + } + @Override public void draw(){ super.draw();