From 455e3188c492a85c8839c1115625e98aba8c9824 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 22 Nov 2020 14:45:43 -0500 Subject: [PATCH] More concentrated enemy bases --- core/assets/bundles/bundle.properties | 1 - core/src/mindustry/game/Universe.java | 2 +- .../maps/planet/SerpuloPlanetGenerator.java | 43 ++++++++++++++++++- core/src/mindustry/mod/Mods.java | 2 +- .../ui/dialogs/SettingsMenuDialog.java | 2 - .../ui/fragments/PlacementFragment.java | 2 +- .../blocks/defense/turrets/ItemTurret.java | 4 +- 7 files changed, 46 insertions(+), 10 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ba2ea894e8..a22227f927 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -805,7 +805,6 @@ setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.sensitivity.name = Controller Sensitivity setting.saveinterval.name = Save Interval setting.seconds = {0} seconds -setting.blockselecttimeout.name = Block Select Timeout setting.milliseconds = {0} milliseconds setting.fullscreen.name = Fullscreen setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required) diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 5d0e106e44..1b0b1fc10b 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -215,7 +215,7 @@ public class Universe{ //queue random invasions if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){ //invasion chance depends on # of nearby bases - if(Mathf.chance(baseInvasionChance * sector.near().count(Sector::hasEnemyBase))){ + if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){ int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 5) * 5; //assign invasion-related things diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 08db3f0cca..e1b4eff797 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -10,7 +10,9 @@ import mindustry.ai.*; import mindustry.ai.BaseRegistry.*; import mindustry.content.*; import mindustry.game.*; +import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.maps.generators.*; +import mindustry.type.*; import mindustry.world.*; import static mindustry.Vars.*; @@ -59,6 +61,43 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ return (Mathf.pow((float)noise.octaveNoise3D(7, 0.5f, 1f/3f, position.x, position.y, position.z), 2.3f) + waterOffset) / (1f + waterOffset); } + @Override + public void generateSector(Sector sector){ + + //these always have bases + if(sector.id == 154 || sector.id == 0){ + sector.generateEnemyBase = true; + return; + } + + Ptile tile = sector.tile; + + boolean any = false; + float poles = Math.abs(tile.v.y); + float noise = Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 0.001f, 0.58f); + + if(noise + poles/7 > 0.12 && poles > 0.23){ + any = true; + } + + if(noise < 0.16){ + for(Ptile other : tile.tiles){ + var osec = sector.planet.getSector(other); + + //no sectors near start sector! + if( + osec.id == sector.planet.startSector || //near starting sector + osec.generateEnemyBase && poles < 0.84 || //near other base + (sector.preset != null && noise < 0.11) //near preset + ){ + return; + } + } + } + + sector.generateEnemyBase = any; + } + @Override public float getHeight(Vec3 position){ float height = rawHeight(position); @@ -158,7 +197,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ //check positions on the map to place the player spawn. this needs to be in the corner of the map Room spawn = null; Seq enemies = new Seq<>(); - int enemySpawns = rand.chance(0.3) ? 2 : 1; + int enemySpawns = rand.random(1, Math.max((int)(sector.threat * 4), 1)); int offset = rand.nextInt(360); float length = width/2.55f - rand.random(13, 23); int angleStep = 5; @@ -237,7 +276,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ FloatSeq frequencies = new FloatSeq(); for(int i = 0; i < ores.size; i++){ - frequencies.add(rand.random(-0.09f, 0.01f) - i * 0.01f); + frequencies.add(rand.random(-0.1f, 0.01f) - i * 0.01f + poles * 0.04f); } pass((x, y) -> { diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 706815d3b3..0930cf1a60 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -830,7 +830,7 @@ public class Mods implements Loadable{ /** Mod metadata information.*/ public static class ModMeta{ - public String name, displayName, author, description, version, main, minGameVersion = "0"; + public String name, displayName, author, description, version, main, minGameVersion = "0", repo; public Seq dependencies = Seq.with(); /** Hidden mods are only server-side or client-side, and do not support adding new content. */ public boolean hidden; diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index 240a1ef544..afa2d01a8a 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -314,8 +314,6 @@ public class SettingsMenuDialog extends SettingsDialog{ game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i)); if(!mobile){ - game.sliderPref("blockselecttimeout", 750, 0, 2000, 50, i -> Core.bundle.format("setting.milliseconds", i)); - game.checkPref("crashreport", true); } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index a42e1d6aa5..0ee6f0d614 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -145,7 +145,7 @@ public class PlacementFragment extends Fragment{ break; } } - }else if(blockSelectEnd || Time.timeSinceMillis(blockSelectSeqMillis) > Core.settings.getInt("blockselecttimeout")){ //1st number of combo, select category + }else if(blockSelectEnd || Time.timeSinceMillis(blockSelectSeqMillis) > 750){ //1st number of combo, select category //select only visible categories if(!getUnlockedByCategory(Category.all[i]).isEmpty()){ currentCategory = Category.all[i]; diff --git a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java index 62b542338a..30d3791231 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -46,7 +46,7 @@ public class ItemTurret extends Turret{ public void build(Building tile, Table table){ MultiReqImage image = new MultiReqImage(); content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium)), - () -> tile != null && !((ItemTurretBuild)tile).ammo.isEmpty() && ((ItemEntry)((ItemTurretBuild)tile).ammo.peek()).item == item))); + () -> tile instanceof ItemTurretBuild it && !it.ammo.isEmpty() && ((ItemEntry)it.ammo.peek()).item == item))); table.add(image).size(8 * 4); } @@ -54,7 +54,7 @@ public class ItemTurret extends Turret{ @Override public boolean valid(Building entity){ //valid when there's any ammo in the turret - return !((ItemTurretBuild)entity).ammo.isEmpty(); + return entity instanceof ItemTurretBuild it && !it.ammo.isEmpty(); } @Override