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.metaglass.name = Metaglass
item.scrap.name = Scrap
item.fissile-matter.name = Fissile Matter
item.beryllium.name = Beryllium
liquid.water.name = Water
liquid.slag.name = Slag
liquid.oil.name = Oil
liquid.cryofluid.name = Cryofluid
liquid.neoplasm.name = Neoplasm
unit.dagger.name = Dagger
unit.mace.name = Mace

View File

@ -334,12 +334,34 @@
63399=blasted|status-blasted-ui
63398=corroded|status-corroded-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
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
63375=payload-propulsion-tower|block-payload-propulsion-tower-ui
63374=payload-incinerator|block-payload-incinerator-ui
63373=payload-void|block-payload-void-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
63367=directional-item-bridge|block-directional-item-bridge-ui
63366=duct-router|block-duct-router-ui
@ -349,5 +371,10 @@
63362=aegires|unit-aegires-ui
63361=electrified|status-electrified-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
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
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,
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,
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
@ -47,9 +50,14 @@ public class Blocks implements ContentList{
//ores
oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium,
//wall ores
wallOreBeryl, graphiticWall,
berylWall, //TODO remove?
//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,
cellSynthesisChamber,
//sandbox
powerSource, powerVoid, itemSource, itemVoid, liquidSource, liquidVoid, payloadVoid, payloadSource, illuminator,
@ -73,6 +81,7 @@ public class Blocks implements ContentList{
//production
mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
beamDrill,
//storage
coreShard, coreFoundation, coreNucleus, vault, container, unloader,
@ -93,7 +102,10 @@ public class Blocks implements ContentList{
message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank,
//campaign
launchPad, interplanetaryAccelerator,
launchPad, payloadLaunchPad, interplanetaryAccelerator,
//nuclear?
nuclearWarhead, warheadAssembler, ballisticSilo, //TODO
//misc experimental
blockForge, blockLoader, blockUnloader
@ -278,6 +290,30 @@ public class Blocks implements ContentList{
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"){{
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;
}};
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"){{
variants = 2;
sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this;
@ -372,6 +428,29 @@ public class Blocks implements ContentList{
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"){{
// variants = 1;
//}};
@ -482,6 +561,20 @@ public class Blocks implements ContentList{
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
//region crafting
@ -544,6 +637,24 @@ public class Blocks implements ContentList{
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"){{
requirements(Category.crafting, with(Items.copper, 60, Items.graphite, 30, Items.lead, 30));
craftEffect = Fx.smeltsmoke;
@ -741,6 +852,35 @@ public class Blocks implements ContentList{
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
//region defense
@ -1033,17 +1173,17 @@ public class Blocks implements ContentList{
//special transport blocks
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;
}};
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;
}};
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
@ -1356,6 +1496,14 @@ public class Blocks implements ContentList{
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
//region storage
@ -2121,6 +2269,15 @@ public class Blocks implements ContentList{
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"){{
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;
@ -2131,6 +2288,23 @@ public class Blocks implements ContentList{
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
//region logic

View File

@ -7,7 +7,8 @@ import mindustry.type.*;
public class Items implements ContentList{
public static Item
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
public void load(){
@ -91,5 +92,15 @@ public class Items implements ContentList{
flammability = 1.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.*;
public class Liquids implements ContentList{
public static Liquid water, slag, oil, cryofluid;
public static Liquid water, slag, oil, cryofluid, neoplasm, rovazide;
@Override
public void load(){
@ -38,5 +38,17 @@ public class Liquids implements ContentList{
effect = StatusEffects.freezing;
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 static Planet
sun,
erekir,
tantros,
serpulo;
@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){{
generator = new SerpuloPlanetGenerator();
meshLoader = () -> new HexMesh(this, 6);

View File

@ -1,8 +1,95 @@
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 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;
import arc.struct.*;
import mindustry.world.blocks.environment.*;
/** Generated class. Maps simple class names to concrete classes. For use in JSON mods. */
@SuppressWarnings("deprecation")
public class ClassMap{
@ -173,11 +171,11 @@ public class ClassMap{
classes.put("OreBlock", mindustry.world.blocks.environment.OreBlock.class);
classes.put("OverlayFloor", mindustry.world.blocks.environment.OverlayFloor.class);
classes.put("Prop", mindustry.world.blocks.environment.Prop.class);
classes.put("Bush", Bush.class);
classes.put("WavingProp", WavingProp.class);
classes.put("SeaBush", mindustry.world.blocks.environment.SeaBush.class);
classes.put("Seaweed", mindustry.world.blocks.environment.Seaweed.class);
classes.put("ShallowLiquid", mindustry.world.blocks.environment.ShallowLiquid.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("StaticWall", mindustry.world.blocks.environment.StaticWall.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.world.*;
public class Bush extends Prop{
public class SeaBush extends Prop{
public @Load(value = "@-bot", fallback = "@") TextureRegion botRegion;
public @Load(value = "@-center") TextureRegion centerRegion;
@ -16,7 +16,7 @@ public class Bush extends Prop{
static Rand rand = new Rand();
public Bush(String name){
public SeaBush(String name){
super(name);
variants = 0;
}

View File

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

View File

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

View File

@ -8,4 +8,4 @@ kapt.use.worker.api=true
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
kotlin.stdlib.default.dependency=false
archash=5364d0187882a5e2f09850fe2505608dd7cf93f3
archash=4db7abe679c53dbcef400b65da75247ffa6334d3