More concentrated enemy bases
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Room> 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) -> {
|
||||
|
||||
@@ -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<String> dependencies = Seq.with();
|
||||
/** Hidden mods are only server-side or client-side, and do not support adding new content. */
|
||||
public boolean hidden;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user