diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index c1cfc9b5e7..a47363df2f 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -91,7 +91,7 @@ public class Build{ } //repair derelict tile - if(tile.team() == Team.derelict && tile.block == result && tile.build != null && tile.block.allowDerelictRepair && state.rules.derelictRepair){ + if(tile.team() == Team.derelict && team != Team.derelict && tile.block == result && tile.build != null && tile.block.allowDerelictRepair && state.rules.derelictRepair){ float healthf = tile.build.healthf(); var config = tile.build.config(); @@ -231,11 +231,11 @@ public class Build{ (type.size == 2 && world.getDarkness(wx, wy) >= 3) || (state.rules.staticFog && state.rules.fog && !fogControl.isDiscovered(team, wx, wy)) || (check.floor().isDeep() && !type.floating && !type.requiresWater && !type.placeableLiquid) || //deep water - (type == check.block() && check.build != null && rotation == check.build.rotation && type.rotate && !((type == check.block && check.team() == Team.derelict))) || //same block, same rotation + (type == check.block() && check.build != null && rotation == check.build.rotation && type.rotate && !((type == check.block && team != Team.derelict && check.team() == Team.derelict))) || //same block, same rotation !check.interactable(team) || //cannot interact !check.floor().placeableOn || //solid floor (!checkVisible && !check.block().alwaysReplace) || //replacing a block that should be replaced (e.g. payload placement) - !(((type.canReplace(check.block()) || (type == check.block && state.rules.derelictRepair && check.team() == Team.derelict)) || //can replace type OR can replace derelict block of same type + !(((type.canReplace(check.block()) || (type == check.block && team != Team.derelict && state.rules.derelictRepair && check.team() == Team.derelict)) || //can replace type OR can replace derelict block of same type (check.build instanceof ConstructBuild build && build.current == type && check.centerX() == tile.x && check.centerY() == tile.y)) && //same type in construction type.bounds(tile.x, tile.y, Tmp.r1).grow(0.01f).contains(check.block.bounds(check.centerX(), check.centerY(), Tmp.r2))) || //no replacement (type.requiresWater && check.floor().liquidDrop != Liquids.water) //requires water but none found