diff --git a/core/assets-raw/sprites/units/reaper-cell.png b/core/assets-raw/sprites/units/reaper-cell.png index 56d861cdd1..eba8627f99 100644 Binary files a/core/assets-raw/sprites/units/reaper-cell.png and b/core/assets-raw/sprites/units/reaper-cell.png differ diff --git a/core/assets-raw/sprites/units/reaper.png b/core/assets-raw/sprites/units/reaper.png index 1b2e54134d..bff2a0c656 100644 Binary files a/core/assets-raw/sprites/units/reaper.png and b/core/assets-raw/sprites/units/reaper.png differ diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 4e6900b4c3..ef76f78159 100644 Binary files a/core/assets/maps/groundZero.msav and b/core/assets/maps/groundZero.msav differ diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index bf094b23a7..cc8b7ed969 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index 4694aa0f1f..4c5e8bfbc7 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 6d2d1e4a08..6b6f292f82 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -174,12 +174,14 @@ public class UnitTypes implements ContentList{ reaper = new UnitType("reaper"){{ speed = 1.1f; - accel = 0.08f; + accel = 0.02f; drag = 0.05f; mass = 30f; + rotateSpeed = 0.5f; flying = true; + lowAltitude = true; health = 75000; - engineOffset = 40; + engineOffset = 38; engineSize = 7.3f; hitsize = 58f; diff --git a/core/src/mindustry/entities/Predict.java b/core/src/mindustry/entities/Predict.java index e9646a6eeb..ef2cd43ad0 100644 --- a/core/src/mindustry/entities/Predict.java +++ b/core/src/mindustry/entities/Predict.java @@ -51,15 +51,15 @@ public class Predict{ return sol; } - public static Vec2 intercept(Position src, Hitboxc dst, float v){ - return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.deltaX(), dst.deltaY(), v); - } - public static Vec2 intercept(Position src, Position dst, float v){ float ddx = 0, ddy = 0; if(dst instanceof Hitboxc){ - ddx = ((Hitboxc)dst).deltaX(); - ddy = ((Hitboxc)dst).deltaY(); + ddx += ((Hitboxc)dst).deltaX(); + ddy += ((Hitboxc)dst).deltaY(); + } + if(src instanceof Hitboxc){ + ddx -= ((Hitboxc)src).deltaX()/(Time.delta()); + ddy -= ((Hitboxc)src).deltaY()/(Time.delta()); } return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v); } diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 85221e1741..14b2638006 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -39,7 +39,7 @@ public class Units{ * @return whether the target is invalid */ public static boolean invalidateTarget(Posc target, Team team, float x, float y, float range){ - return target == null || !target.isAdded() || (range != Float.MAX_VALUE && !target.within(x, y, range)) || (target instanceof Teamc && ((Teamc)target).team() == team) || (target instanceof Healthc && !((Healthc)target).isValid()); + return target == null || (range != Float.MAX_VALUE && !target.within(x, y, range)) || (target instanceof Teamc && ((Teamc)target).team() == team) || (target instanceof Healthc && !((Healthc)target).isValid()); } /** See {@link #invalidateTarget(Posc, Team, float, float, float)} */ diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index c1ab3d5f3c..b2b1f4fe78 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -219,7 +219,7 @@ public abstract class BulletType extends Content{ bullet.damage(damage < 0 ? this.damage : damage); bullet.add(); - if(keepVelocity && owner instanceof Velc) bullet.vel().add(((Velc)owner).vel()); + if(keepVelocity && owner instanceof Hitboxc) bullet.vel().add(((Hitboxc)owner).deltaX(), ((Hitboxc)owner).deltaY()); return bullet; } diff --git a/core/src/mindustry/graphics/Layer.java b/core/src/mindustry/graphics/Layer.java index 92a4e8268d..f7f7707f44 100644 --- a/core/src/mindustry/graphics/Layer.java +++ b/core/src/mindustry/graphics/Layer.java @@ -41,8 +41,8 @@ public class Layer{ //building plans plans = 85, - //flying units - flyingUnit = 115, + //flying units (low altitude) + flyingUnitLow = 90, //bullets *bloom begin* bullet = 100, @@ -50,6 +50,9 @@ public class Layer{ //effects *bloom end* effect = 110, + //flying units + flyingUnit = 115, + //overlaied UI, like block config guides overlayUI = 120, diff --git a/core/src/mindustry/graphics/MultiPacker.java b/core/src/mindustry/graphics/MultiPacker.java index a2a7d476fe..40bce36694 100644 --- a/core/src/mindustry/graphics/MultiPacker.java +++ b/core/src/mindustry/graphics/MultiPacker.java @@ -53,7 +53,6 @@ public class MultiPacker implements Disposable{ main, environment, editor, - zone, ui; public static final PageType[] all = values(); diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 8591ea517f..0212607b1a 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -195,7 +195,6 @@ public class Mods implements Loadable{ region.getTexture() == Core.atlas.find("white").getTexture() ? PageType.main : region.getTexture() == Core.atlas.find("stone1").getTexture() ? PageType.environment : region.getTexture() == Core.atlas.find("clear-editor").getTexture() ? PageType.editor : - region.getTexture() == Core.atlas.find("zone-groundZero").getTexture() ? PageType.zone : region.getTexture() == Core.atlas.find("whiteui").getTexture() ? PageType.ui : PageType.main; } @@ -205,7 +204,6 @@ public class Mods implements Loadable{ return parent.equals("environment") ? PageType.environment : parent.equals("editor") ? PageType.editor : - parent.equals("zones") ? PageType.zone : parent.equals("ui") || file.parent().parent().name().equals("ui") ? PageType.ui : PageType.main; } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 070ef02291..4026f62bda 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -34,7 +34,7 @@ public class UnitType extends UnlockableContent{ public float drag = 0.3f, mass = 1f, accel = 0.5f; public float health = 200f, range = -1; public boolean targetAir = true, targetGround = true; - public boolean faceTarget = true, isCounted = true; + public boolean faceTarget = true, isCounted = true, lowAltitude = false; public float sway = 1f; public int itemCapacity = 30; @@ -129,7 +129,7 @@ public class UnitType extends UnlockableContent{ drawShadow(unit); } - float z = Mathf.lerp(Layer.groundUnit, Layer.flyingUnit, unit.elevation()); + float z = unit.elevation() > 0.5f ? (lowAltitude ? Layer.flyingUnitLow : Layer.flyingUnit) : Layer.groundUnit; Draw.z(z - 0.02f);