From 22fadab3b33dff259661460f9f51ca9c6458d19a Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 16 Mar 2019 13:25:50 -0400 Subject: [PATCH] Fixed units patrolling too quickly / Editor bugfixes --- core/src/io/anuke/mindustry/editor/EditorTool.java | 11 +++++++---- core/src/io/anuke/mindustry/editor/MapEditor.java | 2 +- .../io/anuke/mindustry/entities/type/BaseUnit.java | 6 +++++- .../io/anuke/mindustry/entities/type/GroundUnit.java | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/src/io/anuke/mindustry/editor/EditorTool.java b/core/src/io/anuke/mindustry/editor/EditorTool.java index 9edc99d5e9..665d111c4f 100644 --- a/core/src/io/anuke/mindustry/editor/EditorTool.java +++ b/core/src/io/anuke/mindustry/editor/EditorTool.java @@ -21,18 +21,21 @@ public enum EditorTool{ Tile tile = editor.tile(x, y); - Block floor = tile.floor(), block = tile.block(); byte link = tile.getLinkByte(); - if(block instanceof BlockPart && link != 0){ + if(tile.block() instanceof BlockPart && link != 0){ x -= (Pack.leftByte(link) - 8); y -= (Pack.rightByte(link) - 8); tile = editor.tile(x, y); - block = tile.block(); } - editor.drawBlock = block == Blocks.air ? tile.ore() == Blocks.air ? floor : tile.ore() : block; + //do not. + if(tile.block() instanceof BlockPart){ + return; + } + + editor.drawBlock = tile.block() == Blocks.air ? tile.ore() == Blocks.air ? tile.floor() : tile.ore() : tile.block(); } }, pencil{ diff --git a/core/src/io/anuke/mindustry/editor/MapEditor.java b/core/src/io/anuke/mindustry/editor/MapEditor.java index cb6577a630..32b05da7e0 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditor.java +++ b/core/src/io/anuke/mindustry/editor/MapEditor.java @@ -176,7 +176,7 @@ public class MapEditor{ if(i == 1){ tile.setBlock(Blocks.part); - tile.setLinked((byte)(dx + offsetx), (byte)(dy + offsety)); + tile.setLinkByte(Pack.byteByte((byte) (dx + offsetx + 8), (byte) (dy + offsety + 8))); }else{ byte link = tile.getLinkByte(); Block block = tile.block(); diff --git a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java index 552fd2d438..2542e79bdd 100644 --- a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java @@ -241,10 +241,14 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ return; } + if(!isFlying() && (world.tileWorld(x, y) != null && world.tileWorld(x, y).solid())){ + kill(); + } + avoidOthers(1.25f); if(spawner != noSpawner && (world.tile(spawner) == null || world.tile(spawner).entity == null)){ - damage(health); + kill(); } updateTargeting(); diff --git a/core/src/io/anuke/mindustry/entities/type/GroundUnit.java b/core/src/io/anuke/mindustry/entities/type/GroundUnit.java index 985f551bc6..2982057316 100644 --- a/core/src/io/anuke/mindustry/entities/type/GroundUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/GroundUnit.java @@ -178,9 +178,9 @@ public abstract class GroundUnit extends BaseUnit{ } protected void patrol(){ - vec.trns(baseRotation, type.speed * Time.delta() * 2); + vec.trns(baseRotation, type.speed * Time.delta()); velocity.add(vec.x, vec.y); - vec.trns(baseRotation, type.hitsizeTile); + vec.trns(baseRotation, type.hitsizeTile * 3); Tile tile = world.tileWorld(x + vec.x, y + vec.y); if((tile == null || tile.solid() || tile.floor().drownTime > 0) || stuckTime > 10f){ baseRotation += Mathf.sign(id % 2 - 0.5f) * Time.delta() * 3f;