diff --git a/core/assets/contributors b/core/assets/contributors index 803ee2c8f4..f59c00ad57 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -176,3 +176,4 @@ sasha0552 SeuEarth The4codeblocks cardillan +Justacommonegg diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 8ed91cfc13..99fc424e9c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4460,16 +4460,17 @@ public class Blocks{ shrinkY = 0.1f; buildingDamageMultiplier = 0.3f; }}, - Items.carbide, new ArtilleryBulletType(2.5f, 500, "shell"){{ - hitEffect = new MultiEffect(Fx.titanExplosion, Fx.titanSmoke); + Items.carbide, new ArtilleryBulletType(3.25f, 700, "shell"){{ + hitEffect = new MultiEffect(Fx.titanExplosionSmall, Fx.titanSmokeSmall); despawnEffect = Fx.none; knockback = 3f; lifetime = 140f; - height = 19f; - width = 17f; - splashDamageRadius = 55f; - splashDamage = 650f; + height = 28f; + width = 15f; + splashDamageRadius = 36f; + splashDamage = 750f; rangeChange = 10f*8f; + reloadMultiplier = 0.8f; scaledSplashDamage = true; backColor = hitColor = trailColor = Color.valueOf("ab8ec5"); frontColor = Color.white; @@ -4494,6 +4495,30 @@ public class Blocks{ shrinkX = 0.2f; shrinkY = 0.1f; buildingDamageMultiplier = 0.2f; + fragLifeMin = 1.5f; + + fragBullets = 12; + fragBullet = new ArtilleryBulletType(0.5f, 50, "shell"){{ + hitEffect = new MultiEffect(Fx.titanExplosionFrag, Fx.titanLightSmall, new WaveEffect(){{ + lifetime = 8f; + strokeFrom = 1f; + sizeTo = 8f; + }}); + + despawnEffect = Fx.hitBulletColor; + width = 8f; + height = 12f; + lifetime = 50f; + knockback = 0.5f; + splashDamageRadius = 22f; + splashDamage = 50f; + scaledSplashDamage = true; + pierceArmor = true; + backColor = frontColor = hitColor = Color.valueOf("ab8ec5"); + frontColor = Color.white; + buildingDamageMultiplier = 0.25f; + shrinkY = 0.3f; + }}; }}, Items.oxide, new ArtilleryBulletType(2.5f, 300, "shell"){{ hitEffect = new MultiEffect(Fx.titanExplosionLarge, Fx.titanSmokeLarge, Fx.smokeAoeCloud); @@ -4502,7 +4527,7 @@ public class Blocks{ lifetime = 190f; height = 19f; width = 17f; - reloadMultiplier = 0.8f; + reloadMultiplier = 0.65f; splashDamageRadius = 110f; rangeChange = 8f; splashDamage = 300f; @@ -4783,7 +4808,8 @@ public class Blocks{ afflict = new PowerTurret("afflict"){{ requirements(Category.turret, with(Items.surgeAlloy, 125, Items.silicon, 200, Items.graphite, 250, Items.oxide, 40)); - + buildCostMultiplier = 1.5f; + shootType = new BasicBulletType(){{ shootEffect = new MultiEffect(Fx.shootTitan, new WaveEffect(){{ colorTo = Pal.surge; @@ -4827,8 +4853,8 @@ public class Blocks{ width = 9f; hitSize = 5f; height = 15f; - pierce = true; - lifetime = 35f; + pierceCap = 3; + lifetime = 28f; pierceBuilding = true; hitColor = backColor = trailColor = Pal.surge; frontColor = Color.white; @@ -4841,7 +4867,7 @@ public class Blocks{ lifetime = 10f; }}; buildingDamageMultiplier = 0.3f; - homingPower = 0.2f; + homingPower = 0.1f; }}; bulletInterval = 3f; @@ -5010,7 +5036,7 @@ public class Blocks{ deathExplosionEffect = Fx.massiveExplosion; shootOnDeath = true; shake = 10f; - bullet = new ExplosionBulletType(1500f, 65f){{ + bullet = new ExplosionBulletType(1000f, 65f){{ hitColor = Pal.redLight; shootEffect = new MultiEffect(Fx.massiveExplosion, Fx.scatheExplosion, Fx.scatheLight, new WaveEffect(){{ lifetime = 10f; @@ -5034,7 +5060,7 @@ public class Blocks{ width = height = 18f; collidesTiles = false; splashDamageRadius = 40f; - splashDamage = 160f; + splashDamage = 100f; backColor = trailColor = hitColor = Pal.redLight; frontColor = Color.white; smokeEffect = Fx.shootBigSmoke2; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index f1428d0319..29a2f0c66b 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -458,6 +458,38 @@ public class Fx{ Lines.lineAngle(e.x, e.y, angle, e.foutpow() * 50f * rand.random(1f, 0.6f) + 2f, e.finpow() * 100f * lenRand + 6f); } }), + + titanExplosionSmall = new Effect(22f, 120f, e -> { + color(e.color); + stroke(e.fout() * 3f); + float circleRad = 6f + e.finpow() * 45f; + Lines.circle(e.x, e.y, circleRad); + + rand.setSeed(e.id); + for(int i = 0; i < 12; i++){ + float angle = rand.random(360f); + float lenRand = rand.random(0.5f, 1f); + Lines.lineAngle(e.x, e.y, angle, e.foutpow() * 50f * rand.random(1f, 0.6f) + 2f, e.finpow() * 50f * lenRand + 6f); + } + }), + + titanExplosionFrag = new Effect(20f, 50f, e -> { + color(e.color); + stroke(e.fout() * 2f); + float circleRad = 6f + e.finpow() * 20f; + Lines.circle(e.x, e.y, circleRad); + + rand.setSeed(e.id); + for(int i = 0; i < 8; i++){ + float angle = rand.random(360f); + float lenRand = rand.random(0.5f, 1f); + Tmp.v1.trns(angle, circleRad); + + for(int s : Mathf.signs){ + Drawf.tri(e.x + Tmp.v1.x, e.y + Tmp.v1.y, e.foutpow() * 15f, e.fout() * 20f * lenRand + 6f, angle + 90f + s * 90f); + } + } + }), titanSmoke = new Effect(300f, 300f, b -> { float intensity = 3f; @@ -498,6 +530,26 @@ public class Fx{ }); } }), + titanSmokeSmall = new Effect(200f, 200f, b -> { + float intensity = 2.5f; + + color(b.color, 0.7f); + for(int i = 0; i < 4; i++){ + rand.setSeed(b.id*2 + i); + float lenScl = rand.random(0.5f, 1f); + int fi = i; + b.scaled(b.lifetime * lenScl, e -> { + randLenVectors(e.id + fi - 1, e.fin(Interp.pow10Out), (int)(2.9f * intensity), 18f * intensity, (x, y, in, out) -> { + float fout = e.fout(Interp.pow5Out) * rand.random(0.5f, 1f); + float rad = fout * ((2f + intensity) * 2.35f); + + Fill.circle(e.x + x, e.y + y, rad); + Drawf.light(e.x + x, e.y + y, rad * 2.5f, b.color, 0.5f); + }); + }); + } + }), + smokeAoeCloud = new Effect(60f * 3f, 250f, e -> { color(e.color, 0.65f); @@ -617,6 +669,13 @@ public class Fx{ Fill.circle(e.x, e.y, circleRad); }).layer(Layer.bullet + 2f), + titanLightSmall = new Effect(40f, 100f, e -> { + float circleRad = 6f + e.finpow() * 20f; + + color(e.color, e.foutpow()); + Fill.circle(e.x, e.y, circleRad); + }).layer(Layer.bullet + 2f), + scatheSlash = new Effect(40f, 160f, e -> { Draw.color(e.color); for(int s : Mathf.signs){