diff --git a/core/assets-raw/sprites/units/neoplasm/scuttler-segment0.png b/core/assets-raw/sprites/units/neoplasm/scuttler-segment0.png index e9c533963f..317c8889fc 100644 Binary files a/core/assets-raw/sprites/units/neoplasm/scuttler-segment0.png and b/core/assets-raw/sprites/units/neoplasm/scuttler-segment0.png differ diff --git a/core/assets-raw/sprites/units/neoplasm/scuttler-segment1.png b/core/assets-raw/sprites/units/neoplasm/scuttler-segment1.png index 6870a618e2..139b9df4ae 100644 Binary files a/core/assets-raw/sprites/units/neoplasm/scuttler-segment1.png and b/core/assets-raw/sprites/units/neoplasm/scuttler-segment1.png differ diff --git a/core/assets-raw/sprites/units/neoplasm/scuttler-segment2.png b/core/assets-raw/sprites/units/neoplasm/scuttler-segment2.png index 834ca5aaef..3ac74aafe9 100644 Binary files a/core/assets-raw/sprites/units/neoplasm/scuttler-segment2.png and b/core/assets-raw/sprites/units/neoplasm/scuttler-segment2.png differ diff --git a/core/assets-raw/sprites/units/neoplasm/scuttler-segment3.png b/core/assets-raw/sprites/units/neoplasm/scuttler-segment3.png index cb92fc0a35..5cdd9d5a10 100644 Binary files a/core/assets-raw/sprites/units/neoplasm/scuttler-segment3.png and b/core/assets-raw/sprites/units/neoplasm/scuttler-segment3.png differ diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index ff1904b857..fccfe3e8af 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -313,10 +313,10 @@ public class Fx{ Lines.poly(e.x, e.y, 4, 13f * e.fout()); }).layer(Layer.debris), - crawlDust = new Effect(30, e -> { - color(Tmp.c1.set(e.color).mul(1.1f)); + crawlDust = new Effect(35, e -> { + color(Tmp.c1.set(e.color).mul(1.6f)); randLenVectors(e.id, 2, 10f * e.finpow(), (x, y) -> { - Fill.circle(e.x + x, e.y + y, e.fslope() * 3f + 0.3f); + Fill.circle(e.x + x, e.y + y, e.fslope() * 4f + 0.3f); }); }).layer(Layer.debris), diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index c3a2da5080..362844919d 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2412,12 +2412,14 @@ public class UnitTypes implements ContentList{ //region neoplasm scuttler = new UnitType("scuttler"){{ - hitSize = 44f; + outlineColor = Pal.neoplasmOutline; + hitSize = 40f; omniMovement = false; - rotateSpeed = 2f; + rotateSpeed = 1.7f; drawCell = false; segments = 4; drawBody = false; + crawlDamage = 2f; segmentScl = 4f; segmentPhase = 5f; diff --git a/core/src/mindustry/entities/comp/CrawlComp.java b/core/src/mindustry/entities/comp/CrawlComp.java index 780f40ea6a..d5c1e86151 100644 --- a/core/src/mindustry/entities/comp/CrawlComp.java +++ b/core/src/mindustry/entities/comp/CrawlComp.java @@ -2,12 +2,14 @@ package mindustry.entities.comp; import arc.math.*; import arc.math.geom.*; +import arc.util.*; import mindustry.*; import mindustry.ai.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.entities.EntityCollisions.*; +import mindustry.game.*; import mindustry.gen.*; import mindustry.type.*; import mindustry.world.*; @@ -20,6 +22,7 @@ import static mindustry.Vars.*; abstract class CrawlComp implements Posc, Rotc, Hitboxc, Unitc{ @Import float x, y, speedMultiplier, rotation, hitSize; @Import UnitType type; + @Import Team team; @Import Vec2 vel; //TODO segments @@ -72,6 +75,10 @@ abstract class CrawlComp implements Posc, Rotc, Hitboxc, Unitc{ solids ++; } + if(t.build != null && t.build.team != team){ + t.build.damage(team, type.crawlDamage * Time.delta); + } + if(Mathf.chanceDelta(0.04)){ Fx.crawlDust.at(t.worldx(), t.worldy(), t.floor().mapColor); } diff --git a/core/src/mindustry/graphics/Pal.java b/core/src/mindustry/graphics/Pal.java index a990905900..fd8f23b5e9 100644 --- a/core/src/mindustry/graphics/Pal.java +++ b/core/src/mindustry/graphics/Pal.java @@ -103,6 +103,8 @@ public class Pal{ adminChat = Color.valueOf("ff4000"), + neoplasmOutline = Color.valueOf("2e191d"), + logicBlocks = Color.valueOf("d4816b"), logicControl = Color.valueOf("6bb2b2"), logicOperations = Color.valueOf("877bad"), diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index f89cb44459..89dc00522f 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -132,8 +132,9 @@ public class UnitType extends UnlockableContent{ public float segmentSpacing = 2f; public float segmentScl = 4f, segmentPhase = 5f; public float segmentRotSpeed = 1f, segmentMaxRot = 30f; - public float crawlSlowdown = 0.45f; - public float crawlSlowdownFrac = 0.4f; + public float crawlSlowdown = 0.5f; + public float crawlDamage = 0.5f; + public float crawlSlowdownFrac = 0.55f; public ObjectSet immunities = new ObjectSet<>(); public Sound deathSound = Sounds.bang; @@ -897,7 +898,8 @@ public class UnitType extends UnlockableContent{ Unit unit = (Unit)crawl; applyColor(unit); - for(int p = 0; p < 2; p++){ + //change to 2 TODO + for(int p = 0; p < 1; p++){ TextureRegion[] regions = p == 0 ? segmentOutlineRegions : segmentRegions; for(int i = 0; i < segments; i++){ @@ -907,6 +909,14 @@ public class UnitType extends UnlockableContent{ float rot = Mathf.slerp(crawl.segmentRot(), unit.rotation, i / (float)(segments - 1)); float tx = Angles.trnsx(rot, trns), ty = Angles.trnsy(rot, trns); + + //shadow + Draw.color(0f, 0f, 0f, 0.2f); + Draw.rect(regions[i], unit.x + tx + 2f, unit.y + ty - 2f, rot - 90); + + applyColor(unit); + + //TODO merge outlines? Draw.rect(regions[i], unit.x + tx, unit.y + ty, rot - 90); } diff --git a/gradle.properties b/gradle.properties index 5bd4e7119e..7d294adaf4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,4 +11,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works http.socketTimeout=80000 http.connectionTimeout=80000 -archash=4410a18d881622cb655c9d48e4cb0ff2ec40782f +archash=f9d704c4e88dfc9772e1e956268cfe8414f7b133 diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 084a785fa3..df9bf89de3 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -414,7 +414,7 @@ public class Generators{ type.loadIcon(); type.init(); - Func outline = i -> i.outline(Pal.darkerMetal, 3); + Func outline = i -> i.outline(type.outlineColor, 3); Cons outliner = t -> { if(t != null && t.found()){ replace(t, outline.get(get(t)));