Fixed #3540 / Fixed #3544 / Fixed #3542

This commit is contained in:
Anuken 2020-11-23 09:12:36 -05:00
parent 8d91a9b014
commit 075be1a862
10 changed files with 25 additions and 16 deletions

View File

@ -551,7 +551,9 @@ public class TechTree implements ContentList{
node(nuclearComplex, Seq.with( node(nuclearComplex, Seq.with(
new SectorComplete(fungalPass), new SectorComplete(fungalPass),
new Research(thermalGenerator), new Research(thermalGenerator),
new Research(laserDrill) new Research(laserDrill),
new Research(Items.plastanium),
new Research(swarmer)
), () -> { ), () -> {
}); });
@ -613,7 +615,9 @@ public class TechTree implements ContentList{
}); });
nodeProduce(Liquids.oil, () -> { nodeProduce(Liquids.oil, () -> {
nodeProduce(Items.plastanium, () -> {
});
}); });
}); });
}); });

View File

@ -139,7 +139,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
boolean shouldSkip(BuildPlan request, @Nullable Building core){ boolean shouldSkip(BuildPlan request, @Nullable Building core){
//requests that you have at least *started* are considered //requests that you have at least *started* are considered
if(state.rules.infiniteResources || team().rules().infiniteResources || request.breaking || core == null) return false; if(state.rules.infiniteResources || team().rules().infiniteResources || request.breaking || core == null) return false;
return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item)) && !request.initialized); return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item) && Mathf.round(i.amount * state.rules.buildCostMultiplier) > 0) && !request.initialized);
} }
void removeBuild(int x, int y, boolean breaking){ void removeBuild(int x, int y, boolean breaking){

View File

@ -1,5 +1,6 @@
package mindustry.type; package mindustry.type;
import arc.math.*;
import arc.struct.*; import arc.struct.*;
import mindustry.content.*; import mindustry.content.*;
@ -35,10 +36,10 @@ public class ItemStack implements Comparable<ItemStack>{
return other != null && other.item == item && other.amount == amount; return other != null && other.item == item && other.amount == amount;
} }
public static ItemStack[] mult(ItemStack[] stacks, int amount){ public static ItemStack[] mult(ItemStack[] stacks, float amount){
ItemStack[] copy = new ItemStack[stacks.length]; ItemStack[] copy = new ItemStack[stacks.length];
for(int i = 0; i < copy.length; i++){ for(int i = 0; i < copy.length; i++){
copy[i] = new ItemStack(stacks[i].item, stacks[i].amount * amount); copy[i] = new ItemStack(stacks[i].item, Mathf.round(stacks[i].amount * amount));
} }
return copy; return copy;
} }

View File

@ -187,10 +187,10 @@ public class Planet extends UnlockableContent{
} }
if(sector.hasEnemyBase()){ if(sector.hasEnemyBase()){
sum += 2.5f; sum += 1.9f;
} }
sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.5f) : Mathf.clamp(sector.preset.difficulty / 10f); sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f);
} }
} }

View File

@ -108,7 +108,7 @@ public class Sector{
public boolean isBeingPlayed(){ public boolean isBeingPlayed(){
//after the launch dialog, a sector is no longer considered being played //after the launch dialog, a sector is no longer considered being played
return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.gameOver; return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.gameOver && !net.client();
} }
public String name(){ public String name(){
@ -169,6 +169,8 @@ public class Sector{
} }
public void addItems(ItemSeq items){ public void addItems(ItemSeq items){
if(net.client()) return;
if(isBeingPlayed()){ if(isBeingPlayed()){
if(state.rules.defaultTeam.core() != null){ if(state.rules.defaultTeam.core() != null){
ItemModule storage = state.rules.defaultTeam.items(); ItemModule storage = state.rules.defaultTeam.items();

View File

@ -64,8 +64,8 @@ public class ResearchDialog extends BaseDialog{
ItemSeq cached = sector.items(); ItemSeq cached = sector.items();
cache.put(sector, cached); cache.put(sector, cached);
cached.each((item, amount) -> { cached.each((item, amount) -> {
values[item.id] += amount; values[item.id] += Math.max(amount, 0);
total += amount; total += Math.max(amount, 0);
}); });
} }
} }

View File

@ -58,7 +58,7 @@ public class LaunchPad extends Block{
@Override @Override
public Cursor getCursor(){ public Cursor getCursor(){
return !state.isCampaign() ? SystemCursor.arrow : super.getCursor(); return !state.isCampaign() || net.client() ? SystemCursor.arrow : super.getCursor();
} }
@Override @Override
@ -136,7 +136,7 @@ public class LaunchPad extends Block{
@Override @Override
public void buildConfiguration(Table table){ public void buildConfiguration(Table table){
if(!state.isCampaign()){ if(!state.isCampaign() || net.client()){
deselect(); deselect();
return; return;
} }
@ -234,7 +234,9 @@ public class LaunchPad extends Block{
Events.fire(new LaunchItemEvent(stack)); Events.fire(new LaunchItemEvent(stack));
} }
destsec.addItems(dest); if(!net.client()){
destsec.addItems(dest);
}
} }
} }
} }

View File

@ -50,7 +50,7 @@ public class Junction extends Block{
Building dest = nearby(i); Building dest = nearby(i);
//skip blocks that don't want the item, keep waiting until they do //skip blocks that don't want the item, keep waiting until they do
if(dest == null || !dest.acceptItem(this, item) || dest.team != team){ if(item == null || dest == null || !dest.acceptItem(this, item) || dest.team != team){
continue; continue;
} }

View File

@ -144,7 +144,7 @@ public class CoreBlock extends StorageBlock{
//right before placing, create a "destination" item array which is all the previous items minus core requirements //right before placing, create a "destination" item array which is all the previous items minus core requirements
ItemModule items = tile.build.items.copy(); ItemModule items = tile.build.items.copy();
if(!state.rules.infiniteResources){ if(!state.rules.infiniteResources){
items.remove(requirements); items.remove(ItemStack.mult(requirements, state.rules.buildCostMultiplier));
} }
nextItems = items; nextItems = items;
@ -157,7 +157,7 @@ public class CoreBlock extends StorageBlock{
if(!canPlaceOn(world.tile(x, y), player.team())){ if(!canPlaceOn(world.tile(x, y), player.team())){
drawPlaceText(Core.bundle.get((player.team().core() != null && player.team().core().items.has(requirements)) || state.rules.infiniteResources ? drawPlaceText(Core.bundle.get((player.team().core() != null && player.team().core().items.has(requirements, state.rules.buildCostMultiplier)) || state.rules.infiniteResources ?
"bar.corereq" : "bar.corereq" :
"bar.noresources" "bar.noresources"
), x, y, valid); ), x, y, valid);

View File

@ -317,7 +317,7 @@ public class SStats implements SteamUserStatsCallback{
SStat.attacksWon.add(); SStat.attacksWon.add();
} }
if(!e.sector.isBeingPlayed()){ if(!e.sector.isBeingPlayed() && !net.client()){
captureBackground.complete(); captureBackground.complete();
} }