diff --git a/core/assets-raw/sprites/blocks/environment/basalt-vent1.png b/core/assets-raw/sprites/blocks/environment/basalt-vent1.png new file mode 100644 index 0000000000..52619379c9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/basalt-vent1.png differ diff --git a/core/assets-raw/sprites/blocks/environment/basalt-vent2.png b/core/assets-raw/sprites/blocks/environment/basalt-vent2.png new file mode 100644 index 0000000000..348318d7b9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/basalt-vent2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/stone-vent1.png b/core/assets-raw/sprites/blocks/environment/stone-vent1.png new file mode 100644 index 0000000000..89bf1a4af4 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/stone-vent1.png differ diff --git a/core/assets-raw/sprites/blocks/environment/stone-vent2.png b/core/assets-raw/sprites/blocks/environment/stone-vent2.png new file mode 100644 index 0000000000..9b783c8b92 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/stone-vent2.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 134839949f..16455fd4aa 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1840,6 +1840,8 @@ block.arkyic-vent.name = Arkyic Vent block.yellow-stone-vent.name = Yellow Stone Vent block.red-stone-vent.name = Red Stone Vent block.crystalline-vent.name = Crystalline Vent +block.stone-vent.name = Stone Vent +block.basalt-vent.name = Basalt Vent block.redmat.name = Redmat block.bluemat.name = Bluemat block.core-zone.name = Core Zone diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 5c3bcdf0de..bf5c4dd164 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -597,3 +597,5 @@ 63085=scathe-missile-surge-split|unit-scathe-missile-surge-split-ui 63084=advanced-launch-pad|block-advanced-launch-pad-ui 63083=landing-pad|block-landing-pad-ui +63082=stone-vent|block-stone-vent-ui +63081=basalt-vent|block-basalt-vent-ui diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 78cb094ffb..8507e93b81 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -49,7 +49,7 @@ public class Blocks{ redmat, bluemat, stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster, redweed, purbush, yellowCoral, - rhyoliteVent, carbonVent, arkyicVent, yellowStoneVent, redStoneVent, crystallineVent, + rhyoliteVent, carbonVent, arkyicVent, yellowStoneVent, redStoneVent, crystallineVent, stoneVent, basaltVent, regolithWall, yellowStoneWall, rhyoliteWall, carbonWall, redIceWall, ferricStoneWall, beryllicStoneWall, arkyicWall, crystallineStoneWall, redStoneWall, redDiamondWall, ferricStone, ferricCraters, carbonStone, beryllicStone, crystallineStone, crystalFloor, yellowStonePlates, iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, grass, salt, @@ -502,6 +502,16 @@ public class Blocks{ attributes.set(Attribute.steam, 1f); }}; + stoneVent = new SteamVent("stone-vent"){{ + parent = blendGroup = stone; + attributes.set(Attribute.steam, 1f); + }}; + + basaltVent = new SteamVent("basalt-vent"){{ + parent = blendGroup = basalt; + attributes.set(Attribute.steam, 1f); + }}; + redmat = new Floor("redmat"); bluemat = new Floor("bluemat"); @@ -3073,8 +3083,8 @@ public class Blocks{ ammoMultiplier = 2; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("d39169"); - frontColor = Color.valueOf("eac1a8"); + hitColor = backColor = trailColor = Pal.copperAmmoBack; + frontColor = Pal.copperAmmoFront; }}, Items.graphite, new BasicBulletType(3.5f, 18){{ width = 9f; @@ -3084,8 +3094,8 @@ public class Blocks{ rangeChange = 16f; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("858a9b"); - frontColor = Color.valueOf("dae1ee"); + hitColor = backColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; }}, Items.silicon, new BasicBulletType(3f, 12){{ width = 7f; @@ -3099,8 +3109,8 @@ public class Blocks{ trailWidth = 1.5f; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("707594"); - frontColor = Color.valueOf("999ba0"); + hitColor = backColor = trailColor = Pal.siliconAmmoBack; + frontColor = Pal.siliconAmmoFront; }} ); @@ -3147,6 +3157,10 @@ public class Blocks{ hitEffect = Fx.flakExplosion; splashDamage = 22f * 1.5f; splashDamageRadius = 24f; + + frontColor = Pal.scrapAmmoFront; + backColor = hitColor = Pal.scrapAmmoBack; + despawnEffect = Fx.hitBulletColor; }}, Items.lead, new FlakBulletType(4.2f, 3){{ lifetime = 60f; @@ -3159,6 +3173,10 @@ public class Blocks{ splashDamageRadius = 15f; }}, Items.metaglass, new FlakBulletType(4f, 3){{ + backColor = trailColor = Pal.glassAmmoBack; + hitColor = frontColor = Pal.glassAmmoFront; + despawnEffect = Fx.hitBulletColor; + lifetime = 60f; ammoMultiplier = 5f; shootEffect = Fx.shootSmall; @@ -3174,8 +3192,8 @@ public class Blocks{ height = 12f; shrinkY = 1f; lifetime = 20f; - backColor = Pal.gray; - frontColor = Color.white; + backColor = trailColor = Pal.glassAmmoBack; + hitColor = frontColor = Pal.glassAmmoFront; despawnEffect = Fx.none; collidesGround = false; }}; @@ -3265,6 +3283,10 @@ public class Blocks{ collidesTiles = false; splashDamageRadius = 25f * 0.75f; splashDamage = 33f; + + hitColor = backColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; + despawnEffect = Fx.hitBulletColor; }}, Items.silicon, new ArtilleryBulletType(3f, 20){{ knockback = 0.8f; @@ -3277,6 +3299,13 @@ public class Blocks{ ammoMultiplier = 3f; homingPower = 0.08f; homingRange = 50f; + + trailLength = 7; + trailWidth = 3f; + + hitColor = backColor = trailColor = Pal.siliconAmmoBack; + frontColor = Pal.siliconAmmoFront; + despawnEffect = Fx.hitBulletColor; }}, Items.pyratite, new ArtilleryBulletType(3f, 25){{ hitEffect = Fx.blastExplosion; @@ -3288,11 +3317,12 @@ public class Blocks{ splashDamage = 45f; status = StatusEffects.burning; statusDuration = 60f * 12f; - frontColor = Pal.lightishOrange; + frontColor = trailColor = hitColor = Pal.lightishOrange; backColor = Pal.lightOrange; makeFire = true; trailEffect = Fx.incendTrail; ammoMultiplier = 4f; + despawnEffect = Fx.hitBulletColor; }} ); targetAir = false; @@ -3447,6 +3477,9 @@ public class Blocks{ status = StatusEffects.blasted; statusDuration = 60f; + + hitColor = backColor = trailColor = Pal.blastAmmoBack; + frontColor = Pal.blastAmmoFront; }}, Items.pyratite, new MissileBulletType(3.7f, 12){{ frontColor = Pal.lightishOrange; @@ -3474,6 +3507,9 @@ public class Blocks{ lightningDamage = 10; lightning = 2; lightningLength = 10; + + hitColor = backColor = trailColor = Pal.surgeAmmoBack; + frontColor = Pal.surgeAmmoFront; }} ); @@ -3511,8 +3547,8 @@ public class Blocks{ ammoMultiplier = 2; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("d39169"); - frontColor = Color.valueOf("eac1a8"); + hitColor = backColor = trailColor = Pal.copperAmmoBack; + frontColor = Pal.copperAmmoFront; }}, Items.graphite, new BasicBulletType(3.5f, 20){{ width = 9f; @@ -3523,16 +3559,16 @@ public class Blocks{ rangeChange = 4f * 8f; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("858a9b"); - frontColor = Color.valueOf("dae1ee"); + hitColor = backColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; }}, Items.pyratite, new BasicBulletType(3.2f, 18){{ width = 10f; height = 12f; - frontColor = Pal.lightishOrange; + frontColor = hitColor = Pal.lightishOrange; backColor = Pal.lightOrange; status = StatusEffects.burning; - hitEffect = new MultiEffect(Fx.hitBulletSmall, Fx.fireHit); + hitEffect = new MultiEffect(Fx.hitBulletColor, Fx.fireHit); ammoMultiplier = 5; @@ -3553,8 +3589,8 @@ public class Blocks{ trailLength = 5; trailWidth = 1.5f; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("707594"); - frontColor = Color.valueOf("999ba0"); + hitColor = backColor = trailColor = Pal.siliconAmmoBack; + frontColor = Pal.siliconAmmoFront; }}, Items.thorium, new BasicBulletType(4f, 29, "bullet"){{ width = 8f; @@ -3565,8 +3601,8 @@ public class Blocks{ lifetime = 60f; hitEffect = despawnEffect = Fx.hitBulletColor; - backColor = hitColor = trailColor = Color.valueOf("f595be"); - frontColor = Color.white; + backColor = hitColor = trailColor = Pal.thoriumAmmoBack; + frontColor = Pal.thoriumAmmoFront; }} ); @@ -3728,6 +3764,10 @@ public class Blocks{ collidesTiles = false; splashDamageRadius = 25f * 0.75f; splashDamage = 33f; + + backColor = hitColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; + despawnEffect = Fx.hitBulletColor; }}, Items.silicon, new ArtilleryBulletType(3f, 20){{ knockback = 0.8f; @@ -3740,6 +3780,13 @@ public class Blocks{ ammoMultiplier = 3f; homingPower = 0.08f; homingRange = 50f; + + trailLength = 9; + trailWidth = 3.1f; + + despawnEffect = Fx.hitBulletColor; + backColor = hitColor = trailColor = Pal.siliconAmmoBack; + frontColor = Pal.siliconAmmoFront; }}, Items.pyratite, new ArtilleryBulletType(3f, 24){{ hitEffect = Fx.blastExplosion; @@ -3752,10 +3799,11 @@ public class Blocks{ status = StatusEffects.burning; statusDuration = 60f * 12f; frontColor = Pal.lightishOrange; - backColor = Pal.lightOrange; + backColor = hitColor = Pal.lightOrange; makeFire = true; trailEffect = Fx.incendTrail; ammoMultiplier = 4f; + despawnEffect = Fx.hitBulletColor; }}, Items.blastCompound, new ArtilleryBulletType(2f, 20, "shell"){{ hitEffect = Fx.blastExplosion; @@ -3766,10 +3814,12 @@ public class Blocks{ ammoMultiplier = 4f; splashDamageRadius = 45f * 0.75f; splashDamage = 55f; - backColor = Pal.missileYellowBack; - frontColor = Pal.missileYellow; status = StatusEffects.blasted; + + despawnEffect = Fx.hitBulletColor; + backColor = hitColor = trailColor = Pal.blastAmmoBack; + frontColor = Pal.blastAmmoFront; }}, Items.plastanium, new ArtilleryBulletType(3.4f, 20, "shell"){{ hitEffect = Fx.plasticExplosion; @@ -3823,7 +3873,7 @@ public class Blocks{ shootEffect = Fx.shootSmall; reloadMultiplier = 0.8f; width = 6f; - height = 8f; + height = 11f; hitEffect = Fx.flakExplosion; splashDamage = 45f; splashDamageRadius = 25f; @@ -3839,6 +3889,10 @@ public class Blocks{ fragBullets = 4; explodeRange = 20f; collidesGround = true; + + backColor = hitColor = trailColor = Pal.glassAmmoBack; + frontColor = Pal.glassAmmoFront; + despawnEffect = Fx.hitBulletColor; }}, Items.blastCompound, new FlakBulletType(4f, 8){{ shootEffect = Fx.shootBig; @@ -3849,6 +3903,10 @@ public class Blocks{ status = StatusEffects.blasted; statusDuration = 60f; + + backColor = hitColor = trailColor = Pal.blastAmmoBack; + frontColor = Pal.blastAmmoFront; + despawnEffect = Fx.hitBulletColor; }}, Items.plastanium, new FlakBulletType(4f, 8){{ ammoMultiplier = 4f; @@ -3870,6 +3928,7 @@ public class Blocks{ shootEffect = Fx.shootBig; collidesGround = true; explodeRange = 20f; + despawnEffect = Fx.hitBulletColor; }}, Items.surgeAlloy, new FlakBulletType(4.5f, 13){{ ammoMultiplier = 5f; @@ -3880,6 +3939,10 @@ public class Blocks{ shootEffect = Fx.shootBig; collidesGround = true; explodeRange = 20f; + + backColor = hitColor = trailColor = Pal.surgeAmmoBack; + frontColor = Pal.surgeAmmoFront; + despawnEffect = Fx.hitBulletColor; }} ); shootY = 10f; @@ -3977,8 +4040,8 @@ public class Blocks{ knockback = 0.3f; hitEffect = despawnEffect = Fx.hitBulletColor; - hitColor = backColor = trailColor = Color.valueOf("858a9b"); - frontColor = Color.valueOf("dae1ee"); + hitColor = backColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; }}, Items.thorium, new BasicBulletType(8f, 80){{ hitSize = 5; @@ -3988,6 +4051,9 @@ public class Blocks{ pierceCap = 2; pierceBuilding = true; knockback = 0.7f; + + backColor = hitColor = trailColor = Pal.thoriumAmmoBack; + frontColor = Pal.thoriumAmmoFront; }}, Items.pyratite, new BasicBulletType(7f, 70){{ hitSize = 5; @@ -4215,8 +4281,8 @@ public class Blocks{ shootEffect = Fx.shootBigColor; smokeEffect = Fx.shootSmokeSquareSparse; ammoMultiplier = 1; - hitColor = backColor = trailColor = Color.valueOf("858a9b"); - frontColor = Color.valueOf("dae1ee"); + hitColor = backColor = trailColor = Pal.graphiteAmmoBack; + frontColor = Pal.graphiteAmmoFront; trailWidth = 6f; trailLength = 6; hitEffect = despawnEffect = Fx.hitSquaresColor; @@ -4589,8 +4655,8 @@ public class Blocks{ collidesTiles = false; shootEffect = Fx.shootBig2; smokeEffect = Fx.shootSmokeDisperse; - frontColor = Color.valueOf("dae1ee"); - backColor = trailColor = hitColor = Color.valueOf("858a9b"); + frontColor = Pal.graphiteAmmoFront; + backColor = trailColor = hitColor = Pal.graphiteAmmoBack; ammoMultiplier = 3f; lifetime = 34f; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 25c604c986..f1428d0319 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -1174,7 +1174,7 @@ public class Fx{ artilleryTrail = new Effect(50, e -> { color(e.color); Fill.circle(e.x, e.y, e.rotation * e.fout()); - }), + }).layer(Layer.bullet - 0.01f), incendTrail = new Effect(50, e -> { color(Pal.lightOrange); diff --git a/core/src/mindustry/graphics/Pal.java b/core/src/mindustry/graphics/Pal.java index 97a219ae87..911aa19b34 100644 --- a/core/src/mindustry/graphics/Pal.java +++ b/core/src/mindustry/graphics/Pal.java @@ -138,5 +138,30 @@ public class Pal{ techBlue = Color.valueOf("8ca9e8"), vent = Color.valueOf("6b4e4e"), - vent2 = Color.valueOf("3b2a2a"); + vent2 = Color.valueOf("3b2a2a"), + + copperAmmoFront = Color.valueOf("eac1a8"), + copperAmmoBack = Color.valueOf("d39169"), + + graphiteAmmoBack = Color.valueOf("7d89d8"), + graphiteAmmoFront = Color.valueOf("dae1ee"), + + siliconAmmoBack = Color.valueOf("707594"), + siliconAmmoFront = Color.valueOf("999ba0"), + + glassAmmoBack = Color.valueOf("b9c9df"), + glassAmmoFront = Color.valueOf("ffffff"), + + scrapAmmoFront = Color.valueOf("f5e0cc"), + scrapAmmoBack = Color.valueOf("d8887e"), + + surgeAmmoFront = Color.white.cpy(), + surgeAmmoBack = surge.cpy(), + + blastAmmoBack = Color.valueOf("e9665b"), + blastAmmoFront = Color.valueOf("eeab89"), + + thoriumAmmoBack = Color.valueOf("f595be"), + thoriumAmmoFront = Color.white.cpy() + ; } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 5425212ea4..260a0f3656 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -699,7 +699,7 @@ public class UnitType extends UnlockableContent implements Senseable{ stats.add(Stat.speed, speed * 60f / tilesize, StatUnit.tilesSecond); stats.add(Stat.size, StatValues.squared(hitSize / tilesize, StatUnit.blocks)); stats.add(Stat.itemCapacity, itemCapacity); - stats.add(Stat.range, (int)(maxRange / tilesize), StatUnit.blocks); + stats.add(Stat.range, Strings.autoFixed(maxRange / tilesize, 1), StatUnit.blocks); stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround);