diff --git a/core/assets-raw/sprites/blocks/units/mech-refabricator-top.png b/core/assets-raw/sprites/blocks/units/mech-refabricator-top.png new file mode 100644 index 0000000000..28e1927ffa Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-refabricator-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/mech-refabricator.png b/core/assets-raw/sprites/blocks/units/mech-refabricator.png new file mode 100644 index 0000000000..63f3cb6fa9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/mech-refabricator.png differ diff --git a/core/assets-raw/sprites/blocks/units/refabricator-top.png b/core/assets-raw/sprites/blocks/units/refabricator-top.png deleted file mode 100644 index f092d8f80e..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/refabricator-top.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/refabricator.png b/core/assets-raw/sprites/blocks/units/refabricator.png deleted file mode 100644 index 101119dbf4..0000000000 Binary files a/core/assets-raw/sprites/blocks/units/refabricator.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/units/ship-refabricator-top.png b/core/assets-raw/sprites/blocks/units/ship-refabricator-top.png new file mode 100644 index 0000000000..7c91e756cd Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/ship-refabricator-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/ship-refabricator.png b/core/assets-raw/sprites/blocks/units/ship-refabricator.png new file mode 100644 index 0000000000..bc9ddfe97f Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/ship-refabricator.png differ diff --git a/core/assets-raw/sprites/blocks/units/tank-fabricator-top.png b/core/assets-raw/sprites/blocks/units/tank-fabricator-top.png index 7b0d16be3c..4e5ee09f66 100644 Binary files a/core/assets-raw/sprites/blocks/units/tank-fabricator-top.png and b/core/assets-raw/sprites/blocks/units/tank-fabricator-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/tank-fabricator.png b/core/assets-raw/sprites/blocks/units/tank-fabricator.png index 7997bb60f3..c056220c41 100644 Binary files a/core/assets-raw/sprites/blocks/units/tank-fabricator.png and b/core/assets-raw/sprites/blocks/units/tank-fabricator.png differ diff --git a/core/assets-raw/sprites/blocks/units/tank-refabricator-top.png b/core/assets-raw/sprites/blocks/units/tank-refabricator-top.png new file mode 100644 index 0000000000..144c7ed37d Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/tank-refabricator-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/tank-refabricator.png b/core/assets-raw/sprites/blocks/units/tank-refabricator.png new file mode 100644 index 0000000000..3152db780a Binary files /dev/null and b/core/assets-raw/sprites/blocks/units/tank-refabricator.png differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 7ea4e3288f..c539d3255b 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -558,3 +558,8 @@ 63126=refabricator|block-refabricator-ui 63125=prime-refabricator|block-prime-refabricator-ui 63124=latum|unit-latum-ui +63123=reinforced-surge-wall|block-reinforced-surge-wall-ui +63122=reinforced-surge-wall-large|block-reinforced-surge-wall-large-ui +63121=tank-refabricator|block-tank-refabricator-ui +63120=mech-refabricator|block-mech-refabricator-ui +63119=ship-refabricator|block-ship-refabricator-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 3409bc6261..bd65fa5e70 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 7f01da776b..3af81e261a 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -80,7 +80,7 @@ public class Blocks{ //defense copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, plastaniumWall, plastaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge, phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, - berylliumWall, berylliumWallLarge, tungstenWall, tungstenWallLarge, blastDoor, carbideWall, carbideWallLarge, + berylliumWall, berylliumWallLarge, tungstenWall, tungstenWallLarge, blastDoor, reinforcedSurgeWall, reinforcedSurgeWallLarge, carbideWall, carbideWallLarge, mender, mendProjector, overdriveProjector, overdriveDome, forceProjector, shockMine, scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet @@ -141,8 +141,7 @@ public class Blocks{ //units - erekir tankFabricator, shipFabricator, mechFabricator, - //TODO names - refabricator, + tankRefabricator, shipRefabricator, mechRefabricator, primeRefabricator, tankAssembler, shipAssembler, mechAssembler, @@ -1361,7 +1360,7 @@ public class Blocks{ consumeItem(Items.silicon, 3); //TODO must consume from 2 pumps, 1, or 1.5? //TODO consume hydrogen/ozone? - consumeLiquid(Liquids.slag, 80f / 60f); + consumeLiquid(Liquids.slag, 40f / 60f); consumePower(2f); //TODO necessary? }}; @@ -1385,10 +1384,11 @@ public class Blocks{ size = 3; - liquidCapacity = 40f; + liquidCapacity = 80f; outputLiquid = new LiquidStack(Liquids.cyanogen, 3f / 60f); - consumeLiquids(LiquidStack.with(Liquids.hydrogen, 3f / 60f, Liquids.nitrogen, 2f / 60f)); + //consumeLiquids(LiquidStack.with(Liquids.hydrogen, 3f / 60f, Liquids.nitrogen, 2f / 60f)); + consumeLiquid(Liquids.arkycite, 40f / 60f); consumeItem(Items.graphite); consumePower(2f); }}; @@ -1625,6 +1625,23 @@ public class Blocks{ size = 2; }}; + reinforcedSurgeWall = new Wall("reinforced-surge-wall"){{ + requirements(Category.defense, with(Items.surgeAlloy, 6, Items.tungsten, 2)); + health = 230 * wallHealthMultiplier; + lightningChance = 0.05f; + lightningDamage = 30f; + armor = 20f; + }}; + + reinforcedSurgeWallLarge = new Wall("reinforced-surge-wall-large"){{ + requirements(Category.defense, ItemStack.mult(reinforcedSurgeWall.requirements, 4)); + health = 230 * wallHealthMultiplier * 4; + lightningChance = 0.05f; + lightningDamage = 30f; + armor = 20f; + size = 2; + }}; + carbideWall = new Wall("carbide-wall"){{ requirements(Category.defense, with(Items.thorium, 6, Items.carbide, 6)); health = 240 * wallHealthMultiplier; @@ -2394,7 +2411,7 @@ public class Blocks{ pyrolysisGenerator = new ConsumeGenerator("pyrolysis-generator"){{ //TODO requirements requirements(Category.power, with(Items.graphite, 50, Items.carbide, 50, Items.oxide, 60f, Items.silicon, 50)); - powerProduction = 18f; + powerProduction = 27f; drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawPistons(){{ sinMag = 2.75f; @@ -2413,7 +2430,7 @@ public class Blocks{ liquidCapacity = 30f * 5; - liquidOutput = new LiquidStack(Liquids.water, 10f / 60f); + liquidOutput = new LiquidStack(Liquids.water, 20f / 60f); generateEffect = Fx.none; @@ -2618,7 +2635,7 @@ public class Blocks{ //TODO bad name eruptionDrill = new BurstDrill("eruption-drill"){{ - requirements(Category.production, with(Items.silicon, 200, Items.oxide, 80, Items.tungsten, 200, Items.carbide, 120)); + requirements(Category.production, with(Items.silicon, 200, Items.oxide, 20, Items.tungsten, 200, Items.thorium, 120)); drillTime = 60f * 6f; size = 5; hasPower = true; @@ -2640,7 +2657,7 @@ public class Blocks{ //TODO different requirements consumePower(6f); - consumeLiquids(LiquidStack.with(Liquids.water, 0.4f, Liquids.hydrogen, 4f / 60f)); + consumeLiquids(LiquidStack.with(Liquids.hydrogen, 4f / 60f)); }}; //endregion @@ -3949,7 +3966,7 @@ public class Blocks{ }}; disperse = new ItemTurret("disperse"){{ - requirements(Category.turret, with(Items.carbide, 50, Items.oxide, 150, Items.silicon, 200, Items.beryllium, 350)); + requirements(Category.turret, with(Items.thorium, 50, Items.oxide, 150, Items.silicon, 200, Items.beryllium, 350)); ammo(Items.tungsten, new BasicBulletType(){{ damage = 60; @@ -4213,21 +4230,52 @@ public class Blocks{ consumePower(2f); }}; - refabricator = new Reconstructor("refabricator"){{ + tankRefabricator = new Reconstructor("tank-refabricator"){{ + requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 80, Items.silicon, 100)); + regionSuffix = "-dark"; + + size = 3; + consumePower(3f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 40, Items.tungsten, 30)); + + constructTime = 60f * 30f; + researchCostMultiplier = 0.75f; + + upgrades.addAll( + new UnitType[]{UnitTypes.stell, UnitTypes.locus} + ); + }}; + + mechRefabricator = new Reconstructor("mech-refabricator"){{ requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150)); regionSuffix = "-dark"; size = 3; - consumePower(2f); + consumePower(2.5f); consumeLiquid(Liquids.hydrogen, 3f / 60f); consumeItems(with(Items.silicon, 50, Items.tungsten, 40)); - constructTime = 60f * 40f; + constructTime = 60f * 45f; researchCostMultiplier = 0.75f; upgrades.addAll( - new UnitType[]{UnitTypes.stell, UnitTypes.locus}, - new UnitType[]{UnitTypes.merui, UnitTypes.cleroi}, + new UnitType[]{UnitTypes.merui, UnitTypes.cleroi} + ); + }}; + + shipRefabricator = new Reconstructor("ship-refabricator"){{ + requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 100, Items.silicon, 150, Items.oxide, 40)); + regionSuffix = "-dark"; + + size = 3; + consumePower(2.5f); + consumeLiquid(Liquids.hydrogen, 3f / 60f); + consumeItems(with(Items.silicon, 60, Items.tungsten, 40)); + + constructTime = 60f * 50f; + + upgrades.addAll( new UnitType[]{UnitTypes.elude, UnitTypes.avert} ); }}; @@ -4251,58 +4299,8 @@ public class Blocks{ ); }}; - /* - mechReconstructor = new Reconstructor("mech-reconstructor"){{ - requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150)); - regionSuffix = "-dark"; - - size = 3; - consumePower(2f); - consumeLiquid(Liquids.hydrogen, 3f / 60f); - consumeItems(with(Items.silicon, 50, Items.tungsten, 40)); - - constructTime = 60f * 40f; - researchCostMultiplier = 0.75f; - - upgrades.addAll( - new UnitType[]{UnitTypes.stell, UnitTypes.latum} - ); - }}; - - shipReconstructor = new Reconstructor("ship-reconstructor"){{ - requirements(Category.units, with(Items.graphite, 250, Items.tungsten, 120, Items.silicon, 200)); - regionSuffix = "-dark"; - - size = 3; - consumePower(2.5f); - consumeLiquid(Liquids.hydrogen, 3f / 60f); - consumeItems(with(Items.silicon, 25, Items.tungsten, 25)); - - constructTime = 60f * 30f; - - upgrades.addAll( - new UnitType[]{UnitTypes.stell, UnitTypes.avert} - ); - }}; - - 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.thorium, 500, Items.oxide, 150, Items.tungsten, 500, Items.silicon, 500)); + requirements(Category.units, with(Items.thorium, 500, Items.oxide, 150, Items.carbide, 80, Items.silicon, 500)); regionSuffix = "-dark"; size = 5; plans.add( @@ -4318,7 +4316,7 @@ public class Blocks{ //TODO requirements shipAssembler = new UnitAssembler("ship-assembler"){{ - requirements(Category.units, with(Items.beryllium, 700, Items.oxide, 200, Items.tungsten, 500, Items.silicon, 800, Items.thorium, 400)); + requirements(Category.units, with(Items.carbide, 100, Items.oxide, 200, Items.tungsten, 500, Items.silicon, 800, Items.thorium, 400)); regionSuffix = "-dark"; size = 5; plans.add( @@ -4328,12 +4326,12 @@ public class Blocks{ areaSize = 13; consumePower(3f); - consumeLiquid(Liquids.nitrogen, 24f / 60f); + consumeLiquid(Liquids.cyanogen, 6f / 60f); }}; //TODO requirements mechAssembler = new UnitAssembler("mech-assembler"){{ - requirements(Category.units, with(Items.carbide, 500, Items.thorium, 600, Items.oxide, 200, Items.tungsten, 500, Items.silicon, 900)); + requirements(Category.units, with(Items.carbide, 200, Items.thorium, 600, Items.oxide, 200, Items.tungsten, 500, Items.silicon, 900)); regionSuffix = "-dark"; size = 5; //TODO different reqs @@ -4344,12 +4342,12 @@ public class Blocks{ consumePower(3f); areaSize = 13; - consumeLiquid(Liquids.nitrogen, 24f / 60f); + consumeLiquid(Liquids.cyanogen, 9f / 60f); }}; //TODO requirements / only accept inputs basicAssemblerModule = new UnitAssemblerModule("basic-assembler-module"){{ - requirements(Category.units, with(Items.carbide, 300, Items.thorium, 500, Items.oxide, 200, Items.phaseFabric, 100)); + requirements(Category.units, with(Items.carbide, 300, Items.thorium, 500, Items.oxide, 200, Items.phaseFabric, 400)); consumePower(4f); regionSuffix = "-dark"; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 61aea6da74..094eb6dd38 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -106,9 +106,10 @@ public class ErekirTechTree{ //TODO further limitations node(payloadLoader, () -> { node(payloadUnloader, () -> { - node(payloadPropulsionTower, () -> { + //TODO replace. + //node(payloadPropulsionTower, () -> { - }); + //}); }); }); @@ -188,7 +189,7 @@ public class ErekirTechTree{ node(cliffCrusher, () -> { node(siliconArcFurnace, () -> { node(electrolyzer, Seq.with(new OnSector(three)), () -> { - node(oxidationChamber, Seq.with(new Research(refabricator), new OnSector(four)), () -> { + node(oxidationChamber, Seq.with(new Research(tankRefabricator), new OnSector(four)), () -> { node(electricHeater, Seq.with(new OnSector(four)), () -> { node(heatRedirector, () -> { @@ -201,14 +202,16 @@ public class ErekirTechTree{ }); node(carbideCrucible, Seq.with(tmpNever), () -> { - node(surgeCrucible, () -> { - node(phaseSynthesizer, () -> { - node(phaseHeater, () -> { + node(phaseSynthesizer, () -> { + node(phaseHeater, () -> { - }); }); }); }); + + node(surgeCrucible, () -> { + + }); }); }); @@ -241,6 +244,12 @@ public class ErekirTechTree{ }); }); + node(reinforcedSurgeWall, () -> { + node(reinforcedSurgeWallLarge, () -> { + + }); + }); + node(carbideWall, () -> { node(carbideWallLarge, () -> { @@ -275,55 +284,55 @@ public class ErekirTechTree{ }); node(tankFabricator, Seq.with(new Research(siliconArcFurnace), new Research(plasmaBore), new Research(turbineCondenser)), () -> { - node(UnitTypes.stell, () -> { - - }); + node(UnitTypes.stell); node(unitRepairTower, Seq.with(new OnSector(two)), () -> { }); node(shipFabricator, Seq.with(new OnSector(two)), () -> { - node(UnitTypes.elude, () -> { - - }); + node(UnitTypes.elude); node(mechFabricator, Seq.with(new OnSector(three)), () -> { - node(UnitTypes.merui, () -> { + node(UnitTypes.merui); - }); - - node(refabricator, Seq.with(new OnSector(three)), () -> { - node(UnitTypes.cleroi); - node(UnitTypes.avert); + node(tankRefabricator, Seq.with(new OnSector(three)), () -> { node(UnitTypes.locus); - //TODO - node(primeRefabricator, () -> { - node(UnitTypes.precept); - node(UnitTypes.anthicus); - node(UnitTypes.obviate); - }); + node(mechRefabricator, Seq.with(new OnSector(three)), () -> { + node(UnitTypes.cleroi); - node(tankAssembler, Seq.with(new OnSector(three), new Research(constructor), new Research(atmosphericConcentrator)), () -> { - - node(UnitTypes.vanquish, () -> { - node(UnitTypes.conquer, Seq.with(tmpNever), () -> { + node(shipRefabricator, Seq.with(new OnSector(four), tmpNever), () -> { + node(UnitTypes.avert); + //TODO + node(primeRefabricator, () -> { + node(UnitTypes.precept); + node(UnitTypes.anthicus); + node(UnitTypes.obviate); }); - }); - node(shipAssembler, Seq.with(new OnSector(four)), () -> { - node(UnitTypes.quell, () -> { - node(UnitTypes.disrupt, Seq.with(tmpNever), () -> { + node(tankAssembler, Seq.with(new OnSector(three), new Research(constructor), new Research(atmosphericConcentrator)), () -> { + node(UnitTypes.vanquish, () -> { + node(UnitTypes.conquer, Seq.with(tmpNever), () -> { + + }); }); - }); - node(mechAssembler, Seq.with(tmpNever), () -> { - node(UnitTypes.tecta, () -> { - node(UnitTypes.collaris, Seq.with(tmpNever), () -> { + node(shipAssembler, Seq.with(new OnSector(four)), () -> { + node(UnitTypes.quell, () -> { + node(UnitTypes.disrupt, Seq.with(tmpNever), () -> { + }); + }); + + node(mechAssembler, Seq.with(tmpNever), () -> { + node(UnitTypes.tecta, () -> { + node(UnitTypes.collaris, Seq.with(tmpNever), () -> { + + }); + }); }); }); }); @@ -387,9 +396,6 @@ public class ErekirTechTree{ }); nodeProduce(Liquids.gallium, () -> { - nodeProduce(Items.scrap, () -> { - - }); }); }); }); diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index af9036ae1e..23ac2198b1 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2640,7 +2640,7 @@ public class UnitTypes{ hitSize = 28f; treadPullOffset = 4; speed = 0.63f; - health = 9000; + health = 10000; armor = 20f; itemCapacity = 0; crushDamage = 13f / 5f; @@ -2734,7 +2734,7 @@ public class UnitTypes{ hitSize = 46f; treadPullOffset = 1; speed = 0.48f; - health = 20000; + health = 22000; armor = 25f; crushDamage = 25f / 5f; rotateSpeed = 0.8f; @@ -3701,7 +3701,7 @@ public class UnitTypes{ speed = 1.1f; rotateSpeed = 3.2f; accel = 0.1f; - health = 3000f; + health = 8000f; armor = 5f; hitSize = 36f; payloadCapacity = Mathf.sqr(3f) * tilePayload; @@ -3770,7 +3770,7 @@ public class UnitTypes{ speed = 1f; rotateSpeed = 2f; accel = 0.1f; - health = 10000f; + health = 12000f; armor = 7f; hitSize = 46f; payloadCapacity = Mathf.sqr(6f) * tilePayload; diff --git a/gradle.properties b/gradle.properties index 6a3b68fb5b..87869f1649 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,4 @@ org.gradle.caching=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=35479e2ea8 +archash=dfcb21ce56