mirror of
https://github.com/Anuken/Mindustry.git
synced 2026-01-21 20:12:20 -08:00
774 lines
32 KiB
Java
774 lines
32 KiB
Java
package mindustry.content;
|
|
|
|
import arc.struct.*;
|
|
import mindustry.game.Objectives.*;
|
|
import mindustry.type.*;
|
|
|
|
import static mindustry.content.Blocks.*;
|
|
import static mindustry.content.SectorPresets.craters;
|
|
import static mindustry.content.SectorPresets.*;
|
|
import static mindustry.content.TechTree.*;
|
|
import static mindustry.content.UnitTypes.*;
|
|
|
|
public class SerpuloTechTree{
|
|
|
|
public static void load(){
|
|
Planets.serpulo.techTree = nodeRoot("serpulo", coreShard, () -> {
|
|
|
|
node(conveyor, () -> {
|
|
node(junction, () -> {
|
|
node(router, () -> {
|
|
node(advancedLaunchPad, Seq.with(new SectorComplete(extractionOutpost)), () -> {
|
|
node(landingPad, () -> {
|
|
node(interplanetaryAccelerator, Seq.with(new SectorComplete(planetaryTerminal)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(distributor);
|
|
node(sorter, () -> {
|
|
node(invertedSorter);
|
|
node(overflowGate, () -> {
|
|
node(underflowGate);
|
|
});
|
|
});
|
|
node(container, Seq.with(new SectorComplete(biomassFacility)), () -> {
|
|
node(unloader);
|
|
node(vault, Seq.with(new SectorComplete(stainedMountains)), () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(itemBridge, () -> {
|
|
node(titaniumConveyor, Seq.with(new SectorComplete(craters)), () -> {
|
|
node(phaseConveyor, () -> {
|
|
node(massDriver, Seq.with(new SectorComplete(tarFields)), () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(payloadConveyor, () -> {
|
|
node(payloadRouter, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(armoredConveyor, () -> {
|
|
node(plastaniumConveyor, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(coreFoundation, () -> {
|
|
node(coreNucleus, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(mechanicalDrill, () -> {
|
|
node(mechanicalPump, () -> {
|
|
node(conduit, () -> {
|
|
node(liquidJunction, () -> {
|
|
node(liquidRouter, () -> {
|
|
node(liquidContainer, () -> {
|
|
node(liquidTank);
|
|
});
|
|
|
|
node(bridgeConduit);
|
|
|
|
node(pulseConduit, Seq.with(new SectorComplete(windsweptIslands)), () -> {
|
|
node(phaseConduit, () -> {
|
|
|
|
});
|
|
|
|
node(platedConduit, () -> {
|
|
|
|
});
|
|
|
|
node(rotaryPump, () -> {
|
|
node(impulsePump, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(graphitePress, () -> {
|
|
node(pneumaticDrill, Seq.with(new SectorComplete(frozenForest)), () -> {
|
|
node(cultivator, Seq.with(new SectorComplete(biomassFacility)), () -> {
|
|
|
|
});
|
|
|
|
node(laserDrill, () -> {
|
|
node(blastDrill, Seq.with(new SectorComplete(nuclearComplex)), () -> {
|
|
|
|
});
|
|
|
|
node(waterExtractor, Seq.with(new SectorComplete(saltFlats)), () -> {
|
|
node(oilExtractor, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(pyratiteMixer, () -> {
|
|
node(blastMixer, Seq.with(new SectorComplete(facility32m)), () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(siliconSmelter, Seq.with(new SectorComplete(frozenForest)), () -> {
|
|
|
|
node(sporePress, () -> {
|
|
node(coalCentrifuge, () -> {
|
|
node(multiPress, () -> {
|
|
node(siliconCrucible, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(plastaniumCompressor, Seq.with(new SectorComplete(windsweptIslands)), () -> {
|
|
node(phaseWeaver, Seq.with(new SectorComplete(impact0078)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(kiln, Seq.with(new OnSector(craters)), () -> {
|
|
node(pulverizer, () -> {
|
|
node(incinerator, () -> {
|
|
node(melter, () -> {
|
|
node(surgeSmelter, Seq.with(new SectorComplete(coastline)), () -> {
|
|
|
|
});
|
|
|
|
node(separator, () -> {
|
|
node(disassembler, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(cryofluidMixer, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(microProcessor, () -> {
|
|
node(switchBlock, () -> {
|
|
node(message, () -> {
|
|
node(logicDisplay, () -> {
|
|
node(largeLogicDisplay, () -> {
|
|
|
|
});
|
|
|
|
node(tileLogicDisplay, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(memoryCell, () -> {
|
|
node(memoryBank, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(logicProcessor, () -> {
|
|
node(hyperProcessor, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(illuminator, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
node(combustionGenerator, Seq.with(new Research(Items.coal)), () -> {
|
|
node(powerNode, () -> {
|
|
node(powerNodeLarge, () -> {
|
|
node(diode, () -> {
|
|
node(surgeTower, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(battery, () -> {
|
|
node(batteryLarge, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(mender, () -> {
|
|
node(mendProjector, () -> {
|
|
node(forceProjector, Seq.with(new SectorComplete(impact0078)), () -> {
|
|
node(overdriveProjector, Seq.with(new SectorComplete(impact0078)), () -> {
|
|
node(overdriveDome, Seq.with(new SectorComplete(desolateRift)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(repairPoint, () -> {
|
|
node(repairTurret, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(steamGenerator, Seq.with(new SectorComplete(craters)), () -> {
|
|
node(thermalGenerator, () -> {
|
|
node(differentialGenerator, () -> {
|
|
node(thoriumReactor, Seq.with(new Research(Liquids.cryofluid)), () -> {
|
|
node(impactReactor, () -> {
|
|
|
|
});
|
|
|
|
node(rtgGenerator, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(solarPanel, () -> {
|
|
node(largeSolarPanel, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(duo, () -> {
|
|
node(copperWall, () -> {
|
|
node(copperWallLarge, () -> {
|
|
node(scrapWall, () -> {
|
|
node(scrapWallLarge, () -> {
|
|
node(scrapWallHuge, () -> {
|
|
node(scrapWallGigantic);
|
|
});
|
|
});
|
|
});
|
|
|
|
node(titaniumWall, () -> {
|
|
node(titaniumWallLarge);
|
|
|
|
node(door, () -> {
|
|
node(doorLarge);
|
|
});
|
|
|
|
node(plastaniumWall, () -> {
|
|
node(plastaniumWallLarge, () -> {
|
|
|
|
});
|
|
});
|
|
node(thoriumWall, () -> {
|
|
node(thoriumWallLarge);
|
|
node(surgeWall, () -> {
|
|
node(surgeWallLarge);
|
|
node(phaseWall, () -> {
|
|
node(phaseWallLarge);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(scatter, () -> {
|
|
node(hail, Seq.with(new SectorComplete(craters)), () -> {
|
|
node(salvo, () -> {
|
|
node(swarmer, () -> {
|
|
node(cyclone, () -> {
|
|
node(spectre, Seq.with(new SectorComplete(nuclearComplex)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(ripple, () -> {
|
|
node(fuse, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(scorch, () -> {
|
|
node(arc, () -> {
|
|
node(wave, () -> {
|
|
node(parallax, () -> {
|
|
node(segment, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(tsunami, Seq.with(new SectorComplete(navalFortress)), () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(lancer, () -> {
|
|
node(meltdown, () -> {
|
|
node(foreshadow, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
node(shockMine, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(groundFactory, () -> {
|
|
|
|
node(dagger, () -> {
|
|
node(mace, () -> {
|
|
node(fortress, () -> {
|
|
node(scepter, () -> {
|
|
node(reign, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(nova, Seq.with(new SectorComplete(fungalPass)), () -> {
|
|
node(pulsar, () -> {
|
|
node(quasar, () -> {
|
|
node(vela, () -> {
|
|
node(corvus, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
//override research requirements to have graphite, not coal
|
|
node(crawler, ItemStack.with(Items.silicon, 400, Items.graphite, 400), () -> {
|
|
node(atrax, () -> {
|
|
node(spiroct, () -> {
|
|
node(arkyid, () -> {
|
|
node(toxopid, Seq.with(new SectorComplete(mycelialBastion)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(airFactory, () -> {
|
|
node(flare, () -> {
|
|
node(horizon, () -> {
|
|
node(zenith, () -> {
|
|
node(antumbra, () -> {
|
|
node(eclipse, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(mono, () -> {
|
|
node(poly, () -> {
|
|
node(mega, () -> {
|
|
node(quad, () -> {
|
|
node(oct, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(navalFactory, Seq.with(new OnSector(windsweptIslands)), () -> {
|
|
node(risso, () -> {
|
|
node(minke, () -> {
|
|
node(bryde, () -> {
|
|
node(sei, () -> {
|
|
node(omura, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(retusa, Seq.with(new SectorComplete(windsweptIslands)), () -> {
|
|
node(oxynoe, Seq.with(new SectorComplete(coastline)), () -> {
|
|
node(cyerce, () -> {
|
|
node(aegires, () -> {
|
|
node(navanax, Seq.with(new SectorComplete(navalFortress)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(additiveReconstructor, Seq.with(new SectorComplete(fungalPass)), () -> {
|
|
node(multiplicativeReconstructor, Seq.with(new SectorComplete(frontier)), () -> {
|
|
node(exponentialReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> {
|
|
node(tetrativeReconstructor, Seq.with(new SectorComplete(mycelialBastion)), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(groundZero, () -> {
|
|
node(frozenForest, Seq.with(
|
|
new SectorComplete(groundZero),
|
|
new Research(junction),
|
|
new Research(router)
|
|
), () -> {
|
|
node(craters, Seq.with(
|
|
new SectorComplete(frozenForest),
|
|
new Research(mender),
|
|
new Research(combustionGenerator)
|
|
), () -> {
|
|
|
|
node(ruinousShores, Seq.with(
|
|
new SectorComplete(craters),
|
|
new Research(graphitePress),
|
|
new Research(kiln),
|
|
new Research(mechanicalPump)
|
|
), () -> {
|
|
node(windsweptIslands, Seq.with(
|
|
new SectorComplete(ruinousShores),
|
|
new Research(pneumaticDrill),
|
|
new Research(hail),
|
|
new Research(siliconSmelter),
|
|
new Research(steamGenerator)
|
|
), () -> {
|
|
|
|
node(saltFlats, Seq.with(
|
|
new SectorComplete(windsweptIslands),
|
|
new SectorComplete(fungalPass),
|
|
new SectorComplete(frontier),
|
|
new Research(groundFactory),
|
|
new Research(additiveReconstructor),
|
|
new Research(airFactory),
|
|
new Research(door)
|
|
), () -> {
|
|
node(tarFields, Seq.with(
|
|
new SectorComplete(saltFlats),
|
|
new Research(coalCentrifuge),
|
|
new Research(conduit),
|
|
new Research(wave)
|
|
), () -> {
|
|
node(impact0078, Seq.with(
|
|
new SectorComplete(tarFields),
|
|
new Research(Items.thorium),
|
|
new Research(lancer),
|
|
new Research(salvo),
|
|
new Research(coreFoundation)
|
|
), () -> {
|
|
node(desolateRift, Seq.with(
|
|
new SectorComplete(impact0078),
|
|
new Research(thermalGenerator),
|
|
new Research(thoriumReactor),
|
|
new Research(coreNucleus)
|
|
), () -> {
|
|
node(planetaryTerminal, Seq.with(
|
|
new SectorComplete(desolateRift),
|
|
new SectorComplete(nuclearComplex),
|
|
new SectorComplete(overgrowth),
|
|
new SectorComplete(extractionOutpost),
|
|
new SectorComplete(saltFlats),
|
|
new Research(risso),
|
|
new Research(minke),
|
|
new Research(bryde),
|
|
new Research(sei),
|
|
new Research(omura),
|
|
new Research(spectre),
|
|
new Research(advancedLaunchPad),
|
|
new Research(massDriver),
|
|
new Research(impactReactor),
|
|
new Research(additiveReconstructor),
|
|
new Research(exponentialReconstructor),
|
|
new Research(tetrativeReconstructor)
|
|
), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(coastline, Seq.with(
|
|
new SectorComplete(tarFields),
|
|
new SectorComplete(saltFlats),
|
|
new Research(navalFactory),
|
|
new Research(payloadConveyor)
|
|
), () -> {
|
|
|
|
node(testingGrounds, Seq.with(
|
|
new SectorComplete(coastline),
|
|
new Research(cryofluidMixer),
|
|
new Research(Liquids.cryofluid),
|
|
new Research(waterExtractor),
|
|
new Research(ripple)
|
|
), () -> {
|
|
|
|
});
|
|
|
|
node(navalFortress, Seq.with(
|
|
new SectorComplete(coastline),
|
|
new SectorComplete(extractionOutpost),
|
|
new Research(coreNucleus),
|
|
new Research(massDriver),
|
|
new Research(oxynoe),
|
|
new Research(minke),
|
|
new Research(bryde),
|
|
new Research(cyclone),
|
|
new Research(ripple)
|
|
), () -> {
|
|
node(sunkenPier, Seq.with(
|
|
new SectorComplete(navalFortress),
|
|
new SectorComplete(coastline),
|
|
new Research(multiplicativeReconstructor)
|
|
), () -> {
|
|
|
|
});
|
|
|
|
node(weatheredChannels, Seq.with(
|
|
new SectorComplete(impact0078),
|
|
new SectorComplete(navalFortress),
|
|
new Research(bryde),
|
|
new Research(surgeSmelter),
|
|
new Research(overdriveProjector)
|
|
), () -> {
|
|
node(fallenVessel, Seq.with(
|
|
new SectorComplete(desolateRift),
|
|
new SectorComplete(mycelialBastion),
|
|
new Research(sei),
|
|
new Research(meltdown),
|
|
new Research(spectre)
|
|
), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
node(biomassFacility, Seq.with(
|
|
new SectorComplete(craters),
|
|
new Research(powerNode),
|
|
new Research(steamGenerator),
|
|
new Research(scatter),
|
|
new Research(graphitePress)
|
|
), () -> {
|
|
|
|
node(stainedMountains, Seq.with(
|
|
new SectorComplete(biomassFacility),
|
|
new Research(pneumaticDrill),
|
|
new Research(siliconSmelter)
|
|
), () -> {
|
|
|
|
node(facility32m, Seq.with(
|
|
new Research(plastaniumCompressor),
|
|
new Research(lancer),
|
|
new Research(salvo),
|
|
new SectorComplete(stainedMountains),
|
|
new SectorComplete(windsweptIslands)
|
|
), () -> {
|
|
|
|
});
|
|
|
|
node(infestedCanyons, Seq.with(
|
|
new SectorComplete(fungalPass),
|
|
new SectorComplete(frontier),
|
|
new Research(navalFactory),
|
|
new Research(risso),
|
|
new Research(minke),
|
|
new Research(additiveReconstructor)
|
|
), () -> {
|
|
node(nuclearComplex, Seq.with(
|
|
new SectorComplete(infestedCanyons),
|
|
new Research(thermalGenerator),
|
|
new Research(laserDrill),
|
|
new Research(Items.plastanium),
|
|
new Research(swarmer)
|
|
), () -> {
|
|
|
|
});
|
|
|
|
node(taintedWoods, Seq.with(
|
|
new SectorComplete(infestedCanyons),
|
|
new Research(Items.sporePod),
|
|
new Research(Items.plastanium),
|
|
new Research(wave)
|
|
), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(fungalPass, Seq.with(
|
|
new Research(groundFactory),
|
|
new Research(dagger)
|
|
), () -> {
|
|
node(frontier, Seq.with(
|
|
new SectorComplete(biomassFacility),
|
|
new SectorComplete(fungalPass),
|
|
new Research(groundFactory),
|
|
new Research(airFactory),
|
|
new Research(additiveReconstructor),
|
|
new Research(mace),
|
|
new Research(mono)
|
|
), () -> {
|
|
node(perilousHarbor, Seq.with(
|
|
new SectorComplete(biomassFacility),
|
|
new SectorComplete(frontier),
|
|
new Research(navalFactory),
|
|
new Research(risso),
|
|
new Research(retusa),
|
|
new Research(steamGenerator),
|
|
new Research(cultivator),
|
|
new Research(coalCentrifuge)
|
|
), () -> {
|
|
|
|
node(extractionOutpost, Seq.with(
|
|
new SectorComplete(windsweptIslands),
|
|
new SectorComplete(perilousHarbor),
|
|
new SectorComplete(facility32m),
|
|
|
|
new Research(multiplicativeReconstructor),
|
|
new Research(risso),
|
|
new Research(minke),
|
|
new Research(fortress)
|
|
), () -> {
|
|
node(atolls, Seq.with(
|
|
new SectorComplete(extractionOutpost),
|
|
new Research(poly),
|
|
new Research(mega)
|
|
), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
node(overgrowth, Seq.with(
|
|
new SectorComplete(frontier),
|
|
new SectorComplete(windsweptIslands),
|
|
new Research(multiplicativeReconstructor),
|
|
new Research(fortress),
|
|
new Research(ripple),
|
|
new Research(salvo),
|
|
new Research(cultivator),
|
|
new Research(sporePress)
|
|
), () -> {
|
|
node(mycelialBastion, Seq.with(
|
|
new Research(atrax),
|
|
new Research(spiroct),
|
|
new Research(arkyid),
|
|
new Research(multiplicativeReconstructor),
|
|
new Research(exponentialReconstructor)
|
|
), () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.copper, () -> {
|
|
nodeProduce(Liquids.water, () -> {
|
|
|
|
});
|
|
|
|
nodeProduce(Items.lead, () -> {
|
|
nodeProduce(Items.titanium, () -> {
|
|
nodeProduce(Liquids.cryofluid, () -> {
|
|
|
|
});
|
|
|
|
nodeProduce(Items.thorium, () -> {
|
|
nodeProduce(Items.surgeAlloy, () -> {
|
|
|
|
});
|
|
|
|
nodeProduce(Items.phaseFabric, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.metaglass, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.sand, () -> {
|
|
nodeProduce(Items.scrap, () -> {
|
|
nodeProduce(Liquids.slag, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.coal, () -> {
|
|
nodeProduce(Items.graphite, () -> {
|
|
nodeProduce(Items.silicon, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.pyratite, () -> {
|
|
nodeProduce(Items.blastCompound, () -> {
|
|
|
|
});
|
|
});
|
|
|
|
nodeProduce(Items.sporePod, () -> {
|
|
|
|
});
|
|
|
|
nodeProduce(Liquids.oil, () -> {
|
|
nodeProduce(Items.plastanium, () -> {
|
|
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|