diff --git a/core/assets-raw/sprites/blocks/payload/constructor-out.png b/core/assets-raw/sprites/blocks/payload/constructor-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/constructor-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/factory-in-3-dark.png b/core/assets-raw/sprites/blocks/payload/factory-in-3-dark.png new file mode 100644 index 0000000000..3c4c7faaa2 Binary files /dev/null and b/core/assets-raw/sprites/blocks/payload/factory-in-3-dark.png differ diff --git a/core/assets-raw/sprites/blocks/payload/deconstructor-in.png b/core/assets-raw/sprites/blocks/payload/factory-in-5-dark.png similarity index 100% rename from core/assets-raw/sprites/blocks/payload/deconstructor-in.png rename to core/assets-raw/sprites/blocks/payload/factory-in-5-dark.png diff --git a/core/assets-raw/sprites/blocks/payload/factory-out-3-dark.png b/core/assets-raw/sprites/blocks/payload/factory-out-3-dark.png new file mode 100644 index 0000000000..e7a9f9c5b3 Binary files /dev/null and b/core/assets-raw/sprites/blocks/payload/factory-out-3-dark.png differ diff --git a/core/assets-raw/sprites/blocks/payload/large-constructor-out.png b/core/assets-raw/sprites/blocks/payload/factory-out-5-dark.png similarity index 100% rename from core/assets-raw/sprites/blocks/payload/large-constructor-out.png rename to core/assets-raw/sprites/blocks/payload/factory-out-5-dark.png diff --git a/core/assets-raw/sprites/blocks/payload/payload-loader-in.png b/core/assets-raw/sprites/blocks/payload/payload-loader-in.png deleted file mode 100644 index f8427f0ba9..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-loader-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/payload-loader-out.png b/core/assets-raw/sprites/blocks/payload/payload-loader-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-loader-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/payload-mass-driver-in.png b/core/assets-raw/sprites/blocks/payload/payload-mass-driver-in.png deleted file mode 100644 index f8427f0ba9..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-mass-driver-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/payload-mass-driver-out.png b/core/assets-raw/sprites/blocks/payload/payload-mass-driver-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-mass-driver-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/payload-unloader-in.png b/core/assets-raw/sprites/blocks/payload/payload-unloader-in.png deleted file mode 100644 index f8427f0ba9..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-unloader-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/payload-unloader-out.png b/core/assets-raw/sprites/blocks/payload/payload-unloader-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/payload-unloader-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png deleted file mode 100644 index f8427f0ba9..0000000000 Binary files a/core/assets-raw/sprites/blocks/payload/small-deconstructor-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/basic-assembler-module-in.png b/core/assets-raw/sprites/blocks/units/basic-assembler-module-in.png deleted file mode 100644 index f8427f0ba9..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/basic-assembler-module-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/basic-asssembler-module-out.png b/core/assets-raw/sprites/blocks/units/basic-asssembler-module-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/basic-asssembler-module-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/fabricator-out.png b/core/assets-raw/sprites/blocks/units/fabricator-out.png deleted file mode 100644 index afb61bf138..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/fabricator-out.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler-in.png b/core/assets-raw/sprites/blocks/units/mech-assembler-in.png deleted file mode 100644 index d411cbd4cd..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/mech-assembler-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png b/core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png new file mode 100644 index 0000000000..3cdd4951b6 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-reconstructor-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-reconstructor.png b/core/assets-raw/sprites/blocks/units/mech-reconstructor.png new file mode 100644 index 0000000000..3152db780a Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-reconstructor.png differ diff --git a/core/assets-raw/sprites/blocks/units/ship-assembler-in.png b/core/assets-raw/sprites/blocks/units/ship-assembler-in.png deleted file mode 100644 index d411cbd4cd..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/ship-assembler-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/tank-assembler-in.png b/core/assets-raw/sprites/blocks/units/tank-assembler-in.png deleted file mode 100644 index d411cbd4cd..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/tank-assembler-in.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png b/core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png new file mode 100644 index 0000000000..3cdd4951b6 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/tank-reconstructor-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/tank-reconstructor.png b/core/assets-raw/sprites/blocks/units/tank-reconstructor.png new file mode 100644 index 0000000000..3152db780a Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/tank-reconstructor.png differ diff --git a/core/assets-raw/sprites/units/avert-cell.png b/core/assets-raw/sprites/units/avert-cell.png new file mode 100644 index 0000000000..2eecb72f3f Binary files /dev/null and b/core/assets-raw/sprites/units/avert-cell.png differ diff --git a/core/assets-raw/sprites/units/latum.png b/core/assets-raw/sprites/units/latum.png index 41eb902726..c48211473d 100644 Binary files a/core/assets-raw/sprites/units/latum.png and b/core/assets-raw/sprites/units/latum.png differ diff --git a/core/assets-raw/sprites/units/stell.png b/core/assets-raw/sprites/units/stell.png index 399880dd0d..e2eb8ec5ac 100644 Binary files a/core/assets-raw/sprites/units/stell.png and b/core/assets-raw/sprites/units/stell.png differ diff --git a/core/assets-raw/sprites/units/weapons/stell-weapon.png b/core/assets-raw/sprites/units/weapons/stell-weapon.png index 82bb46aa91..6cf23e2105 100644 Binary files a/core/assets-raw/sprites/units/weapons/stell-weapon.png and b/core/assets-raw/sprites/units/weapons/stell-weapon.png differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 773e1ba289..aaed9537d4 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -548,3 +548,4 @@ 63155=locus|unit-locus-ui 63154=avert|unit-avert-ui 63153=latum|unit-latum-ui +63152=tank-reconstructor|block-tank-reconstructor-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index a691481a20..dbc563b734 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index c8f6915c5c..9ce33b575e 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -136,8 +136,9 @@ public class Blocks{ additiveReconstructor, multiplicativeReconstructor, exponentialReconstructor, tetrativeReconstructor, repairPoint, repairTurret, - //unit - erekir + //units - erekir fabricator, + tankReconstructor, shipReconstructor, mechReconstructor, tankAssembler, shipAssembler, mechAssembler, //TODO maybe making it 5x5 would be more appropriate, seems kinda cheap. basicAssemblerModule, @@ -3664,11 +3665,45 @@ public class Blocks{ configurable = false; plans.add(new UnitPlan(UnitTypes.stell, 60f * 60f, with(Items.beryllium, 100f, Items.silicon, 60f))); researchCost = with(Items.beryllium, 200, Items.graphite, 80, Items.silicon, 80); + regionSuffix = "-dark"; consumePower(2f); }}; + tankReconstructor = new Reconstructor("tank-reconstructor"){{ + requirements(Category.units, with(Items.graphite, 250, Items.tungsten, 120, Items.silicon, 200)); + regionSuffix = "-dark"; + + size = 3; + consumePower(3f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 100, Items.tungsten, 100)); + + constructTime = 60f * 20f; + + upgrades.addAll( + new UnitType[]{UnitTypes.stell, UnitTypes.locus} + ); + }}; + + mechReconstructor = new Reconstructor("mech-reconstructor"){{ + requirements(Category.units, with(Items.graphite, 250, Items.tungsten, 120, Items.silicon, 200)); + regionSuffix = "-dark"; + + size = 3; + consumePower(3f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 100, Items.tungsten, 100)); + + constructTime = 60f * 20f; + + upgrades.addAll( + new UnitType[]{UnitTypes.stell, UnitTypes.latum} + ); + }}; + 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"; size = 5; //TODO remove ducts and crushers, replace with 2-3 high cost special blocks with silicon requirements plans.add(new AssemblerUnitPlan(UnitTypes.vanquish, 60f * 50f, PayloadStack.list(UnitTypes.stell, 4, Blocks.tungstenWallLarge, 10))); @@ -3682,6 +3717,7 @@ public class Blocks{ //TODO requirements shipAssembler = new UnitAssembler("ship-assembler"){{ requirements(Category.units, with(Items.beryllium, 700, Items.oxide, 300, Items.tungsten, 500, Items.silicon, 800)); + regionSuffix = "-dark"; size = 5; //TODO not stell plans.add(new AssemblerUnitPlan(UnitTypes.quell, 60f * 60f, PayloadStack.list(Blocks.berylliumWallLarge, 20, UnitTypes.stell, 2))); @@ -3695,6 +3731,7 @@ public class Blocks{ //TODO requirements mechAssembler = new UnitAssembler("mech-assembler"){{ requirements(Category.units, with(Items.graphite, 500, Items.thorium, 600, Items.oxide, 200, Items.tungsten, 500, Items.silicon, 900)); + regionSuffix = "-dark"; size = 5; //TODO different reqs //TODO not stell @@ -3711,6 +3748,7 @@ public class Blocks{ basicAssemblerModule = new UnitAssemblerModule("basic-assembler-module"){{ requirements(Category.units, with(Items.graphite, 10)); consumePower(0.5f); + regionSuffix = "-dark"; size = 3; }}; @@ -3758,6 +3796,7 @@ public class Blocks{ payloadMassDriver = new PayloadMassDriver("payload-mass-driver"){{ requirements(Category.units, with(Items.tungsten, 120, Items.silicon, 120, Items.oxide, 70)); + regionSuffix = "-dark"; size = 3; reloadTime = 130f; chargeTime = 90f; @@ -3768,6 +3807,7 @@ public class Blocks{ payloadPropulsionTower = new PayloadMassDriver("payload-propulsion-tower"){{ requirements(Category.units, with(Items.thorium, 300, Items.silicon, 200, Items.plastanium, 200, Items.phaseFabric, 50)); + regionSuffix = "-dark"; size = 5; reloadTime = 130f; chargeTime = 100f; @@ -3778,6 +3818,7 @@ public class Blocks{ smallDeconstructor = new PayloadDeconstructor("small-deconstructor"){{ requirements(Category.units, with(Items.beryllium, 100, Items.silicon, 100, Items.oxide, 40, Items.graphite, 80)); + regionSuffix = "-dark"; itemCapacity = 100; consumePower(1f); size = 3; @@ -3786,6 +3827,7 @@ public class Blocks{ deconstructor = new PayloadDeconstructor("deconstructor"){{ requirements(Category.units, with(Items.beryllium, 250, Items.oxide, 100, Items.silicon, 250, Items.carbide, 250)); + regionSuffix = "-dark"; itemCapacity = 250; consumePower(3f); size = 5; @@ -3794,6 +3836,7 @@ public class Blocks{ constructor = new Constructor("constructor"){{ requirements(Category.units, with(Items.silicon, 100, Items.beryllium, 150, Items.tungsten, 80)); + regionSuffix = "-dark"; hasPower = true; buildSpeed = 0.3f; consumePower(2f); @@ -3805,16 +3848,19 @@ public class Blocks{ //yes this block is pretty much useless largeConstructor = new Constructor("large-constructor"){{ requirements(Category.units, with(Items.silicon, 150, Items.oxide, 150, Items.tungsten, 200, Items.phaseFabric, 40)); + regionSuffix = "-dark"; hasPower = true; - consumePower(2f); buildSpeed = 0.3f; maxBlockSize = 4; minBlockSize = 3; size = 5; + + consumePower(2f); }}; payloadLoader = new PayloadLoader("payload-loader"){{ requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.tungsten, 80)); + regionSuffix = "-dark"; hasPower = true; consumePower(2f); size = 3; @@ -3822,6 +3868,7 @@ public class Blocks{ payloadUnloader = new PayloadUnloader("payload-unloader"){{ requirements(Category.units, with(Items.graphite, 50, Items.silicon, 50, Items.oxide, 30)); + regionSuffix = "-dark"; hasPower = true; consumePower(2f); size = 3; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 95a3786495..9376b85acf 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -1471,7 +1471,18 @@ public class Fx{ }); }), - shootSmokeTris = new Effect(30f, e -> { + shootSmokeSquare = new Effect(20f, e -> { + color(Color.white, e.color, e.fin()); + + rand.setSeed(e.id); + for(int i = 0; i < 6; i++){ + float rot = e.rotation + rand.range(22f); + v.trns(rot, rand.random(e.finpow() * 21f)); + Fill.poly(e.x + v.x, e.y + v.y, 4, e.fout() * 2f + 0.2f, rand.random(360f)); + } + }), + + shootSmokeSquareBig = new Effect(30f, e -> { color(Color.white, e.color, e.fin()); rand.setSeed(e.id); diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index aaa452b3c2..e6b9a02f75 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -135,7 +135,7 @@ public class Items{ ); erekirItems.addAll( - scrap, graphite, thorium, silicon, phaseFabric, surgeAlloy, sand, + graphite, thorium, silicon, phaseFabric, surgeAlloy, sand, beryllium, tungsten, oxide, carbide, fissileMatter, dormantCyst ); } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index effc96170e..5abc7ee9f6 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2830,16 +2830,22 @@ public class UnitTypes{ lifetime = 40f; trailWidth = 2f; trailLength = 4; - shake = 0.5f; + shake = 1f; recoil = 0.1f; trailEffect = Fx.missileTrail; trailParam = 1.8f; - trailInterval = 8f; + trailInterval = 6f; hitEffect = despawnEffect = Fx.hitBulletColor; - shootEffect = new MultiEffect(Fx.shootBigColor, Fx.hitLaserColor); - smokeEffect = Fx.shootSmallSmoke; + shootEffect = new MultiEffect(Fx.shootBigColor, new Effect(9, e -> { + color(Color.white, e.color, e.fin()); + stroke(0.7f + e.fout()); + Lines.square(e.x, e.y, e.fin() * 5f, e.rotation + 45f); + + Drawf.light(e.x, e.y, 23f, e.color, e.fout() * 0.7f); + })); + smokeEffect = Fx.shootSmokeSquare; ammoMultiplier = 2; }}; }}); @@ -2857,7 +2863,7 @@ public class UnitTypes{ shootEffect = Fx.sparkShoot; hitEffect = Fx.pointHit; maxRange = 100f; - damage = 30f; + damage = 35f; }}; }}); }}; @@ -3034,7 +3040,7 @@ public class UnitTypes{ moveX = fi * 0.3f; moveRot = -45f - fi * 17f; - moves.add(new PartMove(PartProgress.reload.inv().mul(1.8f).inv().curve(fi / 5f, 0.2f), 0f, 0f, 40f)); + moves.add(new PartMove(PartProgress.reload.inv().mul(1.8f).inv().curve(fi / 5f, 0.2f), 0f, 0f, 36f)); }}); } @@ -3044,7 +3050,7 @@ public class UnitTypes{ lifetime = 30f; shootEffect = Fx.shootBigColor; - smokeEffect = Fx.shootSmokeTris; + smokeEffect = Fx.shootSmokeSquareBig; frontColor = Color.white; hitSound = Sounds.none; width = 12f; @@ -3093,8 +3099,8 @@ public class UnitTypes{ engineSize = 0; setEnginesMirror( - new UnitEngine(21 / 4f, 19 / 4f, 2.2f, 45f), - new UnitEngine(23 / 4f, -22 / 4f, 2.2f, 315f) + new UnitEngine(34 / 4f, 31 / 4f, 3f, 45f), + new UnitEngine(35 / 4f, -38 / 4f, 3f, 315f) ); }}; diff --git a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java index 520b0bd78f..b54128376d 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java @@ -1,11 +1,11 @@ package mindustry.world.blocks.payloads; +import arc.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; import arc.util.*; import arc.util.io.*; -import mindustry.annotations.Annotations.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.world.*; @@ -16,9 +16,8 @@ import static mindustry.Vars.*; public class PayloadBlock extends Block{ public float payloadSpeed = 0.7f, payloadRotateSpeed = 5f; - public @Load(value = "@-top", fallback = "factory-top-@size") TextureRegion topRegion; - public @Load(value = "@-out", fallback = "factory-out-@size") TextureRegion outRegion; - public @Load(value = "@-in", fallback = "factory-in-@size") TextureRegion inRegion; + public String regionSuffix = ""; + public TextureRegion topRegion, outRegion, inRegion; public PayloadBlock(String name){ super(name); @@ -29,6 +28,15 @@ public class PayloadBlock extends Block{ envEnabled |= Env.space | Env.underwater; } + @Override + public void load(){ + super.load(); + + topRegion = Core.atlas.find(name + "-top", "factory-top-" + size + regionSuffix); + outRegion = Core.atlas.find(name + "-out", "factory-out-" + size + regionSuffix); + inRegion = Core.atlas.find(name + "-in", "factory-in-" + size + regionSuffix); + } + public static boolean blends(Building build, int direction){ int size = build.block.size; int trns = build.block.size/2 + 1; @@ -164,9 +172,9 @@ public class PayloadBlock extends Block{ updatePayload(); if(rotate){ - payRotation = Angles.moveToward(payRotation, rotate ? rotdeg() : 90f, payloadRotateSpeed * edelta()); + payRotation = Angles.moveToward(payRotation, rotate ? rotdeg() : 90f, payloadRotateSpeed * delta()); } - payVector.approach(Vec2.ZERO, payloadSpeed * edelta()); + payVector.approach(Vec2.ZERO, payloadSpeed * delta()); return hasArrived(); } @@ -179,7 +187,7 @@ public class PayloadBlock extends Block{ Vec2 dest = Tmp.v1.trns(rotdeg(), size * tilesize/2f); payRotation = Angles.moveToward(payRotation, rotdeg(), payloadRotateSpeed * edelta()); - payVector.approach(dest, payloadSpeed * delta()); + payVector.approach(dest, payloadSpeed * edelta()); Building front = front(); boolean canDump = front == null || !front.tile().solid();