Added silicon crucible
|
Before Width: | Height: | Size: 678 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 640 B After Width: | Height: | Size: 1.1 KiB |
@@ -88,3 +88,4 @@ Alicila
|
||||
Daniel Dusek
|
||||
DeltaNedas
|
||||
GioIacca9
|
||||
SnakkiZXZ
|
||||
@@ -238,3 +238,4 @@
|
||||
63506=core-silo|block-core-silo-medium
|
||||
63505=data-processor|block-data-processor-medium
|
||||
63504=payload-router|block-payload-router-medium
|
||||
63503=silicon-crucible|block-silicon-crucible-medium
|
||||
|
||||
|
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 746 B |
|
Before Width: | Height: | Size: 829 KiB After Width: | Height: | Size: 835 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 276 KiB |
|
Before Width: | Height: | Size: 897 KiB After Width: | Height: | Size: 907 KiB |
@@ -45,7 +45,7 @@ public class Blocks implements ContentList{
|
||||
oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium,
|
||||
|
||||
//crafting
|
||||
siliconSmelter, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer,
|
||||
siliconSmelter, siliconCrucible, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer,
|
||||
melter, separator, sporePress, pulverizer, incinerator, coalCentrifuge,
|
||||
|
||||
//sandbox
|
||||
@@ -485,6 +485,22 @@ public class Blocks implements ContentList{
|
||||
consumes.power(0.50f);
|
||||
}};
|
||||
|
||||
siliconCrucible = new ThermalSmelter("silicon-crucible"){{
|
||||
requirements(Category.crafting, ItemStack.with(Items.titanium, 120, Items.metaglass, 80, Items.plastanium, 35, Items.silicon, 60));
|
||||
craftEffect = Fx.smeltsmoke;
|
||||
outputItem = new ItemStack(Items.silicon, 5);
|
||||
craftTime = 140f;
|
||||
size = 3;
|
||||
hasPower = true;
|
||||
hasLiquids = false;
|
||||
flameColor = Color.valueOf("ffef99");
|
||||
itemCapacity = 30;
|
||||
heatBoostScale = 0.15f;
|
||||
|
||||
consumes.items(new ItemStack(Items.coal, 3), new ItemStack(Items.sand, 6), new ItemStack(Items.pyratite, 1));
|
||||
consumes.power(4f);
|
||||
}};
|
||||
|
||||
kiln = new GenericSmelter("kiln"){{
|
||||
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.graphite, 30, Items.lead, 30));
|
||||
craftEffect = Fx.smeltsmoke;
|
||||
|
||||
@@ -88,7 +88,7 @@ public class ForceProjector extends Block{
|
||||
|
||||
@Override
|
||||
public void updateTile(){
|
||||
boolean phaseValid = consumes.get(ConsumeType.item).valid(tile.entity);
|
||||
boolean phaseValid = consumes.get(ConsumeType.item).valid(this);
|
||||
|
||||
phaseHeat = Mathf.lerpDelta(phaseHeat, Mathf.num(phaseValid), 0.1f);
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package mindustry.world.blocks.production;
|
||||
|
||||
import arc.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
/** A smelter that gains efficiency from heat tiles. */
|
||||
public class ThermalSmelter extends GenericSmelter{
|
||||
public Attribute attribute = Attribute.heat;
|
||||
public float baseEfficiency = 1f;
|
||||
public float heatBoostScale = 1f;
|
||||
public float maxHeatBoost = 1f;
|
||||
|
||||
public ThermalSmelter(String name){
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPlace(int x, int y, int rotation, boolean valid){
|
||||
drawPlaceText(Core.bundle.format("bar.efficiency",
|
||||
(int)((baseEfficiency + Math.min(maxHeatBoost, heatBoostScale * sumAttribute(attribute, x, y))) * 100f)), x, y, valid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBars(){
|
||||
super.setBars();
|
||||
|
||||
bars.add("efficiency", entity ->
|
||||
new Bar(() ->
|
||||
Core.bundle.format("bar.efficiency", (int)(entity.efficiency() * 100)),
|
||||
() -> Pal.lightOrange,
|
||||
entity::efficiency));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStats(){
|
||||
super.setStats();
|
||||
|
||||
stats.add(BlockStat.tiles, attribute, heatBoostScale);
|
||||
}
|
||||
|
||||
public class HeatedSmelterEntity extends SmelterEntity{
|
||||
public float heat = 0.0f;
|
||||
|
||||
@Override
|
||||
public float efficiency(){
|
||||
return (baseEfficiency + Math.min(maxHeatBoost, heatBoostScale * heat)) * super.efficiency();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void placed(){
|
||||
super.placed();
|
||||
|
||||
heat = sumAttribute(attribute, tile.x, tile.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,9 +38,13 @@ public class BlockStats{
|
||||
}
|
||||
|
||||
public void add(BlockStat stat, Attribute attr){
|
||||
add(stat, attr, 1f);
|
||||
}
|
||||
|
||||
public void add(BlockStat stat, Attribute attr, float scale){
|
||||
for(Block block : Vars.content.blocks()){
|
||||
if(!block.isFloor() || block.asFloor().attributes.get(attr) == 0) continue;
|
||||
add(stat, new FloorEfficiencyValue(block.asFloor(), block.asFloor().attributes.get(attr)));
|
||||
add(stat, new FloorEfficiencyValue(block.asFloor(), block.asFloor().attributes.get(attr) * scale));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||