diff --git a/core/src/io/anuke/mindustry/content/Items.java b/core/src/io/anuke/mindustry/content/Items.java index 85f8e07024..b626033490 100644 --- a/core/src/io/anuke/mindustry/content/Items.java +++ b/core/src/io/anuke/mindustry/content/Items.java @@ -14,10 +14,6 @@ public class Items implements ContentList{ @Override public void load(){ - stone = new Item("stone", Color.valueOf("777777")){{ - hardness = 3; - }}; - tungsten = new Item("tungsten", Color.valueOf("a0b0c8")){{ type = ItemType.material; hardness = 1; @@ -54,6 +50,10 @@ public class Items implements ContentList{ cost = 1.2f; }}; + stone = new Item("stone", Color.valueOf("777777")){{ + hardness = 3; + }}; + silicon = new Item("silicon", Color.valueOf("53565c")){{ type = ItemType.material; cost = 0.9f; diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 37c006e9bc..0dc3e1e85f 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -109,8 +109,8 @@ public class Recipes implements ContentList{ new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.carbide, 500), new ItemStack(Items.thorium, 350)); //DRILLS, PRODUCERS - new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 15)); - new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 25), new ItemStack(Items.carbide, 40)); + new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 40)); + new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 40)); new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.tungsten, 70), new ItemStack(Items.carbide, 90), new ItemStack(Items.silicon, 60), new ItemStack(Items.titanium, 50)); new Recipe(production, ProductionBlocks.blastdrill, new ItemStack(Items.tungsten, 130), new ItemStack(Items.carbide, 180), new ItemStack(Items.silicon, 120), new ItemStack(Items.titanium, 100), new ItemStack(Items.thorium, 60)); diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index 25213402c8..94087161fb 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -151,17 +151,17 @@ public class Sectors{ //set starter items if(sector.difficulty > 12){ //now with titanium - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 1800), new ItemStack(Items.lead, 550), new ItemStack(Items.carbide, 470), new ItemStack(Items.silicon, 460), new ItemStack(Items.titanium, 230)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 1900), new ItemStack(Items.lead, 600), new ItemStack(Items.carbide, 470), new ItemStack(Items.silicon, 460), new ItemStack(Items.titanium, 230)); }else if(sector.difficulty > 8){ //just more resources - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 1400), new ItemStack(Items.lead, 400), new ItemStack(Items.carbide, 340), new ItemStack(Items.silicon, 250)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 1500), new ItemStack(Items.lead, 450), new ItemStack(Items.carbide, 340), new ItemStack(Items.silicon, 250)); }else if(sector.difficulty > 5){ //now with silicon - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 900), new ItemStack(Items.lead, 300), new ItemStack(Items.carbide, 190), new ItemStack(Items.silicon, 140)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 950), new ItemStack(Items.lead, 350), new ItemStack(Items.carbide, 190), new ItemStack(Items.silicon, 140)); }else if(sector.difficulty > 3){ //now with carbide - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 650), new ItemStack(Items.lead, 200), new ItemStack(Items.carbide, 130)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 700), new ItemStack(Items.lead, 250), new ItemStack(Items.carbide, 130)); }else if(sector.difficulty > 1){ //more starter items for faster start - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 400), new ItemStack(Items.lead, 150)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 500), new ItemStack(Items.lead, 180)); }else{ //base starting items to prevent grinding much - sector.startingItems = Array.with(new ItemStack(Items.tungsten, 150), new ItemStack(Items.lead, 70)); + sector.startingItems = Array.with(new ItemStack(Items.tungsten, 170), new ItemStack(Items.lead, 70)); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index 9eef98e6b3..0f363919e9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -26,7 +26,6 @@ public class Drill extends Block{ protected final int timerDump = timers++; protected final Array drawTiles = new Array<>(); - protected final Array toAdd = new Array<>(); /**Maximum tier of blocks this drill can mine.*/ protected int tier; @@ -140,37 +139,44 @@ public class Drill extends Block{ @Override public void update(Tile tile){ - toAdd.clear(); - DrillEntity entity = tile.entity(); - float multiplier = 0f; - float totalHardness = 0f; - boolean foundDominant = entity.dominantItem != null; + if(entity.dominantItem == null){ + boolean foundDominant = false; - for(Tile other : tile.getLinkedTiles(tempTiles)){ - if(isValid(other)){ - Item drop = getDrop(other); - toAdd.add(drop); - totalHardness += drop.hardness; - multiplier += 1f; + for(Tile other : tile.getLinkedTiles(tempTiles)){ + if(isValid(other)){ + Item drop = getDrop(other); - if(!foundDominant){ - entity.dominantItem = drop; - foundDominant = true; - }else if(entity.dominantItem != drop){ - entity.dominantItem = null; + if(!foundDominant){ + entity.dominantItem = drop; + foundDominant = true; + }else if(entity.dominantItem != drop && drop.id < entity.dominantItem.id){ + entity.dominantItem = drop; + } + } + } + + for(Tile other : tile.getLinkedTiles(tempTiles)){ + if(isValid(other) && other.floor().dropsItem(entity.dominantItem)){ + entity.dominantItems ++; } } } + if(entity.dominantItem == null){ + return; + } + + float totalHardness = entity.dominantItems * entity.dominantItem.hardness; + if(entity.timer.get(timerDump, 15)){ tryDump(tile); } entity.drillTime += entity.warmup * Timers.delta(); - if(entity.items.total() < itemCapacity && toAdd.size > 0 && entity.cons.valid()){ + if(entity.items.total() < itemCapacity && entity.dominantItems > 0 && entity.cons.valid()){ float speed = 1f; @@ -179,7 +185,7 @@ public class Drill extends Block{ } entity.warmup = Mathf.lerpDelta(entity.warmup, speed, warmupSpeed); - entity.progress += Timers.delta() * multiplier * speed * entity.warmup; + entity.progress += Timers.delta() * entity.dominantItems * speed * entity.warmup; if(Mathf.chance(Timers.delta() * updateEffectChance * entity.warmup)) Effects.effect(updateEffect, entity.x + Mathf.range(size * 2f), entity.y + Mathf.range(size * 2f)); @@ -188,18 +194,17 @@ public class Drill extends Block{ return; } - if(toAdd.size > 0 && entity.progress >= drillTime + hardnessDrillMultiplier * Math.max(totalHardness, 1f) / multiplier + if(entity.dominantItems > 0 && entity.progress >= drillTime + hardnessDrillMultiplier * Math.max(totalHardness, 1f) / entity.dominantItems && tile.entity.items.total() < itemCapacity){ - int index = entity.index % toAdd.size; - offloadNear(tile, toAdd.get(index)); + offloadNear(tile, entity.dominantItem); - useContent(toAdd.get(index)); + useContent(entity.dominantItem); entity.index++; entity.progress = 0f; - Effects.effect(drillEffect, toAdd.get(index).color, + Effects.effect(drillEffect, entity.dominantItem.color, entity.x + Mathf.range(size), entity.y + Mathf.range(size)); } } @@ -237,6 +242,7 @@ public class Drill extends Block{ public float warmup; public float drillTime; + public int dominantItems; public Item dominantItem; }