diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index f7a3a6dcfe..9c4cb2f142 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -523,6 +523,7 @@ sectors.launch = Launch sectors.select = Select sectors.nonelaunch = [lightgray]none (sun) sectors.rename = Rename Sector +sector.missingresources = [scarlet]Insufficient Core Resources planet.serpulo.name = Serpulo #TODO better name diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 1ab4e13252..33b4a6bfd1 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -332,7 +332,7 @@ public class Blocks implements ContentList{ snowBoulder = new Boulder("snow-boulder"){{ variants = 2; - snow.asFloor().decoration = ice.asFloor().decoration = iceSnow.asFloor().decoration = this; + snow.asFloor().decoration = ice.asFloor().decoration = iceSnow.asFloor().decoration = salt.asFloor().decoration = this; }}; dirtWall = new StaticWall("dirt-wall"){{ diff --git a/core/src/mindustry/game/DefaultWaves.java b/core/src/mindustry/game/DefaultWaves.java index d33af5a41a..33570ba9a6 100644 --- a/core/src/mindustry/game/DefaultWaves.java +++ b/core/src/mindustry/game/DefaultWaves.java @@ -39,7 +39,7 @@ public class DefaultWaves{ unitScaling = 1.7f; spacing = 2; max = 4; - shieldScaling = 15f; + shieldScaling = 25f; }}, new SpawnGroup(pulsar){{ @@ -62,7 +62,7 @@ public class DefaultWaves{ unitScaling = 1; unitAmount = 4; spacing = 2; - shieldScaling = 10f; + shieldScaling = 20f; max = 14; }}, @@ -79,7 +79,8 @@ public class DefaultWaves{ spacing = 3; unitScaling = 1; max = 10; - shieldScaling = 10f; + shieldScaling = 30f; + shields = 100; effect = StatusEffects.overdrive; }}, @@ -178,7 +179,7 @@ public class DefaultWaves{ unitAmount = 2; unitScaling = 3; spacing = 4; - shieldScaling = 20; + shieldScaling = 30; }}, new SpawnGroup(atrax){{ @@ -186,7 +187,7 @@ public class DefaultWaves{ unitAmount = 4; unitScaling = 1; spacing = 3; - shieldScaling = 5f; + shieldScaling = 10f; }}, new SpawnGroup(scepter){{ @@ -194,7 +195,7 @@ public class DefaultWaves{ unitAmount = 1; unitScaling = 1; spacing = 30; - shieldScaling = 10f; + shieldScaling = 30f; }}, new SpawnGroup(reign){{ @@ -202,7 +203,7 @@ public class DefaultWaves{ unitAmount = 1; unitScaling = 1; spacing = 40; - shieldScaling = 20f; + shieldScaling = 30f; }}, new SpawnGroup(antumbra){{ @@ -210,7 +211,7 @@ public class DefaultWaves{ unitAmount = 1; unitScaling = 1; spacing = 40; - shieldScaling = 20f; + shieldScaling = 30f; }}, new SpawnGroup(vela){{ @@ -218,7 +219,7 @@ public class DefaultWaves{ unitAmount = 1; unitScaling = 1; spacing = 30; - shieldScaling = 20f; + shieldScaling = 30f; }}, new SpawnGroup(corvus){{ @@ -236,7 +237,7 @@ public class DefaultWaves{ unitScaling = 3; spacing = 4; shields = 40f; - shieldScaling = 20f; + shieldScaling = 30f; }}, new SpawnGroup(toxopid){{ @@ -252,12 +253,10 @@ public class DefaultWaves{ return spawns == null ? new Seq<>() : spawns; } - //TODO move elsewhere public static Seq generate(float difficulty){ return generate(new Rand(), difficulty); } - //TODO move elsewhere public static Seq generate(Rand rand, float difficulty){ UnitType[][] species = { {dagger, mace, fortress, scepter, reign}, diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index afe2e3182b..7e90fba3ff 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -293,7 +293,7 @@ public class BlockRenderer implements Disposable{ entity.drawLight(); }else if(tile.block().emitLight){ tile.block().drawEnvironmentLight(tile); - }else if(tile.floor().emitLight){ + }else if(tile.floor().emitLight && !tile.block().solid && world.getDarkness(tile.x, tile.y) < 3){ //only draw floor light under non-solid blocks tile.floor().drawEnvironmentLight(tile); } } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 7e2b5e9aaa..4c7bd49a4e 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -277,7 +277,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ //hotrock tweaks if(floor == Blocks.hotrock){ - if(rand.chance(0.3)){ + if(Math.abs(0.5f - noise(x - 90, y, 4, 0.8, 80)) > 0.035){ floor = Blocks.basalt; }else{ ore = Blocks.air; diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 42fac7be72..4d6a4483f9 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -134,7 +134,7 @@ public class CustomRulesDialog extends BaseDialog{ check("@rules.waves", b -> rules.waves = b, () -> rules.waves); check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer); check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies); - number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> true); + number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> true, 1, Float.MAX_VALUE); number("@rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> true); title("@rules.title.resourcesbuilding"); @@ -142,7 +142,7 @@ public class CustomRulesDialog extends BaseDialog{ check("@rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions); check("@rules.schematic", b-> rules.schematicsAllowed = b, () -> rules.schematicsAllowed); number("@rules.buildcostmultiplier", false, f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources); - number("@rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier); + number("@rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier, 0.00001f, 10000f); number("@rules.deconstructrefundmultiplier", false, f -> rules.deconstructRefundMultiplier = f, () -> rules.deconstructRefundMultiplier, () -> !rules.infiniteResources); number("@rules.blockhealthmultiplier", f -> rules.blockHealthMultiplier = f, () -> rules.blockHealthMultiplier); number("@rules.blockdamagemultiplier", f -> rules.blockDamageMultiplier = f, () -> rules.blockDamageMultiplier); @@ -162,7 +162,7 @@ public class CustomRulesDialog extends BaseDialog{ check("@rules.unitammo", b -> rules.unitAmmo = b, () -> rules.unitAmmo); number("@rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier); number("@rules.unitdamagemultiplier", f -> rules.unitDamageMultiplier = f, () -> rules.unitDamageMultiplier); - number("@rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier); + number("@rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier, 0.00001f, 100f); title("@rules.title.enemy"); check("@rules.attack", b -> rules.attackMode = b, () -> rules.attackMode); @@ -189,10 +189,22 @@ public class CustomRulesDialog extends BaseDialog{ } void number(String text, Floatc cons, Floatp prov){ - number(text, false, cons, prov, () -> true); + number(text, false, cons, prov, () -> true, 0, Float.MAX_VALUE); + } + + void number(String text, Floatc cons, Floatp prov, float min, float max){ + number(text, false, cons, prov, () -> true, min, max); } void number(String text, boolean integer, Floatc cons, Floatp prov, Boolp condition){ + number(text, integer, cons, prov, condition, 0, Float.MAX_VALUE); + } + + void number(String text, Floatc cons, Floatp prov, Boolp condition){ + number(text, false, cons, prov, condition, 0, Float.MAX_VALUE); + } + + void number(String text, boolean integer, Floatc cons, Floatp prov, Boolp condition, float min, float max){ main.table(t -> { t.left(); t.add(text).left().padRight(5) @@ -200,7 +212,7 @@ public class CustomRulesDialog extends BaseDialog{ t.field((integer ? (int)prov.get() : prov.get()) + "", s -> cons.get(Strings.parseFloat(s))) .padRight(100f) .update(a -> a.setDisabled(!condition.get())) - .valid(Strings::canParsePositiveFloat).width(120f).left().addInputDialog(); + .valid(f -> Strings.canParsePositiveFloat(f) && Strings.parseFloat(f) >= min && Strings.parseFloat(f) <= max).width(120f).left().addInputDialog(); }).padTop(0); main.row(); } diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index 62db818bf7..6cb50dbf36 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -120,6 +120,8 @@ public class LaunchLoadoutDialog extends BaseDialog{ cont.row(); cont.add(items); + cont.row(); + cont.add("@sector.missingresources").visible(() -> !valid); update.run(); rebuildItems.run();