diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler-in.png b/core/assets-raw/sprites/blocks/units/mech-assembler-in.png new file mode 100644 index 0000000000..d411cbd4cd Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-assembler-in.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler-side1.png b/core/assets-raw/sprites/blocks/units/mech-assembler-side1.png new file mode 100644 index 0000000000..07a26a1318 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-assembler-side1.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler-side2.png b/core/assets-raw/sprites/blocks/units/mech-assembler-side2.png new file mode 100644 index 0000000000..c7677e0b77 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-assembler-side2.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler-top.png b/core/assets-raw/sprites/blocks/units/mech-assembler-top.png new file mode 100644 index 0000000000..18b76fc062 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-assembler-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-assembler.png b/core/assets-raw/sprites/blocks/units/mech-assembler.png new file mode 100644 index 0000000000..bf54cf6950 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-assembler.png differ diff --git a/core/assets-raw/sprites/units/quell.png b/core/assets-raw/sprites/units/quell.png index 1ce9a121c2..8f337b129e 100644 Binary files a/core/assets-raw/sprites/units/quell.png and b/core/assets-raw/sprites/units/quell.png differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 63a83f4245..f0ede69604 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -132,6 +132,7 @@ public class Blocks{ //unit - erekir tankAssembler, shipAssembler, + mechAssembler, basicAssemblerModule, //payloads @@ -2993,7 +2994,7 @@ public class Blocks{ //TODO bad name sublimate = new ContinuousLiquidTurret("sublimate"){{ //TODO requirements - requirements(Category.turret, with(Items.tungsten, 150, Items.silicon, 160, Items.oxide, 50, Items.beryllium, 200)); + requirements(Category.turret, with(Items.tungsten, 150, Items.silicon, 160, Items.oxide, 50, Items.beryllium, 250)); draw = new DrawTurret("reinforced-"){{ @@ -3035,15 +3036,17 @@ public class Blocks{ //TODO balance, set up, where is liquid/sec displayed? status effects maybe? ammo( Liquids.ozone, new ContinuousFlameBulletType(){{ - damage = 7f; + damage = 9f; length = range; + knockback = 1f; 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 = 14f; - rangeChange = 50f; + damage = 20f; + rangeChange = 70f; length = range + rangeChange; + knockback = 2f; colors = new Color[]{Color.valueOf("465ab8").a(0.55f), Color.valueOf("66a6d2").a(0.7f), Color.valueOf("89e8b6").a(0.8f), Color.valueOf("cafcbe"), Color.white}; flareColor = Color.valueOf("89e8b6"); @@ -3312,6 +3315,8 @@ public class Blocks{ }}; + //TODO mech assembler + basicAssemblerModule = new UnitAssemblerModule("basic-assembler-module"){{ requirements(Category.units, with(Items.graphite, 10)); consumes.power(0.5f); diff --git a/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java index 7db7a37198..496b549f89 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java @@ -33,12 +33,14 @@ public class ContinuousLiquidTurret extends ContinuousTurret{ super.setStats(); stats.remove(Stat.ammo); + //TODO looks bad + stats.add(Stat.ammo, StatValues.number(liquidConsumed * 60f, StatUnit.perSecond, true)); stats.add(Stat.ammo, StatValues.ammo(ammoTypes)); } @Override public void init(){ - //TODO use ammoMultiplier here? + //TODO display ammoMultiplier. consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), liquidConsumed){ @Override public boolean valid(Building build){ @@ -49,6 +51,12 @@ public class ContinuousLiquidTurret extends ContinuousTurret{ public void display(Stats stats){ } + + @Override + protected float use(Building entity){ + BulletType type = ammoTypes.get(entity.liquids.current()); + return Math.min(amount * entity.edelta(), entity.block.liquidCapacity) / (type == null ? 1f : type.ammoMultiplier); + } }); super.init(); diff --git a/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java index 131eb496c9..750e443e0e 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java @@ -27,6 +27,8 @@ public class ContinuousTurret extends Turret{ super.setStats(); stats.add(Stat.ammo, StatValues.ammo(ObjectMap.of(this, shootType))); + stats.remove(Stat.reload); + stats.remove(Stat.inaccuracy); } public class ContinuousTurretBuild extends TurretBuild{ @@ -107,7 +109,7 @@ public class ContinuousTurret extends Turret{ return; } - if(consValid() && !charging){ + if(cons.canConsume() && !charging){ shoot(peekAmmo()); } } diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 3c2bb8a291..064bd095aa 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -34,15 +34,25 @@ public class StatValues{ return table -> table.add(!value ? "@no" : "@yes"); } - public static StatValue number(float value, StatUnit unit){ + public static StatValue number(float value, StatUnit unit, boolean merge){ return table -> { int precision = Math.abs((int)value - value) <= 0.001f ? 0 : Math.abs((int)(value * 10) - value * 10) <= 0.001f ? 1 : 2; - table.add(Strings.fixed(value, precision)); - table.add((unit.space ? " " : "") + unit.localized()); + String l1 = Strings.fixed(value, precision), l2 = (unit.space ? " " : "") + unit.localized(); + + if(merge){ + table.add(l1 + l2); + }else{ + table.add(l1); + table.add(l2); + } }; } + public static StatValue number(float value, StatUnit unit){ + return number(value, unit, false); + } + public static StatValue liquid(Liquid liquid, float amount, boolean perSecond){ return table -> table.add(new LiquidDisplay(liquid, amount, perSecond)); } diff --git a/gradle.properties b/gradle.properties index e1dd9f2cec..a9f9f23a74 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=3bd873b8b7 +archash=368ccbfa7e