Core fill items rule
This commit is contained in:
@@ -1429,7 +1429,7 @@ public class ControlPathfinder implements Runnable{
|
||||
|
||||
private static boolean nearPassable(int initialCost, int team, PathCost cost, int pos){
|
||||
int amount = cost.getCost(team, pathfinder.tiles[pos]);
|
||||
return amount != impassable && amount < Math.max(50, initialCost + 1);
|
||||
return amount != impassable && amount < Math.min(Math.max(50, initialCost + 1), solidCap);
|
||||
}
|
||||
|
||||
private static boolean solid(int team, PathCost type, int x, int y){
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.core;
|
||||
import arc.*;
|
||||
import arc.math.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.ai.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.core.GameState.*;
|
||||
@@ -133,6 +134,7 @@ public class Logic implements ApplicationListener{
|
||||
state.rules.coreIncinerates = true;
|
||||
state.rules.allowEditWorldProcessors = false;
|
||||
state.rules.waveTeam.rules().infiniteResources = true;
|
||||
state.rules.waveTeam.rules().fillItems = true;
|
||||
state.rules.waveTeam.rules().buildSpeedMultiplier *= state.getPlanet().enemyBuildSpeedMultiplier;
|
||||
}
|
||||
|
||||
@@ -438,12 +440,6 @@ public class Logic implements ApplicationListener{
|
||||
}
|
||||
|
||||
if(state.isCampaign()){
|
||||
//always fill enemy core with items
|
||||
if(state.rules.waveTeam.cores().size > 0){
|
||||
var core = state.rules.waveTeam.core();
|
||||
content.items().each(i -> core.items.set(i, core.getMaximumAccepted(i)));
|
||||
}
|
||||
|
||||
state.rules.sector.info.update();
|
||||
}
|
||||
|
||||
@@ -459,6 +455,14 @@ public class Logic implements ApplicationListener{
|
||||
updateWeather();
|
||||
|
||||
for(TeamData data : state.teams.getActive()){
|
||||
if(data.team.rules().fillItems && data.cores.size > 0){
|
||||
var core = data.cores.first();
|
||||
content.items().each(i -> {
|
||||
if(i.isOnPlanet(Vars.state.getPlanet())){
|
||||
core.items.set(i, core.getMaximumAccepted(i));
|
||||
}
|
||||
});
|
||||
}
|
||||
//does not work on PvP so built-in attack maps can have it on by default without issues
|
||||
if(data.team.rules().buildAi && !state.rules.pvp){
|
||||
if(data.buildAi == null) data.buildAi = new BaseBuilderAI(data);
|
||||
|
||||
@@ -299,6 +299,8 @@ public class Rules{
|
||||
public boolean aiCoreSpawn = true;
|
||||
/** If true, blocks don't require power or resources. */
|
||||
public boolean cheat;
|
||||
/** If true, the core is always filled to capacity with all items. */
|
||||
public boolean fillItems;
|
||||
/** If true, resources are not consumed when building. */
|
||||
public boolean infiniteResources;
|
||||
/** If true, this team has infinite unit ammo. */
|
||||
|
||||
@@ -313,6 +313,7 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
number("@rules.extracorebuildradius", f -> teams.extraCoreBuildRadius = f * tilesize, () -> Math.min(teams.extraCoreBuildRadius / tilesize, 200), () -> !rules.polygonCoreProtection);
|
||||
|
||||
check("@rules.infiniteresources", b -> teams.infiniteResources = b, () -> teams.infiniteResources);
|
||||
check("@rules.fillitems", b -> teams.fillItems = b, () -> teams.fillItems);
|
||||
number("@rules.buildspeedmultiplier", f -> teams.buildSpeedMultiplier = f, () -> teams.buildSpeedMultiplier, 0.001f, 50f);
|
||||
|
||||
number("@rules.unitdamagemultiplier", f -> teams.unitDamageMultiplier = f, () -> teams.unitDamageMultiplier);
|
||||
|
||||
Reference in New Issue
Block a user