diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 118740a61b..39c03a60d5 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -3687,12 +3687,12 @@ public class Blocks{ }}; breach = new ItemTurret("breach"){{ - requirements(Category.turret, with(Items.beryllium, 150, Items.silicon, 150, Items.graphite, 300)); + requirements(Category.turret, with(Items.beryllium, 150, Items.silicon, 150, Items.graphite, 250)); Effect sfe = new MultiEffect(Fx.shootBigColor, Fx.colorSparkBig); ammo( - Items.beryllium, new BasicBulletType(7.5f, 95){{ + Items.beryllium, new BasicBulletType(7.5f, 85){{ width = 12f; hitSize = 7f; height = 20f; @@ -3709,7 +3709,7 @@ public class Blocks{ hitEffect = despawnEffect = Fx.hitBulletColor; buildingDamageMultiplier = 0.3f; }}, - Items.tungsten, new BasicBulletType(8f, 185){{ + Items.tungsten, new BasicBulletType(8f, 165){{ width = 13f; height = 19f; hitSize = 7f; @@ -3793,14 +3793,14 @@ public class Blocks{ }}; outlineColor = Pal.darkOutline; - liquidConsumed = 8f / 60f; + liquidConsumed = 10f / 60f; float r = range = 130f; //TODO balance, set up, where is liquid/sec displayed? status effects maybe? ammo( Liquids.ozone, new ContinuousFlameBulletType(){{ - damage = 70f; + damage = 60f; length = r; knockback = 1f; pierceCap = 2; @@ -3809,7 +3809,7 @@ public class Blocks{ colors = new Color[]{Color.valueOf("eb7abe").a(0.55f), Color.valueOf("e189f5").a(0.7f), Color.valueOf("907ef7").a(0.8f), Color.valueOf("91a4ff"), Color.white}; }}, Liquids.cyanogen, new ContinuousFlameBulletType(){{ - damage = 160f; + damage = 140f; rangeChange = 70f; length = r + rangeChange; knockback = 2f; @@ -4149,28 +4149,12 @@ public class Blocks{ consumePower(2f); }}; - tankReconstructor = new Reconstructor("tank-reconstructor"){{ - requirements(Category.units, with(Items.graphite, 150, Items.tungsten, 150, Items.silicon, 250, Items.oxide, 60)); - regionSuffix = "-dark"; - - size = 3; - consumePower(3f); - consumeLiquid(Liquids.hydrogen, 3f / 60f); - consumeItems(with(Items.silicon, 90, Items.tungsten, 70)); - - constructTime = 60f * 60f; - - upgrades.addAll( - new UnitType[]{UnitTypes.stell, UnitTypes.locus} - ); - }}; - mechReconstructor = new Reconstructor("mech-reconstructor"){{ - requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150, Items.oxide, 50)); + requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150)); regionSuffix = "-dark"; size = 3; - consumePower(2.5f); + consumePower(2f); consumeLiquid(Liquids.hydrogen, 3f / 60f); consumeItems(with(Items.silicon, 50, Items.tungsten, 40)); @@ -4186,7 +4170,7 @@ public class Blocks{ regionSuffix = "-dark"; size = 3; - consumePower(2f); + consumePower(2.5f); consumeLiquid(Liquids.hydrogen, 3f / 60f); consumeItems(with(Items.silicon, 25, Items.tungsten, 25)); @@ -4197,6 +4181,22 @@ public class Blocks{ ); }}; + tankReconstructor = new Reconstructor("tank-reconstructor"){{ + requirements(Category.units, with(Items.graphite, 150, Items.tungsten, 150, Items.silicon, 250, Items.oxide, 60)); + regionSuffix = "-dark"; + + size = 3; + consumePower(3f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 90, Items.tungsten, 70)); + + constructTime = 60f * 60f; + + upgrades.addAll( + new UnitType[]{UnitTypes.stell, UnitTypes.locus} + ); + }}; + tankAssembler = new UnitAssembler("tank-assembler"){{ requirements(Category.units, with(Items.graphite, 600, Items.beryllium, 600, Items.oxide, 250, Items.tungsten, 400, Items.silicon, 500)); regionSuffix = "-dark"; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index cb5fd6a5fa..48c966d62f 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -188,7 +188,7 @@ public class ErekirTechTree{ node(cliffCrusher, () -> { node(siliconArcFurnace, () -> { node(electrolyzer, Seq.with(new OnSector(three)), () -> { - node(oxidationChamber, () -> { + node(oxidationChamber, Seq.with(new Research(mechReconstructor)), () -> { node(electricHeater, Seq.with(new OnSector(four)), () -> { node(heatRedirector, () -> { @@ -277,11 +277,11 @@ public class ErekirTechTree{ }); - node(shipReconstructor, Seq.with(new OnSector(three)), () -> { - node(UnitTypes.avert); + node(mechReconstructor, Seq.with(new OnSector(three)), () -> { + node(UnitTypes.latum); - node(mechReconstructor, Seq.with(new OnSector(three)), () -> { - node(UnitTypes.latum); + node(shipReconstructor, Seq.with(new OnSector(three)), () -> { + node(UnitTypes.avert); node(tankReconstructor, () -> { node(UnitTypes.locus); diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 5396137e1a..99d9a0a6a6 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2878,7 +2878,7 @@ public class UnitTypes{ smoothReloadSpeed = 0.15f; recoil = 2f; - bullet = new BasicBulletType(3.5f, 55){{ + bullet = new BasicBulletType(3.5f, 40){{ backColor = trailColor = hitColor = Pal.techBlue; frontColor = Color.white; width = 7.5f; @@ -2893,7 +2893,16 @@ public class UnitTypes{ trailParam = 1.8f; trailInterval = 6f; - hitEffect = despawnEffect = Fx.hitBulletColor; + splashDamageRadius = 23f; + splashDamage = 36f; + + hitEffect = despawnEffect = new MultiEffect(Fx.hitBulletColor, new WaveEffect(){{ + colorFrom = colorTo = Pal.techBlue; + sizeTo = splashDamageRadius + 3f; + lifetime = 9f; + strokeFrom = 3f; + }}); + shootEffect = new MultiEffect(Fx.shootBigColor, new Effect(9, e -> { color(Color.white, e.color, e.fin()); stroke(0.7f + e.fout());