Checks to prevent uncaptureable sectors
This commit is contained in:
@@ -40,7 +40,7 @@ public class BaseAI{
|
||||
}
|
||||
|
||||
public void update(){
|
||||
if(timer.get(timerSpawn, 60) && data.hasCore()){
|
||||
if(data.team.rules().aiCoreSpawn && timer.get(timerSpawn, 60 * 2.5f) && data.hasCore()){
|
||||
CoreBlock block = (CoreBlock)data.core().block;
|
||||
|
||||
//create AI core unit
|
||||
|
||||
@@ -106,6 +106,8 @@ public class Rules{
|
||||
public boolean ai;
|
||||
/** TODO Tier of blocks/designs that the AI uses for building. [0, 1]*/
|
||||
public float aiTier = 0f;
|
||||
/** Whether, when AI is enabled, ships should be spawned from the core. */
|
||||
public boolean aiCoreSpawn = true;
|
||||
/** If true, blocks don't require power or resources. */
|
||||
public boolean cheat;
|
||||
/** If true, resources are not consumed when building. */
|
||||
|
||||
@@ -101,6 +101,17 @@ public class SectorInfo{
|
||||
|
||||
/** Write contents of meta into main storage. */
|
||||
public void write(){
|
||||
//enable attack mode when there's a core.
|
||||
if(state.rules.waveTeam.core() != null){
|
||||
attack = true;
|
||||
winWave = 0;
|
||||
}
|
||||
|
||||
//if there are infinite waves and no win wave, add a win wave.
|
||||
if(waves && winWave <= 0 && !attack){
|
||||
winWave = 30;
|
||||
}
|
||||
|
||||
state.wave = wave;
|
||||
state.rules.waves = waves;
|
||||
state.rules.waveSpacing = waveSpacing;
|
||||
@@ -114,8 +125,6 @@ public class SectorInfo{
|
||||
//ensure capacity.
|
||||
entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.storageCapacity)));
|
||||
}
|
||||
|
||||
//TODO write items.
|
||||
}
|
||||
|
||||
/** Prepare data for writing to a save. */
|
||||
|
||||
@@ -412,12 +412,12 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
||||
if(sector.hasEnemyBase()){
|
||||
basegen.generate(tiles, enemies.map(r -> tiles.getn(r.x, r.y)), tiles.get(spawn.x, spawn.y), state.rules.waveTeam, sector, difficulty);
|
||||
|
||||
state.rules.attackMode = true;
|
||||
state.rules.attackMode = sector.info.attack = true;
|
||||
}else{
|
||||
state.rules.winWave = 15 * (int)Math.max(difficulty * 10, 1);
|
||||
state.rules.winWave = sector.info.winWave = 15 * (int)Math.max(difficulty * 10, 1);
|
||||
}
|
||||
|
||||
state.rules.waves = true;
|
||||
state.rules.waves = sector.info.waves = true;
|
||||
|
||||
//TODO better waves
|
||||
state.rules.spawns = DefaultWaves.generate(difficulty);
|
||||
|
||||
@@ -23,6 +23,7 @@ public class SectorPreset extends UnlockableContent{
|
||||
super(name);
|
||||
this.generator = new FileMapGenerator(name);
|
||||
this.planet = planet;
|
||||
sector %= planet.sectors.size;
|
||||
this.sector = planet.sectors.get(sector);
|
||||
|
||||
planet.preset(sector, this);
|
||||
|
||||
@@ -14,6 +14,7 @@ import mindustry.entities.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.blocks.*;
|
||||
@@ -122,6 +123,12 @@ public class UnitFactory extends UnitBlock{
|
||||
return currentPlan == -1 ? 0 : progress / plans.get(currentPlan).time;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object senseObject(LAccess sensor){
|
||||
if(sensor == LAccess.config) return currentPlan == -1 ? null : plans.get(currentPlan).unit;
|
||||
return super.senseObject(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildConfiguration(Table table){
|
||||
Seq<UnitType> units = Seq.with(plans).map(u -> u.unit).filter(u -> u.unlockedNow());
|
||||
|
||||
Reference in New Issue
Block a user