Allow landing pad config in more situations / Small power node build time increase

This commit is contained in:
Anuken
2025-02-05 20:22:19 -05:00
parent 0377ef3a08
commit 9a8ae81af2
2 changed files with 12 additions and 8 deletions

View File

@@ -2286,9 +2286,10 @@ public class Blocks{
//region power
powerNode = new PowerNode("power-node"){{
requirements(Category.power, with(Items.copper, 1, Items.lead, 3));
requirements(Category.power, with(Items.copper, 2, Items.lead, 5));
maxNodes = 10;
laserRange = 6;
buildCostMultiplier = 2f;
}};
powerNodeLarge = new PowerNode("power-node-large"){{
@@ -2451,12 +2452,13 @@ public class Blocks{
//erekir
beamNode = new BeamNode("beam-node"){{
requirements(Category.power, with(Items.beryllium, 8));
requirements(Category.power, with(Items.beryllium, 10));
consumesPower = outputsPower = true;
health = 90;
range = 10;
fogRadius = 1;
researchCost = with(Items.beryllium, 5);
buildCostMultiplier = 2f;
consumePowerBuffered(1000f);
}};

View File

@@ -13,6 +13,7 @@ import arc.util.io.*;
import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.game.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.graphics.*;
@@ -65,12 +66,12 @@ public class LandingPad extends Block{
lightRadius = 90f;
config(Item.class, (LandingPadBuild build, Item item) -> {
if(!accessible()) return;
if(!build.accessible()) return;
build.config = item;
});
configClear((LandingPadBuild build) -> {
if(!accessible()) return;
if(!build.accessible()) return;
build.config = null;
});
@@ -119,10 +120,6 @@ public class LandingPad extends Block{
build.handleLanding();
}
public boolean accessible(){
return state.rules.editor || state.rules.allowEditWorldProcessors || state.isCampaign();
}
public class LandingPadBuild extends Building{
public @Nullable Item config;
//priority collisions are possible, but should be extremely rare
@@ -146,6 +143,11 @@ public class LandingPad extends Block{
}
}
public boolean accessible(){
//In custom games, this block can be configured by anyone except the player team; this allows for enemy builder AI to use it
return state.rules.editor || state.rules.allowEditWorldProcessors || state.isCampaign() || state.rules.infiniteResources || (team != state.rules.defaultTeam && !state.rules.pvp && team != Team.derelict);
}
public void updateTimers(){
if(state.isCampaign() && lastUpdateId != state.updateId){
lastUpdateId = state.updateId;