Unspoiled

This commit is contained in:
Anuken
2021-06-02 11:15:30 -04:00
parent 28b235ef07
commit e9129e6f43
85 changed files with 645 additions and 20 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

View File

@ -1045,11 +1045,14 @@ item.blast-compound.name = Blast Compound
item.pyratite.name = Pyratite item.pyratite.name = Pyratite
item.metaglass.name = Metaglass item.metaglass.name = Metaglass
item.scrap.name = Scrap item.scrap.name = Scrap
item.fissile-matter.name = Fissile Matter
item.beryllium.name = Beryllium
liquid.water.name = Water liquid.water.name = Water
liquid.slag.name = Slag liquid.slag.name = Slag
liquid.oil.name = Oil liquid.oil.name = Oil
liquid.cryofluid.name = Cryofluid liquid.cryofluid.name = Cryofluid
liquid.neoplasm.name = Neoplasm
unit.dagger.name = Dagger unit.dagger.name = Dagger
unit.mace.name = Mace unit.mace.name = Mace

View File

@ -334,12 +334,34 @@
63399=blasted|status-blasted-ui 63399=blasted|status-blasted-ui
63398=corroded|status-corroded-ui 63398=corroded|status-corroded-ui
63397=disarmed|status-disarmed-ui 63397=disarmed|status-disarmed-ui
63396=rhyolite|block-rhyolite-ui
63395=rhyolite-crater|block-rhyolite-crater-ui
63394=regolith|block-regolith-ui
63393=yellow-stone|block-yellow-stone-ui
63392=redmat|block-redmat-ui
63391=bluemat|block-bluemat-ui
63390=beryl-wall|block-beryl-wall-ui
63389=redweed|block-redweed-ui
63388=pur-bush|block-pur-bush-ui
63387=yellowcoral|block-yellowcoral-ui
63386=coralchunk|block-coralchunk-ui
63385=duct|block-duct-ui 63385=duct|block-duct-ui
63384=beam-drill|block-beam-drill-ui
63383=beryllium|item-beryllium-ui
63382=fissile-matter|item-fissile-matter-ui
63381=neoplasm|liquid-neoplasm-ui
63380=cell-synthesis-chamber|block-cell-synthesis-chamber-ui
63379=nuclear-warhead|block-nuclear-warhead-ui
63378=warhead-assembler|block-warhead-assembler-ui
63377=ballistic-silo|block-ballistic-silo-ui
63376=repair-turret|block-repair-turret-ui 63376=repair-turret|block-repair-turret-ui
63375=payload-propulsion-tower|block-payload-propulsion-tower-ui 63375=payload-propulsion-tower|block-payload-propulsion-tower-ui
63374=payload-incinerator|block-payload-incinerator-ui 63374=payload-incinerator|block-payload-incinerator-ui
63373=payload-void|block-payload-void-ui 63373=payload-void|block-payload-void-ui
63372=payload-source|block-payload-source-ui 63372=payload-source|block-payload-source-ui
63371=regolith-wall|block-regolith-wall-ui
63370=rhyolite-wall|block-rhyolite-wall-ui
63369=yellow-stone-wall|block-yellow-stone-wall-ui
63368=retusa|unit-retusa-ui 63368=retusa|unit-retusa-ui
63367=directional-item-bridge|block-directional-item-bridge-ui 63367=directional-item-bridge|block-directional-item-bridge-ui
63366=duct-router|block-duct-router-ui 63366=duct-router|block-duct-router-ui
@ -349,5 +371,10 @@
63362=aegires|unit-aegires-ui 63362=aegires|unit-aegires-ui
63361=electrified|status-electrified-ui 63361=electrified|status-electrified-ui
63360=navanax|unit-navanax-ui 63360=navanax|unit-navanax-ui
63359=wall-ore-beryllium|block-wall-ore-beryllium-ui
63358=graphitic-stone|block-graphitic-stone-ui
63357=graphitic-wall|block-graphitic-wall-ui
63356=carbon-wall|block-carbon-wall-ui
63355=silicon-arc-smelter|block-silicon-arc-smelter-ui
63354=payload-launch-pad|block-payload-launch-pad-ui 63354=payload-launch-pad|block-payload-launch-pad-ui
63353=silicon-arc-furnace|block-silicon-arc-furnace-ui 63353=silicon-arc-furnace|block-silicon-arc-furnace-ui

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -37,8 +37,11 @@ public class Blocks implements ContentList{
//environment //environment
air, spawn, cliff, deepwater, water, taintedWater, tar, slag, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space, air, spawn, cliff, deepwater, water, taintedWater, tar, slag, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space,
dacite, dacite, rhyolite, rhyoliteCrater, regolith, yellowStone, redmat, bluemat,
stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster, stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster,
redweed, purbush, coralChunk, glowBlob, yellowCoral,
regolithWall, yellowStoneWall, rhyoliteWall, carbonWall,
graphiticStone,
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt, iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt,
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall, metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal, darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
@ -47,9 +50,14 @@ public class Blocks implements ContentList{
//ores //ores
oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium, oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium,
//wall ores
wallOreBeryl, graphiticWall,
berylWall, //TODO remove?
//crafting //crafting
siliconSmelter, siliconCrucible, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer, siliconSmelter, siliconCrucible, siliconArcFurnace, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer,
melter, separator, disassembler, sporePress, pulverizer, incinerator, coalCentrifuge, melter, separator, disassembler, sporePress, pulverizer, incinerator, coalCentrifuge,
cellSynthesisChamber,
//sandbox //sandbox
powerSource, powerVoid, itemSource, itemVoid, liquidSource, liquidVoid, payloadVoid, payloadSource, illuminator, powerSource, powerVoid, itemSource, itemVoid, liquidSource, liquidVoid, payloadVoid, payloadSource, illuminator,
@ -73,6 +81,7 @@ public class Blocks implements ContentList{
//production //production
mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator, mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
beamDrill,
//storage //storage
coreShard, coreFoundation, coreNucleus, vault, container, unloader, coreShard, coreFoundation, coreNucleus, vault, container, unloader,
@ -93,7 +102,10 @@ public class Blocks implements ContentList{
message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank,
//campaign //campaign
launchPad, interplanetaryAccelerator, launchPad, payloadLaunchPad, interplanetaryAccelerator,
//nuclear?
nuclearWarhead, warheadAssembler, ballisticSilo, //TODO
//misc experimental //misc experimental
blockForge, blockLoader, blockUnloader blockForge, blockLoader, blockUnloader
@ -278,6 +290,30 @@ public class Blocks implements ContentList{
dacite = new Floor("dacite"); dacite = new Floor("dacite");
rhyolite = new Floor("rhyolite"){{
attributes.set(Attribute.water, -1f);
}};
rhyoliteCrater = new Floor("rhyolite-crater"){{
attributes.set(Attribute.water, -1f);
blendGroup = rhyolite;
}};
regolith = new Floor("regolith"){{
attributes.set(Attribute.water, -1f);
}};
yellowStone = new Floor("yellow-stone"){{
attributes.set(Attribute.water, -1f);
}};
graphiticStone = new Floor("graphitic-stone"){{
variants = 4;
}};
redmat = new Floor("redmat");
bluemat = new Floor("bluemat");
grass = new Floor("grass"){{ grass = new Floor("grass"){{
attributes.set(Attribute.water, 0.1f); attributes.set(Attribute.water, 0.1f);
}}; }};
@ -339,6 +375,26 @@ public class Blocks implements ContentList{
basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this; basalt.asFloor().wall = darksandWater.asFloor().wall = darksandTaintedWater.asFloor().wall = this;
}}; }};
regolithWall = new StaticWall("regolith-wall"){{
variants = 2;
regolith.asFloor().wall = this;
}};
yellowStoneWall = new StaticWall("yellow-stone-wall"){{
variants = 2;
yellowStone.asFloor().wall = this;
}};
rhyoliteWall = new StaticWall("rhyolite-wall"){{
variants = 2;
rhyolite.asFloor().wall = rhyoliteCrater.asFloor().wall = this;
}};
carbonWall = new StaticWall("carbon-wall"){{
variants = 2;
graphiticStone.asFloor().wall = this;
}};
sandWall = new StaticWall("sand-wall"){{ sandWall = new StaticWall("sand-wall"){{
variants = 2; variants = 2;
sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this; sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this;
@ -372,6 +428,29 @@ public class Blocks implements ContentList{
variants = 3; variants = 3;
}}; }};
redweed = new Seaweed("redweed"){{
variants = 3;
}};
purbush = new SeaBush("pur-bush"){{
}};
yellowCoral = new SeaBush("yellowcoral"){{
lobesMin = 2;
lobesMax = 3;
magMax = 8f;
magMin = 2f;
origin = 0.3f;
spread = 40f;
sclMin = 60f;
sclMax = 100f;
}};
coralChunk = new StaticCoralWall("coralchunk"){{
}};
//glowBlob = new Prop("glowblob"){{ //glowBlob = new Prop("glowblob"){{
// variants = 1; // variants = 1;
//}}; //}};
@ -482,6 +561,20 @@ public class Blocks implements ContentList{
oreScale = 25.380953f; oreScale = 25.380953f;
}}; }};
//endregion
//region wall ore
wallOreBeryl = new WallOreBlock(Items.beryllium);
berylWall = new StaticWall("beryl-wall"){{
itemDrop = Items.beryllium;
}};
graphiticWall = new StaticWall("graphitic-wall"){{
itemDrop = Items.graphite;
variants = 3;
}};
//endregion //endregion
//region crafting //region crafting
@ -544,6 +637,24 @@ public class Blocks implements ContentList{
consumes.power(4f); consumes.power(4f);
}}; }};
//TODO
siliconArcFurnace = new GenericCrafter("silicon-arc-furnace"){{
requirements(Category.crafting, with(Items.thorium, 200, Items.metaglass, 120, Items.beryllium, 40, Items.silicon, 80));
craftEffect = Fx.none;
outputItem = new ItemStack(Items.silicon, 5);
craftTime = 40f;
size = 3;
hasPower = true;
hasLiquids = false;
envEnabled |= Env.space | Env.underwater;
itemCapacity = 30;
drawer = new DrawArcSmelter();
//TODO don't use sand?
consumes.items(with(Items.graphite, 1, Items.sand, 4));
consumes.power(6f);
}};
kiln = new GenericCrafter("kiln"){{ kiln = new GenericCrafter("kiln"){{
requirements(Category.crafting, with(Items.copper, 60, Items.graphite, 30, Items.lead, 30)); requirements(Category.crafting, with(Items.copper, 60, Items.graphite, 30, Items.lead, 30));
craftEffect = Fx.smeltsmoke; craftEffect = Fx.smeltsmoke;
@ -741,6 +852,35 @@ public class Blocks implements ContentList{
consumes.power(0.50f); consumes.power(0.50f);
}}; }};
cellSynthesisChamber = new LiquidConverter("cell-synthesis-chamber"){{
//TODO booster mechanics?
requirements(Category.crafting, with(Items.thorium, 100, Items.phaseFabric, 120, Items.titanium, 150, Items.surgeAlloy, 70));
outputLiquid = new LiquidStack(Liquids.neoplasm, 0.4f);
craftTime = 200f;
size = 3;
hasPower = true;
hasItems = true;
hasLiquids = true;
rotate = false;
solid = true;
outputsLiquid = true;
drawer = new DrawCells(){{
color = Color.valueOf("9e172c");
particleColorFrom = Color.valueOf("9e172c");
particleColorTo = Color.valueOf("f98f4a");
radius = 2.5f;
lifetime = 1400f;
recurrence = 2f;
particles = 20;
range = 3f;
}};
liquidCapacity = 30f;
consumes.power(2f);
consumes.items(with(Items.sporePod, 3, Items.phaseFabric, 1));
consumes.liquid(Liquids.water, 0.8f);
}};
//endregion //endregion
//region defense //region defense
@ -1033,17 +1173,17 @@ public class Blocks implements ContentList{
//special transport blocks //special transport blocks
duct = new Duct("duct"){{ duct = new Duct("duct"){{
requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 5, Items.copper, 5)); requirements(Category.distribution, with(Items.graphite, 5, Items.copper, 5));
speed = 5f; speed = 5f;
}}; }};
ductRouter = new DuctRouter("duct-router"){{ ductRouter = new DuctRouter("duct-router"){{
requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 10, Items.copper, 5)); requirements(Category.distribution, with(Items.graphite, 10, Items.copper, 5));
speed = 5f; speed = 5f;
}}; }};
ductBridge = new DuctBridge("duct-bridge"){{ ductBridge = new DuctBridge("duct-bridge"){{
requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 20, Items.copper, 15)); requirements(Category.distribution, with(Items.graphite, 20, Items.copper, 15));
}}; }};
//endregion //endregion
@ -1356,6 +1496,14 @@ public class Blocks implements ContentList{
consumes.liquid(Liquids.water, 0.15f); consumes.liquid(Liquids.water, 0.15f);
}}; }};
beamDrill = new BeamDrill("beam-drill"){{
requirements(Category.production, with(Items.copper, 150));
consumes.power(0.2f);
tier = 4;
size = 2;
range = 4;
}};
//endregion //endregion
//region storage //region storage
@ -2121,6 +2269,15 @@ public class Blocks implements ContentList{
consumes.power(4f); consumes.power(4f);
}}; }};
//TODO
payloadLaunchPad = new PayloadLaunchPad("payload-launch-pad"){{
requirements(Category.units, BuildVisibility.debugOnly, ItemStack.with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75));
size = 5;
launchTime = 60f;
hasPower = true;
consumes.power(7f);
}};
interplanetaryAccelerator = new Accelerator("interplanetary-accelerator"){{ interplanetaryAccelerator = new Accelerator("interplanetary-accelerator"){{
requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.copper, 16000, Items.silicon, 11000, Items.thorium, 13000, Items.titanium, 12000, Items.surgeAlloy, 6000, Items.phaseFabric, 5000)); requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.copper, 16000, Items.silicon, 11000, Items.thorium, 13000, Items.titanium, 12000, Items.surgeAlloy, 6000, Items.phaseFabric, 5000));
researchCostMultiplier = 0.1f; researchCostMultiplier = 0.1f;
@ -2131,6 +2288,23 @@ public class Blocks implements ContentList{
health = size * size * 80; health = size * size * 80;
}}; }};
nuclearWarhead = new NuclearWarhead("nuclear-warhead"){{
requirements(Category.crafting, BuildVisibility.debugOnly, with(Items.thorium, 40));
size = 2;
}};
warheadAssembler = new SingleBlockProducer("warhead-assembler"){{
requirements(Category.crafting, BuildVisibility.debugOnly, with(Items.thorium, 100));
result = nuclearWarhead;
size = 3;
buildSpeed = 0.3f;
}};
ballisticSilo = new BallisticSilo("ballistic-silo"){{
requirements(Category.crafting, BuildVisibility.debugOnly, with(Items.thorium, 100));
size = 5;
}};
//endregion campaign //endregion campaign
//region logic //region logic

View File

@ -7,7 +7,8 @@ import mindustry.type.*;
public class Items implements ContentList{ public class Items implements ContentList{
public static Item public static Item
scrap, copper, lead, graphite, coal, titanium, thorium, silicon, plastanium, scrap, copper, lead, graphite, coal, titanium, thorium, silicon, plastanium,
phaseFabric, surgeAlloy, sporePod, sand, blastCompound, pyratite, metaglass; phaseFabric, surgeAlloy, sporePod, sand, blastCompound, pyratite, metaglass,
beryllium, fissileMatter;
@Override @Override
public void load(){ public void load(){
@ -91,5 +92,15 @@ public class Items implements ContentList{
flammability = 1.4f; flammability = 1.4f;
explosiveness = 0.4f; explosiveness = 0.4f;
}}; }};
beryllium = new Item("beryllium", Color.valueOf("3a8f64")){{
hardness = 4;
cost = 1.3f;
}};
fissileMatter = new Item("fissile-matter", Color.valueOf("536631")){{
hardness = 4;
radioactivity = 1.5f;
}};
} }
} }

View File

@ -5,7 +5,7 @@ import mindustry.ctype.*;
import mindustry.type.*; import mindustry.type.*;
public class Liquids implements ContentList{ public class Liquids implements ContentList{
public static Liquid water, slag, oil, cryofluid; public static Liquid water, slag, oil, cryofluid, neoplasm, rovazide;
@Override @Override
public void load(){ public void load(){
@ -38,5 +38,17 @@ public class Liquids implements ContentList{
effect = StatusEffects.freezing; effect = StatusEffects.freezing;
lightColor = Color.valueOf("0097f5").a(0.2f); lightColor = Color.valueOf("0097f5").a(0.2f);
}}; }};
neoplasm = new Liquid("neoplasm", Color.valueOf("e05438")){{
heatCapacity = 0.4f;
temperature = 0.54f;
viscosity = 0.65f;
flammability = 0.1f;
}};
//rovazide = new Liquid("rovafuel", Color.valueOf("9dde68")){{
// flammability = 1.5f;
// explosiveness = 3f;
//}};
} }
} }

View File

@ -9,6 +9,8 @@ import mindustry.type.*;
public class Planets implements ContentList{ public class Planets implements ContentList{
public static Planet public static Planet
sun, sun,
erekir,
tantros,
serpulo; serpulo;
@Override @Override
@ -30,6 +32,25 @@ public class Planets implements ContentList{
); );
}}; }};
erekir = new Planet("erekir", sun, 2, 1){{
generator = new ErekirPlanetGenerator();
meshLoader = () -> new HexMesh(this, 4);
atmosphereColor = Color.valueOf("f07218");
startSector = 10;
atmosphereRadIn = 0.02f;
atmosphereRadOut = 0.3f;
tidalLock = true;
}};
tantros = new Planet("tantros", sun, 2, 1){{
generator = new TantrosPlanetGenerator();
meshLoader = () -> new HexMesh(this, 4);
atmosphereColor = Color.valueOf("3db899");
startSector = 10;
atmosphereRadIn = -0.01f;
atmosphereRadOut = 0.3f;
}};
serpulo = new Planet("serpulo", sun, 3, 1){{ serpulo = new Planet("serpulo", sun, 3, 1){{
generator = new SerpuloPlanetGenerator(); generator = new SerpuloPlanetGenerator();
meshLoader = () -> new HexMesh(this, 6); meshLoader = () -> new HexMesh(this, 6);

View File

@ -1,8 +1,95 @@
package mindustry.graphics; package mindustry.graphics;
import arc.*;
import arc.graphics.*;
import arc.graphics.Texture.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import mindustry.type.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class EnvRenderers{ public class EnvRenderers{
public static void init(){ public static void init(){
Color waterColor = Color.valueOf("353982");
Rand rand = new Rand();
Core.assets.load("sprites/rays.png", Texture.class).loaded = t -> {
((Texture)t).setFilter(TextureFilter.linear);
};
renderer.addEnvRenderer(Env.underwater, () -> {
Draw.draw(Layer.light + 1, () -> {
Draw.color(waterColor, 0.4f);
Fill.rect(Core.camera.position.x, Core.camera.position.y, Core.camera.width, Core.camera.height);
Draw.reset();
Blending.additive.apply();
Draw.blit(Shaders.caustics);
Blending.normal.apply();
});
Draw.z(Layer.light + 2);
int rays = 50;
float timeScale = 2000f;
rand.setSeed(0);
Draw.blend(Blending.additive);
float t = Time.time / timeScale;
Texture tex = Core.assets.get("sprites/rays.png", Texture.class);
for(int i = 0; i < rays; i++){
float offset = rand.random(0f, 1f);
float time = t + offset;
int pos = (int)time;
float life = time % 1f;
float opacity = rand.random(0.2f, 0.7f) * Mathf.slope(life) * 0.7f;
float x = (rand.random(0f, world.unitWidth()) + (pos % 100)*753) % world.unitWidth();
float y = (rand.random(0f, world.unitHeight()) + (pos % 120)*453) % world.unitHeight();
float rot = rand.range(7f);
float sizeScale = 1f + rand.range(0.3f);
float topDst = (Core.camera.position.y + Core.camera.height/2f) - (y + tex.height/2f + tex.height*1.9f*sizeScale/2f);
float invDst = topDst/1000f;
opacity = Math.min(opacity, -invDst);
if(opacity > 0.01){
Draw.alpha(opacity);
Draw.rect(Draw.wrap(tex), x, y + tex.height/2f, tex.width*2*sizeScale, tex.height*2*sizeScale, rot);
Draw.color();
} }
} }
Draw.blend();
});
Core.assets.load("sprites/distortAlpha.png", Texture.class);
renderer.addEnvRenderer(Env.scorching, () -> {
Texture tex = Core.assets.get("sprites/distortAlpha.png", Texture.class);
if(tex.getMagFilter() != TextureFilter.linear){
tex.setFilter(TextureFilter.linear);
tex.setWrap(TextureWrap.repeat);
}
//Draw.z(Layer.weather);
Draw.z(layer);
Weather.drawNoiseLayers(tex, scorchColor, scl, alpha, speed, 1f, 1f, 0f,
layers, speedl, alphal, lscl, colorl);
Draw.reset();
});
}
public static Color scorchColor = Color.scarlet;
public static float scl = 1000f, lscl = 0.8f, alpha = 0.2f, speed = 0.4f, speedl = -1.3f, colorl = 0.9f, alphal = 0.7f;
public static int layers = 4;
public static float layer = Layer.weather - 1;
}

View File

@ -0,0 +1,181 @@
package mindustry.maps.planet;
import arc.graphics.*;
import arc.math.*;
import arc.math.geom.*;
import arc.util.*;
import arc.util.noise.*;
import mindustry.*;
import mindustry.ai.*;
import mindustry.content.*;
import mindustry.game.*;
import mindustry.maps.generators.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class ErekirPlanetGenerator extends PlanetGenerator{
RidgedPerlin rid = new RidgedPerlin(1, 2);
RidgedPerlin crid = new RidgedPerlin(2, 3);
public float scl = 2f;
public float heightScl = 1f, octaves = 8, persistence = 0.7f, heightPow = 3f, heightMult = 1.5f;
Block[][] arr = {
{Blocks.regolith, Blocks.regolith, Blocks.yellowStone, Blocks.rhyolite, Blocks.basalt}
};
{
noise.setSeed(2);
}
@Override
public void generateSector(Sector sector){
//no bases right now
}
@Override
public float getHeight(Vec3 position){
return Mathf.pow(rawHeight(position), heightPow) * heightMult;
}
@Override
public Color getColor(Vec3 position){
Block block = getBlock(position);
return Tmp.c1.set(block.mapColor).a(1f - block.albedo);
}
@Override
public float getSizeScl(){
return 2000;
}
float rawHeight(Vec3 position){
return (float)noise.octaveNoise3D(octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z);
}
float rawTemp(Vec3 position){
return position.dst(0, 0, 1)*2.2f - (float)noise.octaveNoise3D(8, 0.54f, 1.4f, 10f + position.x, 10f + position.y, 10f + position.z) * 2.9f;
}
Block getBlock(Vec3 position){
float ice = rawTemp(position);
float height = rawHeight(position);
Tmp.v31.set(position);
position = Tmp.v33.set(position).scl(scl);
float temp = (float)noise.octaveNoise3D(8, 0.6, 1f/2f, 10f + position.x, 10f + position.y + 99f, 10f + position.z);
height *= 1.2f;
height = Mathf.clamp(height);
Block result = arr[Mathf.clamp((int)(temp * arr.length), 0, arr[0].length - 1)][Mathf.clamp((int)(height * arr[0].length), 0, arr[0].length - 1)];
if(ice < 0.6){
if(result == Blocks.rhyolite || result == Blocks.yellowStone || result == Blocks.regolith){
return Blocks.ice;
}
}
return result;
}
@Override
public void genTile(Vec3 position, TileGen tile){
tile.floor = getBlock(position);
if(tile.floor == Blocks.rhyolite && rand.chance(0.01)){
tile.floor = Blocks.rhyoliteCrater;
}
tile.block = tile.floor.asFloor().wall;
if(rid.getValue(position.x, position.y, position.z, 25) > 0.2){
tile.block = Blocks.air;
}
if(crid.getValue(position.x, position.y + 4f, position.z, 7f) > 0.7){
tile.floor = Blocks.graphiticStone;
}
}
@Override
protected void generate(){
float temp = rawTemp(sector.tile.v);
if(temp > 0.7){
pass((x, y) -> {
if(floor != Blocks.ice){
float noise = noise(x + 782, y, 7, 0.8f, 310f, 1f);
if(noise > 0.67f){
if(noise > 0.72f){
floor = Blocks.slag;
}else{
floor = Blocks.yellowStone;
}
ore = Blocks.air;
}
}
});
}
cells(4);
float length = width/3f;
Vec2 trns = Tmp.v1.trns(rand.random(360f), length);
int
spawnX = (int)(trns.x + width/2f), spawnY = (int)(trns.y + height/2f),
endX = (int)(-trns.x + width/2f), endY = (int)(-trns.y + height/2f);
float maxd = Mathf.dst(width/2f, height/2f);
erase(spawnX, spawnY, 15);
brush(pathfind(spawnX, spawnY, endX, endY, tile -> (tile.solid() ? 300f : 0f) + maxd - tile.dst(width/2f, height/2f)/10f, Astar.manhattan), 7);
distort(10f, 12f);
distort(5f, 7f);
pass((x, y) -> {
float max = 0;
for(Point2 p : Geometry.d8){
max = Math.max(max, world.getDarkness(x + p.x, y + p.y));
}
if(max > 0){
block = floor.asFloor().wall;
if(block == Blocks.air) block = Blocks.yellowStoneWall;
}
});
inverseFloodFill(tiles.getn(spawnX, spawnY));
tiles.getn(endX, endY).setOverlay(Blocks.spawn);
tech(Blocks.darkPanel3, Blocks.darkPanel5, Blocks.darkMetal);
//ores
pass((x, y) -> {
if(block != Blocks.air){
boolean empty = false;
for(Point2 p : Geometry.d8){
Tile other = tiles.get(x + p.x, y + p.y);
if(other != null && other.block() == Blocks.air){
empty = true;
break;
}
}
if(empty && noise(x + 78, y, 4, 0.7f, 35f, 1f) > 0.67f && block == Blocks.carbonWall){
block = Blocks.graphiticWall;
}else if(empty && noise(x + 782, y, 4, 0.8f, 40f, 1f) > 0.7f && block != Blocks.carbonWall){
ore = Blocks.wallOreBeryl;
}
}
});
Vars.state.rules.environment = Env.scorching | Env.terrestrial;
Schematics.placeLaunchLoadout(spawnX, spawnY);
}
}

View File

@ -0,0 +1,111 @@
package mindustry.maps.planet;
import arc.graphics.*;
import arc.math.*;
import arc.math.geom.*;
import arc.util.*;
import mindustry.*;
import mindustry.content.*;
import mindustry.game.*;
import mindustry.maps.generators.*;
import mindustry.type.*;
import mindustry.type.Weather.*;
import mindustry.world.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class TantrosPlanetGenerator extends PlanetGenerator{
Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"), out = new Color();
Block[][] arr = {
{Blocks.redmat, Blocks.redmat, Blocks.darksand, Blocks.bluemat, Blocks.bluemat}
};
{
noise.setSeed(1);
}
@Override
public void generateSector(Sector sector){
//no bases
}
@Override
public float getHeight(Vec3 position){
return 0;
}
@Override
public Color getColor(Vec3 position){
float depth = (float)noise.octaveNoise3D(2, 0.56, 1.7f, position.x, position.y, position.z) / 2f;
return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(0.6f);
}
@Override
public float getSizeScl(){
return 2000;
}
@Override
public void addWeather(Sector sector, Rules rules){
rules.weather.and(new WeatherEntry(Weathers.suspendParticles)).peek().always = true;
}
@Override
public void genTile(Vec3 position, TileGen tile){
tile.floor = getBlock(position);
if(tile.floor == Blocks.redmat && rand.chance(0.1)){
tile.block = Blocks.redweed;
}
if(tile.floor == Blocks.bluemat && rand.chance(0.03)){
tile.block = Blocks.purbush;
}
if(tile.floor == Blocks.bluemat && rand.chance(0.002)){
tile.block = Blocks.yellowCoral;
}
}
@Override
protected void generate(){
pass((x, y) -> {
float max = 0;
for(Point2 p : Geometry.d8){
max = Math.max(max, world.getDarkness(x + p.x, y + p.y));
}
if(max > 0){
block = floor.asFloor().wall;
}
if(noise(x, y, 40f, 1f) > 0.9){
//block = Blocks.coralChunk;
}
});
Schematics.placeLaunchLoadout(width / 2, height / 2);
Vars.state.rules.environment = Env.underwater;
state.rules.canGameOver = false;
}
float rawHeight(Vec3 position){
return (float)noise.octaveNoise3D(8, 0.7f, 1f, position.x, position.y, position.z);
}
Block getBlock(Vec3 position){
float height = rawHeight(position);
Tmp.v31.set(position);
position = Tmp.v33.set(position).scl(2f);
float temp = (float)noise.octaveNoise3D(8, 0.6, 1f/2f, position.x, position.y + 99f, position.z);
height *= 1.2f;
height = Mathf.clamp(height);
//float tar = (float)noise.octaveNoise3D(4, 0.55f, 1f/2f, position.x, position.y + 999f, position.z) * 0.3f + Tmp.v31.dst(0, 0, 1f) * 0.2f;
return arr[Mathf.clamp((int)(temp * arr.length), 0, arr[0].length - 1)][Mathf.clamp((int)(height * arr[0].length), 0, arr[0].length - 1)];
}
}

View File

@ -1,8 +1,6 @@
package mindustry.mod; package mindustry.mod;
import arc.struct.*; import arc.struct.*;
import mindustry.world.blocks.environment.*;
/** Generated class. Maps simple class names to concrete classes. For use in JSON mods. */ /** Generated class. Maps simple class names to concrete classes. For use in JSON mods. */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class ClassMap{ public class ClassMap{
@ -173,11 +171,11 @@ public class ClassMap{
classes.put("OreBlock", mindustry.world.blocks.environment.OreBlock.class); classes.put("OreBlock", mindustry.world.blocks.environment.OreBlock.class);
classes.put("OverlayFloor", mindustry.world.blocks.environment.OverlayFloor.class); classes.put("OverlayFloor", mindustry.world.blocks.environment.OverlayFloor.class);
classes.put("Prop", mindustry.world.blocks.environment.Prop.class); classes.put("Prop", mindustry.world.blocks.environment.Prop.class);
classes.put("Bush", Bush.class); classes.put("SeaBush", mindustry.world.blocks.environment.SeaBush.class);
classes.put("WavingProp", WavingProp.class); classes.put("Seaweed", mindustry.world.blocks.environment.Seaweed.class);
classes.put("ShallowLiquid", mindustry.world.blocks.environment.ShallowLiquid.class); classes.put("ShallowLiquid", mindustry.world.blocks.environment.ShallowLiquid.class);
classes.put("SpawnBlock", mindustry.world.blocks.environment.SpawnBlock.class); classes.put("SpawnBlock", mindustry.world.blocks.environment.SpawnBlock.class);
classes.put("StaticClusterWall", StaticClusterWall.class); classes.put("StaticCoralWall", mindustry.world.blocks.environment.StaticCoralWall.class);
classes.put("StaticTree", mindustry.world.blocks.environment.StaticTree.class); classes.put("StaticTree", mindustry.world.blocks.environment.StaticTree.class);
classes.put("StaticWall", mindustry.world.blocks.environment.StaticWall.class); classes.put("StaticWall", mindustry.world.blocks.environment.StaticWall.class);
classes.put("TreeBlock", mindustry.world.blocks.environment.TreeBlock.class); classes.put("TreeBlock", mindustry.world.blocks.environment.TreeBlock.class);

View File

@ -6,7 +6,7 @@ import arc.util.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.world.*; import mindustry.world.*;
public class Bush extends Prop{ public class SeaBush extends Prop{
public @Load(value = "@-bot", fallback = "@") TextureRegion botRegion; public @Load(value = "@-bot", fallback = "@") TextureRegion botRegion;
public @Load(value = "@-center") TextureRegion centerRegion; public @Load(value = "@-center") TextureRegion centerRegion;
@ -16,7 +16,7 @@ public class Bush extends Prop{
static Rand rand = new Rand(); static Rand rand = new Rand();
public Bush(String name){ public SeaBush(String name){
super(name); super(name);
variants = 0; variants = 0;
} }

View File

@ -5,9 +5,9 @@ import arc.math.*;
import arc.util.*; import arc.util.*;
import mindustry.world.*; import mindustry.world.*;
public class WavingProp extends Prop{ public class Seaweed extends Prop{
public WavingProp(String name){ public Seaweed(String name){
super(name); super(name);
} }

View File

@ -5,10 +5,10 @@ import arc.math.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.world.*; import mindustry.world.*;
public class StaticClusterWall extends StaticWall{ public class StaticCoralWall extends StaticWall{
public @Load(value = "@-cluster#", length = 1) TextureRegion[] clusters; public @Load(value = "@-cluster#", length = 1) TextureRegion[] clusters;
public StaticClusterWall(String name){ public StaticCoralWall(String name){
super(name); super(name);
variants = 1; variants = 1;
} }

View File

@ -8,4 +8,4 @@ kapt.use.worker.api=true
kapt.include.compile.classpath=false kapt.include.compile.classpath=false
# I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues # I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues
kotlin.stdlib.default.dependency=false kotlin.stdlib.default.dependency=false
archash=5364d0187882a5e2f09850fe2505608dd7cf93f3 archash=4db7abe679c53dbcef400b65da75247ffa6334d3