RTS AI fixes / Silicon gated behind Frozen Forest / Tainted woods guardian nerf

This commit is contained in:
Anuken
2025-04-30 19:07:57 -04:00
parent bad43e8fa9
commit 37f32d3317
7 changed files with 10 additions and 5 deletions

Binary file not shown.

View File

@@ -111,6 +111,7 @@ public class RtsAI{
for(var unit : data.units){ for(var unit : data.units){
if(used.add(unit.id) && unit.controller() instanceof CommandAI cai && !cai.hasCommand() && !cai.isAttacking()){ if(used.add(unit.id) && unit.controller() instanceof CommandAI cai && !cai.hasCommand() && !cai.isAttacking()){
squad.clear(); squad.clear();
squad.add(unit);
stack.clear(); stack.clear();
stack.add(unit); stack.add(unit);

View File

@@ -129,7 +129,7 @@ public class SerpuloTechTree{
}); });
}); });
node(siliconSmelter, () -> { node(siliconSmelter, Seq.with(new SectorComplete(frozenForest)), () -> {
node(sporePress, () -> { node(sporePress, () -> {
node(coalCentrifuge, () -> { node(coalCentrifuge, () -> {

View File

@@ -18,9 +18,11 @@ public class CampaignRules{
rules.showSpawns = showSpawns; rules.showSpawns = showSpawns;
rules.randomWaveAI = randomWaveAI; rules.randomWaveAI = randomWaveAI;
rules.objectiveTimerMultiplier = difficulty.waveTimeMultiplier; rules.objectiveTimerMultiplier = difficulty.waveTimeMultiplier;
if(planet.showRtsAIRule && rules.attackMode){ if(planet.showRtsAIRule){
boolean swapped = rules.teams.get(rules.waveTeam).rtsAi != rtsAI; boolean enabled = rtsAI && rules.attackMode; //if attackMode becomes false (waves enabled), turn off RTS AI
rules.teams.get(rules.waveTeam).rtsAi = rtsAI; boolean swapped = rules.teams.get(rules.waveTeam).rtsAi != enabled;
rules.teams.get(rules.waveTeam).rtsAi = enabled;
rules.teams.get(rules.waveTeam).rtsMaxSquad = 15; rules.teams.get(rules.waveTeam).rtsMaxSquad = 15;
if(swapped && Vars.state.isGame()){ if(swapped && Vars.state.isGame()){

View File

@@ -110,7 +110,7 @@ public class Team implements Comparable<Team>, Senseable{
/** @return whether this team is supposed to be AI-controlled. */ /** @return whether this team is supposed to be AI-controlled. */
public boolean isAI(){ public boolean isAI(){
return (state.rules.waves || state.rules.attackMode) && this != state.rules.defaultTeam && !state.rules.pvp; return (state.rules.waves || state.rules.attackMode || state.isCampaign()) && this != state.rules.defaultTeam && !state.rules.pvp;
} }
/** @return whether this team is solely comprised of AI (with no players possible). */ /** @return whether this team is solely comprised of AI (with no players possible). */

View File

@@ -285,6 +285,7 @@ public class Universe{
state.rules.winWave = waveMax; state.rules.winWave = waveMax;
state.rules.waves = true; state.rules.waves = true;
state.rules.attackMode = false; state.rules.attackMode = false;
planet.campaignRules.apply(planet, state.rules); //enabling waves may force changes in campaign rules
//update rules in multiplayer //update rules in multiplayer
if(net.server()){ if(net.server()){
Call.setRules(state.rules); Call.setRules(state.rules);

View File

@@ -185,6 +185,7 @@ public class ConsoleFragment extends Table{
"var items = Vars.player.team().items();" + "var items = Vars.player.team().items();" +
"var build = Vars.world.buildWorld(Core.input.mouseWorldX(), Core.input.mouseWorldY());" + "var build = Vars.world.buildWorld(Core.input.mouseWorldX(), Core.input.mouseWorldY());" +
"var cursor = Vars.world.tileWorld(Core.input.mouseWorldX(), Core.input.mouseWorldY());" + "var cursor = Vars.world.tileWorld(Core.input.mouseWorldX(), Core.input.mouseWorldY());" +
"var cursorUnit = Units.closestEnemy(null, Core.input.mouseWorldX(), Core.input.mouseWorldY(), 70, u => true);" +
"\n"; "\n";
} }