From 4aaf3ec8647fa6fbdabb694ef7544451e86c0af6 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 13 Feb 2025 16:45:38 +0100 Subject: [PATCH] new objective: kill ronald reagan --- changelog | 6 + .../nei/CrystallizerRecipeHandler.java | 20 ++++ .../recipes/CrystallizerRecipes.java | 103 ++++++++++-------- .../hbm/tileentity/IUpgradeInfoProvider.java | 1 + .../TileEntityMachineCrystallizer.java | 17 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 7 files changed, 91 insertions(+), 58 deletions(-) diff --git a/changelog b/changelog index c7046e5fb..73108559d 100644 --- a/changelog +++ b/changelog @@ -15,6 +15,12 @@ * Decimated bobmazon * All books have been merged into one with way fewer offers * Sells things like basic gear, MREs, plushies, snow globes, and certain things only found in worldgen like jungle tree saplings and NTM flowers (including mustard willow) +* Each acidizer recipe now has a "productivity" value which is the percent chance that the effectiveness upgrades use, instead of a fixed 5% per level + * This means that certain recipes like re-crystallizing gems no longer allow for item duping + * Due to duping no longer being a concern, productivity rates for certain recipes can now be much higher + * Things like sawdust to cordite have a 75% chance of not using the input at level 3 + * Effectiveness no longer increases acid consumption (since many recipes now use the acidizer like a solid output "mixer") but instead adds +200% power consumption per level +* Chemical dyes can now also be made with light oil ## Fixed * Fixed items being annihilated when shift clicking them into the particle source diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index a3789f8cd..39f76178a 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -3,8 +3,13 @@ package com.hbm.handler.nei; import java.awt.Rectangle; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; public class CrystallizerRecipeHandler extends NEIUniversalHandler { @@ -24,4 +29,19 @@ public class CrystallizerRecipeHandler extends NEIUniversalHandler { guiGui.add(GUICrystallizer.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + CrystallizerRecipe cRecipe = CrystallizerRecipes.getOutput(rec.input[1].item, Fluids.fromID(rec.input[0].item.getItemDamage())); + + if(cRecipe != null && cRecipe.productivity > 0) { + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String momentum = "Effectiveness: +" + Math.min((int) (cRecipe.productivity * 100), 99) + "% per level"; + int side = 8; + fontRenderer.drawString(momentum, side, 52, 0x404040); + } + } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 814baafe2..6d12d8124 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -61,57 +61,56 @@ public class CrystallizerRecipes extends SerializableRecipe { final int mixingTime = 20; FluidStack sulfur = new FluidStack(Fluids.SULFURIC_ACID, 500); - registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime)); - registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime)); - registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime)); - registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime)); - registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); - registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime), sulfur); - for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime), sulfur); - registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime), sulfur); - registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime), sulfur); - registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); - registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime)); - registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime)); - registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime), sulfur); - registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime)); - registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime)); - registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime)); - registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime)); - registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime), sulfur); - registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime), sulfur); - //registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime), sulfur); - registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime), sulfur); + registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime).prod(0.05F)); + registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime).prod(0.05F)); + registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime).prod(0.05F)); + registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime).prod(0.05F)); + registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime).prod(0.05F)); + registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime).prod(0.05F), sulfur); + for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime).prod(0.05F), sulfur); + registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime).prod(0.05F), sulfur); + registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime).prod(0.05F), sulfur); + registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime).prod(0.05F)); + registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime).prod(0.05F)); + registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime).prod(0.05F)); + registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime).prod(0.05F), sulfur); + registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime).prod(0.05F)); + registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime).prod(0.05F)); + registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime).prod(0.05F)); + registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime).prod(0.05F)); + registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime).prod(0.05F), sulfur); + registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime).prod(0.05F), sulfur); + registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime).prod(0.05F), sulfur); - registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime), new FluidStack(Fluids.REDMUD, 75)); - registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime).prod(0.1F), new FluidStack(Fluids.REDMUD, 75)); + registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300).prod(0.1F), new FluidStack(Fluids.SULFURIC_ACID, 250)); - registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime), sulfur); - registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime).prod(0.05F), sulfur); + registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime).prod(0.05F)); - registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime)); - registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur); - registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); + registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime).prod(0.05F)); + registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime).prod(0.05F), sulfur); + registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime).prod(0.05F)); - registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); - registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); - registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); - registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); - registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime), sulfur); + registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime).prod(0.15F)); + registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime).prod(0.1F), new FluidStack(Fluids.OXYGEN, 250)); + registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime).prod(0.25F)); + registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime).prod(0.25F)); + registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime).prod(0.25F), sulfur); registerRecipe(COAL.block(), new CrystallizerRecipe(ModBlocks.block_graphite, baseTime)); registerRecipe(new ComparableStack(Blocks.cobblestone), new CrystallizerRecipe(ModBlocks.reinforced_stone, utilityTime)); registerRecipe(new ComparableStack(ModBlocks.gravel_obsidian), new CrystallizerRecipe(ModBlocks.brick_obsidian, utilityTime)); - registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); + registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); - registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); - registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); + registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).prod(0.3F).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).prod(0.1F).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); @@ -120,8 +119,8 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250)); - registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime), new FluidStack(Fluids.SOURGAS, 25)); - registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime), new FluidStack(Fluids.NITROGLYCERIN, 250)); + registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime).prod(0.15F), new FluidStack(Fluids.SOURGAS, 25)); + registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime).prod(0.25F), new FluidStack(Fluids.NITROGLYCERIN, 250)); registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000)); @@ -202,14 +201,14 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000)); } - FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; + FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100), new FluidStack(Fluids.LIGHTOIL, 100)}; for(FluidStack dye : dyes) { - registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime), dye); - registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime), dye); - registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime), dye); - registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime), dye); - registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime), dye); - registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime), dye); + registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime).prod(0.15F), dye); + registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime).prod(0.15F), dye); + registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime).prod(0.15F), dye); + registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime).prod(0.15F), dye); } registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); @@ -327,6 +326,7 @@ public class CrystallizerRecipes extends SerializableRecipe { public int acidAmount; public int itemAmount = 1; public int duration; + public float productivity = 0F; public ItemStack output; public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration); } @@ -342,6 +342,11 @@ public class CrystallizerRecipes extends SerializableRecipe { this.duration = duration; this.acidAmount = 500; } + + public CrystallizerRecipe prod(float productivity) { + this.productivity = productivity; + return this; + } } @Override @@ -371,6 +376,7 @@ public class CrystallizerRecipes extends SerializableRecipe { } else if(input instanceof OreDictStack) { recipes.put(new Pair(((OreDictStack) input).name, fluid.type), cRecipe); } + if(obj.has("productivity")) cRecipe.prod(obj.get("productivity").getAsFloat()); } @Override @@ -389,6 +395,7 @@ public class CrystallizerRecipes extends SerializableRecipe { this.writeAStack(input, writer); writer.name("output"); this.writeItemStack(cRecipe.output, writer); + writer.name("productivity").value(cRecipe.productivity); } @Override diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 1539d3eb0..3471a589a 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -26,6 +26,7 @@ public interface IUpgradeInfoProvider { public static final String KEY_COOLANT_CONSUMPTION = "upgrade.coolantConsumption"; public static final String KEY_DELAY = "upgrade.delay"; public static final String KEY_EFFICIENCY = "upgrade.efficiency"; + public static final String KEY_PRODUCTIVITY = "upgrade.productivity"; public static final String KEY_FORTUNE = "upgrade.fortune"; public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 23771df85..8b4cbe76c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -185,7 +185,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); - float freeChance = this.getFreeChance(); + float freeChance = this.getFreeChance(result); if(freeChance == 0 || freeChance < worldObj.rand.nextFloat()) this.decrStackSize(0, result.itemAmount); @@ -226,17 +226,13 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public int getRequiredAcid(int base) { - int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); - if(efficiency > 0) { - return base * (efficiency + 2); - } return base; } - public float getFreeChance() { + public float getFreeChance(CrystallizerRecipe recipe) { int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); if(efficiency > 0) { - return Math.min(efficiency * 0.05F, 0.15F); + return Math.min(efficiency * recipe.productivity, 0.99F); } return 0; } @@ -253,7 +249,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public int getPowerRequired() { int speed = upgradeManager.getLevel(UpgradeType.SPEED); - return (int) (demand + Math.min(speed * 1000, 3000)); + int effect = upgradeManager.getLevel(UpgradeType.EFFECT); + return (int) (demand + speed * demand + effect * demand * 2); } public float getCycleCount() { @@ -379,8 +376,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.EFFECT) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 5) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_ACID, "+" + (level * 100 + 100) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "x" + level)); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 200) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 3af792e33..62ddc6373 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -5110,6 +5110,7 @@ turret.on=AN turret.players=Spieler anzielen: %s upgrade.consumption=Verbrauch %s +upgrade.productivity=Produktivität %s upgrade.speed=Verarbeitungszeit %s wavelengths.name.ir=Infrarot diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 47a40c427..b0920c16b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -6276,6 +6276,7 @@ upgrade.delay=Process time %s upgrade.efficiency=Efficiency %s upgrade.fortune=Fortune %s upgrade.overheatChance=Overheat chance %s +upgrade.productivity=Productivity %s upgrade.range=Range %s upgrade.gui.title=§lAcceptable Upgrades:§r