From e70221f6dd86d883a2cffd49fb846d42eab2f86c Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 2 Jan 2021 16:05:22 -0500 Subject: [PATCH] Fixed #4235 --- core/src/mindustry/ai/BaseAI.java | 9 ++++++--- gradle.properties | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 2a81d1535d..85e6656d28 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -32,6 +32,7 @@ public class BaseAI{ private static final Seq tmpTiles = new Seq<>(); private static int correct = 0, incorrect = 0; + private static boolean anyDrills; private int lastX, lastY, lastW, lastH; private boolean triedWalls, foundPath; @@ -200,7 +201,7 @@ public class BaseAI{ int cx = x - (int)rotator.x; int cy = y - (int)rotator.y; - //chekc valid placeability + //check valid placeability for(Stile tile : result.tiles){ int realX = tile.x + cx, realY = tile.y + cy; if(!Build.validPlace(tile.block, data.team, realX, realY, tile.rotation)){ @@ -217,16 +218,18 @@ public class BaseAI{ //make sure at least X% of resource requirements are met correct = incorrect = 0; + anyDrills = false; if(part.required instanceof Item){ for(Stile tile : result.tiles){ if(tile.block instanceof Drill){ + anyDrills = true; tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> { Tile res = world.rawTile(ex, ey); if(res.drop() == part.required){ correct ++; - }else{ + }else if(res.drop() != null){ incorrect ++; } }); @@ -235,7 +238,7 @@ public class BaseAI{ } //fail if not enough fit requirements - if((float)correct / incorrect < correctPercent){ + if(anyDrills && (incorrect != 0 || correct == 0)){ return false; } diff --git a/gradle.properties b/gradle.properties index 7201b1355f..f42373473e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=638a163631aa138e4fc4a90efe1bd8113e27a489 +archash=5e9176c3feefa5ee2f14b08f82da1f01f790e64a