diff --git a/core/assets-raw/sprites/units/anthicus-cell.png b/core/assets-raw/sprites/units/anthicus-cell.png new file mode 100644 index 0000000000..e0d1d80716 Binary files /dev/null and b/core/assets-raw/sprites/units/anthicus-cell.png differ diff --git a/core/assets-raw/sprites/units/anthicus.png b/core/assets-raw/sprites/units/anthicus.png new file mode 100644 index 0000000000..b4ca19858c Binary files /dev/null and b/core/assets-raw/sprites/units/anthicus.png differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 2f5ba9c1ca..475d31c94c 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -547,3 +547,4 @@ 63145=malis|team-malis 63144=canvas|block-canvas-ui 63143=armored-duct|block-armored-duct-ui +63142=anthicus|unit-anthicus-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 513a3cec41..4942751fab 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 2212e91398..1128b28cd1 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -37,7 +37,8 @@ public class UnitTypes{ //legs public static @EntityDef({Unitc.class, Legsc.class}) UnitType corvus, atrax, - latum, bulwark, krepost; + latum, anthicus, + bulwark, krepost; //legs, legacy public static @EntityDef(value = {Unitc.class, Legsc.class}, legacy = true) UnitType spiroct, arkyid, toxopid; @@ -2922,6 +2923,32 @@ public class UnitTypes{ }}); }}; + anthicus = new ErekirUnitType("anthicus"){{ + speed = 0.7f; + drag = 0.1f; + hitSize = 21f; + rotateSpeed = 3f; + health = 1100; + armor = 5f; + + legCount = 6; + legLength = 18f; + lockLegBase = true; + legContinuousMove = true; + legExtension = -3f; + legBaseOffset = 7f; + maxStretch = 1.1f; + maxCompress = 0.2f; + legLengthScl = 0.95f; + legTrns = 0.7f; + + legMoveSpace = 1f; + hovering = true; + + visualElevation = 0.2f; + groundLayer = Layer.legUnit - 1f; + }}; + bulwark = new ErekirUnitType("bulwark"){{ drag = 0.1f; speed = 0.6f; diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index dd1de4118a..07a7399029 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -163,7 +163,9 @@ public class UnitType extends UnlockableContent{ public float drownTimeMultiplier = 1f; public float engineOffset = 5f, engineSize = 2.5f; public @Nullable Color engineColor = null; + public @Nullable Color trailColor; public Color engineColorInner = Color.white; + public float engineLayer = -1f; public Seq engines = new Seq<>(); public float strafePenalty = 0.5f; /** If false, this unit does not physically collide with others. */ @@ -856,8 +858,13 @@ public class UnitType extends UnlockableContent{ if(drawBody) drawOutline(unit); drawWeaponOutlines(unit); + if(engineLayer > 0) Draw.z(engineLayer); + if(trailLength > 0 && !naval && unit.isFlying()){ + drawTrail(unit); + } if(engineSize > 0) drawEngine(unit); if(engines.size > 0) drawEngines(unit); + Draw.z(z); if(drawBody) drawBody(unit); if(drawCell) drawCell(unit); drawWeapons(unit); @@ -993,10 +1000,6 @@ public class UnitType extends UnlockableContent{ float scale = unit.elevation; float offset = engineOffset/2f + engineOffset/2f*scale; - if(trailLength > 0 && !naval){ - drawTrail(unit); - } - Draw.color(engineColor == null ? unit.team.color : engineColor); Fill.circle( unit.x + Angles.trnsx(unit.rotation + 180, offset), @@ -1017,7 +1020,7 @@ public class UnitType extends UnlockableContent{ unit.trail = new Trail(trailLength); } Trail trail = unit.trail; - trail.draw(unit.team.color, (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f) * unit.elevation) * trailScl); + trail.draw(trailColor == null ? unit.team.color : trailColor, (engineSize + Mathf.absin(Time.time, 2f, engineSize / 4f) * unit.elevation) * trailScl); } public void drawEngines(Unit unit){