From 4394ba45413e1ef91c589ba8a57be44b7dcf4f5f Mon Sep 17 00:00:00 2001 From: WayofTime Date: Wed, 19 Mar 2014 20:47:14 -0400 Subject: [PATCH] Spells spells, did I mention spells? --- .../AlchemicalWizardry.java | 51 +++++++++++++++--- .../common/AlchemicalWizardryEventHooks.java | 2 +- .../common/items/ItemAlchemyBase.java | 2 +- .../common/items/ItemComplexSpellCrystal.java | 2 +- .../common/items/ItemComponents.java | 2 +- .../common/rituals/Rituals.java | 8 +++ .../spell/complex/effect/SpellEffectWind.java | 39 ++++++-------- .../impactEffects/wind/MeleeDefaultWind.java | 40 ++++++++++++++ .../wind/MeleeDefensiveWind.java | 33 ++++++++++++ .../wind/MeleeEnvironmentalWind.java | 50 +++++++++++++++++ .../impactEffects/wind/SelfDefaultWind.java | 27 ++++++++++ .../impactEffects/wind/SelfDefensiveWind.java | 39 ++++++++++++++ .../impactEffects/wind/SelfOffensiveWind.java | 34 ++++++++++++ .../items/baseAlchemyItemPotentia.png | Bin 0 -> 433 bytes .../items/baseAlchemyItemReductus.png | Bin 0 -> 429 bytes .../textures/items/baseAlchemyItemVirtus.png | Bin 0 -> 417 bytes .../items/baseItemCrackedRunicPlate.png | Bin 522 -> 523 bytes .../textures/items/baseItemObsidianBrace.png | Bin 0 -> 325 bytes .../textures/models/SpellEnhancementCost3.png | Bin 4025 -> 4021 bytes .../models/SpellEnhancementPotency3.png | Bin 3951 -> 3947 bytes .../models/SpellEnhancementPower3.png | Bin 4068 -> 4062 bytes 21 files changed, 296 insertions(+), 33 deletions(-) create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java create mode 100644 resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPotentia.png create mode 100644 resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemReductus.png create mode 100644 resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png create mode 100644 resources/assets/alchemicalwizardry/textures/items/baseItemObsidianBrace.png diff --git a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 5a52c97f..ed065c27 100644 --- a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -398,6 +398,7 @@ public class AlchemicalWizardry proxy.registerRenderers(); proxy.registerEntities(); //ItemStacks used for crafting go here + ItemStack lapisStack = new ItemStack(Item.dyePowder,1,4); ItemStack lavaBucketStack = new ItemStack(Item.bucketLava); ItemStack cobblestoneStack = new ItemStack(Block.cobblestone); ItemStack glassStack = new ItemStack(Block.glass, 1, craftingConstant); @@ -492,6 +493,7 @@ public class AlchemicalWizardry lavaCrystalStackCrafted.setItemDamage(lavaCrystalStackCrafted.getMaxDamage()); miningSigilStackCrafted.setItemDamage(miningSigilStackCrafted.getMaxDamage()); sigilOfElementalAffinityStackCrafted.setItemDamage(sigilOfElementalAffinityStackCrafted.getMaxDamage()); + ItemStack masterBloodOrbStack = new ItemStack(ModItems.masterBloodOrb); ItemStack archmageBloodOrbStack = new ItemStack(ModItems.archmageBloodOrb); ItemStack sanctusStack = new ItemStack(ModItems.sanctus); ItemStack aetherStack = new ItemStack(ModItems.aether); @@ -502,6 +504,7 @@ public class AlchemicalWizardry ItemStack crystallosStack = new ItemStack(ModItems.crystallos); ItemStack crepitousStack = new ItemStack(ModItems.crepitous); ItemStack magicalesStack = new ItemStack(ModItems.magicales); + ItemStack gunpowderStack = new ItemStack(Item.gunpowder); //All crafting goes here // GameRegistry.addRecipe(orbOfTestingStack, "x x", " ", "x x", 'x', cobblestoneStack); //GameRegistry.addRecipe(glassShardStack, " x", "y ", 'x', ironIngotStack, 'y', glassStack); @@ -544,7 +547,7 @@ public class AlchemicalWizardry GameRegistry.addRecipe(blockHomHeartStack, "www", "srs", "sos", 'w', redWoolStack, 's', stoneStack, 'r', bloodRuneStack, 'o', apprenticeBloodOrbStack); GameRegistry.addShapelessRecipe(new ItemStack(Item.skull, 1, 2), new ItemStack(Item.skull, 1, 1), new ItemStack(Item.rottenFlesh), new ItemStack(Item.ingotIron), new ItemStack(Item.leather)); GameRegistry.addShapelessRecipe(new ItemStack(Item.skull, 1, 0), new ItemStack(Item.skull, 1, 1), new ItemStack(Item.bow, 1, 0), new ItemStack(Item.arrow, 1, 0), new ItemStack(Item.bone)); - GameRegistry.addShapelessRecipe(new ItemStack(Item.skull, 1, 4), new ItemStack(Item.skull, 1, 1), new ItemStack(Item.gunpowder), new ItemStack(Block.dirt), new ItemStack(Block.sand)); + GameRegistry.addShapelessRecipe(new ItemStack(Item.skull, 1, 4), new ItemStack(Item.skull, 1, 1), gunpowderStack, new ItemStack(Block.dirt), new ItemStack(Block.sand)); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockWritingTable), " s ", "ror", 's', new ItemStack(Item.brewingStand), 'r', obsidianStack, 'o', weakBloodOrbStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPedestal), "ooo", " c ", "ooo", 'o', obsidianStack, 'c', weakBloodShardStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPlinth), "iii", " p ", "iii", 'i', ironBlockStack, 'p', new ItemStack(ModBlocks.blockPedestal)); @@ -824,12 +827,17 @@ public class AlchemicalWizardry // comp[i] = redstoneStack; // } // AlchemyRecipeRegistry.registerRecipe(glowstoneDustStack, 2, comp, 2); + + ItemStack offensaStack = new ItemStack(ModItems.baseAlchemyItems,1,0); ItemStack praesidiumStack = new ItemStack(ModItems.baseAlchemyItems,1,1); ItemStack orbisTerraeStack = new ItemStack(ModItems.baseAlchemyItems,1,2); ItemStack strengthenedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,3); ItemStack concentratedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,4); ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems,1,5); + ItemStack virtusStack = new ItemStack(ModItems.baseAlchemyItems,1,6); + ItemStack reductusStack = new ItemStack(ModItems.baseAlchemyItems,1,7); + ItemStack potentiaStack = new ItemStack(ModItems.baseAlchemyItems,1,8); ItemStack strengthenedCatalystStackCrafted = new ItemStack(ModItems.baseAlchemyItems,2,3); ItemStack fracturedBoneStackCrafted = new ItemStack(ModItems.baseAlchemyItems,4,5); @@ -839,16 +847,16 @@ public class AlchemicalWizardry //TODO NEW RECIPES! AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakBindingAgent), 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Item.clay)}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardBindingAgent), 15, new ItemStack[]{new ItemStack(ModItems.weakBindingAgent), sanctusStack, new ItemStack(ModItems.crystallos)}, 3); - AlchemyRecipeRegistry.registerRecipe(simpleCatalystStack, 2, new ItemStack[]{sugarStack, redstoneStack, redstoneStack, glowstoneDustStack, new ItemStack(Item.gunpowder)}, 1); + AlchemyRecipeRegistry.registerRecipe(simpleCatalystStack, 2, new ItemStack[]{sugarStack, redstoneStack, redstoneStack, glowstoneDustStack, gunpowderStack}, 1); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.incendium), 5, new ItemStack[]{lavaBucketStack, new ItemStack(Item.blazePowder), new ItemStack(Item.blazePowder), new ItemStack(Block.netherrack), simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aether), 5, new ItemStack[]{featherStack, featherStack, glowstoneDustStack, ghastTearStack, simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.sanctus), 5, new ItemStack[]{glowstoneDustStack, new ItemStack(Item.goldNugget), glowstoneDustStack, glassStack, simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crepitous), 5, new ItemStack[]{new ItemStack(Item.gunpowder), new ItemStack(Item.gunpowder), cobblestoneStack, cobblestoneStack, simpleCatalystStack}, 2); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crepitous), 5, new ItemStack[]{gunpowderStack, gunpowderStack, cobblestoneStack, cobblestoneStack, simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crystallos), 5, new ItemStack[]{new ItemStack(Block.ice), new ItemStack(Block.ice), new ItemStack(Block.blockSnow), new ItemStack(Block.blockSnow), simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.terrae), 5, new ItemStack[]{new ItemStack(Block.dirt), new ItemStack(Block.sand), obsidianStack, obsidianStack, simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aquasalus), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Item.dyePowder, 1, 0), new ItemStack(Item.potion, 1, 0), new ItemStack(Item.potion, 1, 0), new ItemStack(Item.potion, 1, 0)}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.tennebrae), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Item.coal), new ItemStack(Item.coal), new ItemStack(Block.obsidian), new ItemStack(Item.clay)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.magicales), 5, new ItemStack[]{redstoneStack, simpleCatalystStack, new ItemStack(Item.gunpowder), new ItemStack(Item.glowstone), new ItemStack(Item.glowstone)}, 2); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.magicales), 5, new ItemStack[]{redstoneStack, simpleCatalystStack, gunpowderStack, new ItemStack(Item.glowstone), new ItemStack(Item.glowstone)}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundanePowerCatalyst), 10, new ItemStack[]{glowstoneDustStack, glowstoneDustStack, glowstoneDustStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundaneLengtheningCatalyst), 10, new ItemStack[]{redstoneStack, redstoneStack, redstoneStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.averagePowerCatalyst), 20, new ItemStack[]{new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.standardBindingAgent)}, 4); @@ -862,14 +870,17 @@ public class AlchemicalWizardry AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(Item.netherStar), incendiumStack, aquasalusStack, aetherStack}, 4); AlchemyRecipeRegistry.registerRecipe(new ItemStack(Block.web),2,new ItemStack[]{new ItemStack(Item.silk),new ItemStack(Item.silk),new ItemStack(Item.silk),new ItemStack(Item.silk),new ItemStack(Item.silk)},1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Item.gunpowder,2,0), 2, new ItemStack[]{new ItemStack(Item.gunpowder), new ItemStack(Item.coal), new ItemStack(Block.sand)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Item.gunpowder,2,0), 2, new ItemStack[]{gunpowderStack, new ItemStack(Item.coal), new ItemStack(Block.sand)}, 1); AlchemyRecipeRegistry.registerRecipe(strengthenedCatalystStackCrafted, 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Item.dyePowder,1,15), new ItemStack(Item.netherStalkSeeds)}, 3); AlchemyRecipeRegistry.registerRecipe(offensaStack,10, new ItemStack[]{strengthenedCatalystStack,incendiumStack, new ItemStack(Item.arrow), new ItemStack(Item.flint), new ItemStack(Item.arrow)},3); AlchemyRecipeRegistry.registerRecipe(praesidiumStack, 10, new ItemStack[]{strengthenedCatalystStack,tennebraeStack,ironIngotStack,new ItemStack(Block.web),redstoneStack}, 3); - AlchemyRecipeRegistry.registerRecipe(orbisTerraeStack, 10, new ItemStack[]{strengthenedCatalystStack,terraeStack, new ItemStack(Item.gunpowder), new ItemStack(Block.netherrack), new ItemStack(Block.sand)}, 3); + AlchemyRecipeRegistry.registerRecipe(orbisTerraeStack, 10, new ItemStack[]{strengthenedCatalystStack,terraeStack, gunpowderStack, new ItemStack(Block.netherrack), new ItemStack(Block.sand)}, 3); AlchemyRecipeRegistry.registerRecipe(concentratedCatalystStack,10,new ItemStack[]{strengthenedCatalystStack,fracturedBoneStack,goldNuggetStack},4); - AlchemyRecipeRegistry.registerRecipe(fracturedBoneStackCrafted, 2, new ItemStack[]{new ItemStack(Item.bone), new ItemStack(Item.bone),new ItemStack(Item.bone),new ItemStack(Item.bone), new ItemStack(Item.gunpowder)},1); + AlchemyRecipeRegistry.registerRecipe(fracturedBoneStackCrafted, 2, new ItemStack[]{new ItemStack(Item.bone), new ItemStack(Item.bone),new ItemStack(Item.bone),new ItemStack(Item.bone), gunpowderStack},1); + AlchemyRecipeRegistry.registerRecipe(virtusStack, 10, new ItemStack[]{redstoneStack, new ItemStack(Item.coal),strengthenedCatalystStack,redstoneStack,gunpowderStack}, 3); + AlchemyRecipeRegistry.registerRecipe(reductusStack,10,new ItemStack[]{redstoneStack, goldIngotStack, strengthenedCatalystStack,new ItemStack(Block.slowSand), new ItemStack(Item.carrot)},3); + AlchemyRecipeRegistry.registerRecipe(potentiaStack, 10, new ItemStack[]{glowstoneDustStack,strengthenedCatalystStack,lapisStack,lapisStack,new ItemStack(Item.netherQuartz)}, 3); HomSpellRegistry.registerBasicSpell(new ItemStack(Item.flintAndSteel), new SpellFireBurst()); HomSpellRegistry.registerBasicSpell(new ItemStack(Block.ice), new SpellFrozenWater()); @@ -940,6 +951,7 @@ public class AlchemicalWizardry MeteorRegistry.registerMeteorParadigm(new ItemStack(Item.netherStar), this.netherStarMeteorArray, this.netherStarMeteorRadius); //Register spell component recipes + ItemStack complexSpellCrystalStack = new ItemStack(ModItems.itemComplexSpellCrystal); ItemStack quartzRodStack = new ItemStack(ModItems.baseItems,1,0); ItemStack emptyCoreStack = new ItemStack(ModItems.baseItems,1,1); ItemStack magicalesCableStack = new ItemStack(ModItems.baseItems,1,2); @@ -963,6 +975,9 @@ public class AlchemicalWizardry ItemStack defensiveCoreStack = new ItemStack(ModItems.baseItems,1,20); ItemStack environmentalCoreStack = new ItemStack(ModItems.baseItems,1,21); ItemStack powerCoreStack = new ItemStack(ModItems.baseItems,1,22); + ItemStack costCoreStack = new ItemStack(ModItems.baseItems,1,23); + ItemStack potencyCoreStack = new ItemStack(ModItems.baseItems,1,24); + ItemStack obsidianBraceStack = new ItemStack(ModItems.baseItems,1,25); ItemStack magicalesCraftedCableStack = new ItemStack(ModItems.baseItems,5,2); ItemStack crackedRunicPlateStackCrafted = new ItemStack(ModItems.baseItems,2,15); @@ -973,6 +988,7 @@ public class AlchemicalWizardry GameRegistry.addRecipe(magicalesCraftedCableStack,"sss","mmm","sss",'s',new ItemStack(Item.silk),'m',magicalesStack); GameRegistry.addRecipe(woodBraceStack," il","ili","li ",'l', new ItemStack(Block.wood,1,craftingConstant),'i',new ItemStack(Item.silk)); GameRegistry.addRecipe(stoneBraceStack," is","isi","si ",'i', ironIngotStack,'s',reinforcedSlateStack); + GameRegistry.addRecipe(obsidianBraceStack," is","ibi","si ",'i', obsidianStack,'s',reinforcedSlateStack,'b',stoneBraceStack); GameRegistry.addRecipe(projectileCoreStack, "mbm","aca","mom",'c', emptyCoreStack,'b',weakBloodShardStack,'m', magicalesStack,'o', magicianBloodOrbStack,'a',new ItemStack(Item.arrow)); GameRegistry.addRecipe(selfCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',sanctusStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',glowstoneDustStack); @@ -992,9 +1008,14 @@ public class AlchemicalWizardry GameRegistry.addRecipe(defensiveCoreStack,"msm","geg","mom",'m', praesidiumStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); GameRegistry.addRecipe(environmentalCoreStack,"msm","geg","mom",'m', orbisTerraeStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(powerCoreStack,"msm","geg","mom",'m', virtusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(costCoreStack,"msm","geg","mom",'m', reductusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(potencyCoreStack,"msm","geg","mom",'m', potentiaStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + AlchemyRecipeRegistry.registerRecipe(crackedRunicPlateStackCrafted, 10, new ItemStack[]{imbuedSlateStack,imbuedSlateStack,concentratedCatalystStack}, 4); AlchemyRecipeRegistry.registerRecipe(runicPlateStack, 30, new ItemStack[]{crackedRunicPlateStack,terraeStack}, 5); AlchemyRecipeRegistry.registerRecipe(imbuedRunicPlateStack, 100, new ItemStack[]{magicalesStack,incendiumStack,runicPlateStack, runicPlateStack,aquasalusStack}, 5); + AlchemyRecipeRegistry.registerRecipe(complexSpellCrystalStack,50,new ItemStack[]{new ItemStack(ModItems.blankSpell), weakBloodShardStack, weakBloodShardStack, glassStack,goldIngotStack},3); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockConduit,1,0),"q q","ccc","q q",'q', quartzRodStack,'c', magicalesCableStack); @@ -1013,6 +1034,14 @@ public class AlchemicalWizardry GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,3),"bgb","ico","bgb",'c',environmentalCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,0),"bpb","ico","bpb",'c', powerCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,1),"bpb","ico","bpb",'c', powerCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,2),"bpb","ico","bpb",'c', powerCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,5),"bpb","ico","bpb",'c', costCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,6),"bpb","ico","bpb",'c', costCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,7),"bpb","ico","bpb",'c', costCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,10),"bpb","ico","bpb",'c', potencyCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,11),"bpb","ico","bpb",'c', potencyCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,12),"bpb","ico","bpb",'c', potencyCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder,5,15),fracturedBoneStack); @@ -1045,6 +1074,14 @@ public class AlchemicalWizardry LanguageRegistry.addName(crackedRunicPlateStack,"Cracked Runic Plate"); LanguageRegistry.addName(runicPlateStack,"Runic Plate"); LanguageRegistry.addName(imbuedRunicPlateStack,"Imbued Runic Plate"); + LanguageRegistry.addName(powerCoreStack, "Power Core"); + LanguageRegistry.addName(costCoreStack, "Reduction Core"); + LanguageRegistry.addName(potencyCoreStack, "Potency Core"); + LanguageRegistry.addName(obsidianBraceStack,"Obsidian Brace"); + LanguageRegistry.addName(virtusStack, "Virtus"); + LanguageRegistry.addName(reductusStack,"Reductus"); + LanguageRegistry.addName(potentiaStack, "Potentia"); + LanguageRegistry.addName(complexSpellCrystalStack, "Complex Spell Crystal"); } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/BM_src/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java index e9c7d252..ef7ee1b8 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java @@ -134,7 +134,7 @@ public class AlchemicalWizardryEventHooks EntityLivingBase entity = event.entityLiving; //if(!entity.isSneaking()) { - float percentIncrease = (i + 1) * 0.05f; + float percentIncrease = (i + 1) * 0.1f; if (event.entityLiving instanceof EntityPlayer) { diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java index e5a66c2d..8e910525 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java @@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ItemAlchemyBase extends Item { - private static final String[] ITEM_NAMES = new String[]{"Offensa","Praesidium","OrbisTerrae","StrengthenedCatalyst","ConcentratedCatalyst","FracturedBone"}; + private static final String[] ITEM_NAMES = new String[]{"Offensa","Praesidium","OrbisTerrae","StrengthenedCatalyst","ConcentratedCatalyst","FracturedBone","Virtus","Reductus","Potentia"}; @SideOnly(Side.CLIENT) private Icon[] icons; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java index fe4ece59..59f4578c 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java @@ -33,7 +33,7 @@ public class ItemComplexSpellCrystal extends EnergyItems @Override public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { - par3List.add("Crystal of infinite possibilities."); + par3List.add("Crystal of unimaginable power"); if (!(par1ItemStack.stackTagCompound == null)) { diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComponents.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComponents.java index d5e35b3c..dfaa9c4c 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComponents.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComponents.java @@ -20,7 +20,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ItemComponents extends Item { - private static final String[] ITEM_NAMES = new String[]{"QuartzRod", "EmptyCore", "MagicalesCable", "WoodBrace", "StoneBrace", "ProjectileCore", "SelfCore","MeleeCore","ParadigmBackPlate","OutputCable","FlameCore","IcyCore","GustCore","EarthenCore","InputCable","CrackedRunicPlate","RunicPlate","ScribedRunicPlate","DefaultCore","OffensiveCore","DefensiveCore","EnvironmentalCore","PowerCore","CostCore","PotencyCore"}; + private static final String[] ITEM_NAMES = new String[]{"QuartzRod", "EmptyCore", "MagicalesCable", "WoodBrace", "StoneBrace", "ProjectileCore", "SelfCore","MeleeCore","ParadigmBackPlate","OutputCable","FlameCore","IcyCore","GustCore","EarthenCore","InputCable","CrackedRunicPlate","RunicPlate","ScribedRunicPlate","DefaultCore","OffensiveCore","DefensiveCore","EnvironmentalCore","PowerCore","CostCore","PotencyCore","ObsidianBrace"}; @SideOnly(Side.CLIENT) private Icon[] icons; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java b/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java index 056e85f2..644c1f3f 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java @@ -889,6 +889,14 @@ public class Rituals autoAlchemyRitual.add(new RitualComponent(2,0,-2, RitualComponent.WATER)); autoAlchemyRitual.add(new RitualComponent(-2,0,-2, RitualComponent.WATER)); autoAlchemyRitual.add(new RitualComponent(-2,0,2, RitualComponent.WATER)); + autoAlchemyRitual.add(new RitualComponent(-3,0,-2, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(-2,0,-3, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(-3,0,2, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(-2,0,3, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(3,0,-2, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(2,0,-3, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(3,0,2, RitualComponent.FIRE)); + autoAlchemyRitual.add(new RitualComponent(2,0,3, RitualComponent.FIRE)); ritualList.add(new Rituals(waterRitual, 1, 500, new RitualEffectWater(), "Ritual of the Full Spring")); diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java index 67b3bb8c..4152689b 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java @@ -3,11 +3,17 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefaultWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefensiveWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeEnvironmentalWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeOffensiveWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileDefaultWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileEnvironmentalWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileOffensiveWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefaultWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefensiveWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfEnvironmentalWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfOffensiveWind; public class SpellEffectWind extends SpellEffect { @@ -38,22 +44,19 @@ public class SpellEffectWind extends SpellEffect @Override public void defaultModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void offensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override @@ -65,8 +68,7 @@ public class SpellEffectWind extends SpellEffect @Override public void defaultModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override @@ -78,15 +80,13 @@ public class SpellEffectWind extends SpellEffect @Override public void defensiveModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + //TODO parad.addWorldEffect(new MeleeEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override @@ -116,22 +116,19 @@ public class SpellEffectWind extends SpellEffect @Override protected int getCostForDefaultSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(100*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(0.5*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(500*(0.7d*this.powerEnhancement+1)*(0.8*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override @@ -143,8 +140,7 @@ public class SpellEffectWind extends SpellEffect @Override protected int getCostForDefaultMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(350*(1.0*this.potencyEnhancement+1)*(1.2*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override @@ -156,8 +152,7 @@ public class SpellEffectWind extends SpellEffect @Override protected int getCostForDefenseMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(150*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java new file mode 100644 index 00000000..31b324ef --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java @@ -0,0 +1,40 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; + +public class MeleeDefaultWind extends ExtrapolatedMeleeEntityEffect +{ + public MeleeDefaultWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(4+2.0f*potency); + this.setRadius(4+2.0f*potency); + this.setMaxNumberHit(potency+1); + } + + @Override + protected boolean entityEffect(World world, Entity entity, EntityPlayer player) + { + double wantedVel = -(0.5d+0.7d*this.powerUpgrades); + + if(entity instanceof EntityLiving) + { + double dist = Math.sqrt(entity.getDistanceToEntity(player)); + double xVel = wantedVel*(entity.posX - player.posX)/dist; + double yVel = wantedVel*(entity.posY - player.posY)/dist; + double zVel = wantedVel*(entity.posZ - player.posZ)/dist; + + entity.motionX = xVel; + entity.motionY = yVel; + entity.motionZ = zVel; + + return true; + } + + return false; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java new file mode 100644 index 00000000..5f146e25 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java @@ -0,0 +1,33 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; + +public class MeleeDefensiveWind extends ExtrapolatedMeleeEntityEffect +{ + public MeleeDefensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(3+0.3f*potency); + this.setRadius(2+0.3f*potency); + this.setMaxNumberHit(potency+1); + } + + @Override + protected boolean entityEffect(World world, Entity entity, EntityPlayer player) + { + double wantedVel = 0.5d+0.5d*this.powerUpgrades; + + if(entity instanceof EntityLiving) + { + entity.motionY = wantedVel; + + return true; + } + + return false; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java new file mode 100644 index 00000000..b611b907 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java @@ -0,0 +1,50 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityFallingSand; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellCenteredWorldEffect; + +public class MeleeEnvironmentalWind extends MeleeSpellCenteredWorldEffect +{ + public MeleeEnvironmentalWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(3*power + 2); + } + + @Override + public void onCenteredWorldEffect(EntityPlayer player, World world, int posX, int posY, int posZ) + { + int radius = this.potencyUpgrades; + double wantedVel = 0.5d; + + for(int i=-radius; i<=radius; i++) + { + for(int j=-radius; j<=radius; j++) + { + for(int k=-radius; k<=radius; k++) + { + Block block = Block.blocksList[world.getBlockId(posX+i, posY+j, posZ+k)]; + int meta = world.getBlockMetadata(posX+i, posY+j, posZ+k); + + if(SpellHelper.isBlockFluid(block)&&world.rand.nextFloat()<0.9f) + { + EntityFallingSand liquid = new EntityFallingSand(world, posX+i, posY+j, posZ+k, block.blockID, meta); + + if(liquid!=null) + { + liquid.motionX = (world.rand.nextDouble()-world.rand.nextDouble())*wantedVel; + liquid.motionY = (world.rand.nextDouble()-world.rand.nextDouble())*wantedVel; + liquid.motionZ = (world.rand.nextDouble()-world.rand.nextDouble())*wantedVel; + + world.spawnEntityInWorld(liquid); + } + } + } + } + } + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java new file mode 100644 index 00000000..3e13568a --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java @@ -0,0 +1,27 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfDefaultWind extends SelfSpellEffect +{ + public SelfDefaultWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + player.extinguish(); + player.fallDistance = 0; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java new file mode 100644 index 00000000..125ef17d --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java @@ -0,0 +1,39 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfDefensiveWind extends SelfSpellEffect +{ + public SelfDefensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + double radius = 1.5d*this.powerUpgrades+1.5d; + double posX = player.posX; + double posY = player.posY; + double posZ = player.posZ; + + List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); + + for(Entity entity: entities) + { + if((!entity.equals(player))&&entity instanceof EntityLiving) + { + ((EntityLiving)entity).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id,200,this.potencyUpgrades)); + } + } + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java new file mode 100644 index 00000000..bd7ba401 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java @@ -0,0 +1,34 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfOffensiveWind extends SelfSpellEffect +{ + public SelfOffensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + Vec3 vec = player.getLookVec(); + double wantedVelocity = 1.2 + this.powerUpgrades*0.3; + + player.motionX = vec.xCoord * wantedVelocity; + player.motionY = vec.yCoord * wantedVelocity; + player.motionZ = vec.zCoord * wantedVelocity; + + player.fallDistance = 0; + } +} diff --git a/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPotentia.png b/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPotentia.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ed68a8684b26cbd34f6de0de2bbf0492b69b9a GIT binary patch literal 433 zcmV;i0Z#sjP)Tk_jYh;)W1r}xZ+`{o_6D}qJ|szU@?5ifa7^dy zW-dg`GdH&*jL~Rq2}2*HEJ`XqK3;jeyA%sQm|m7-sUirz*6CPc5wzNe{LIApY0gqf zX-ZbAK0-LeqXJoIJnu`o(~5{rrOi@N|DA7PfG7achk+tgr1c8fLhzL!}~!;}<;NiNJbr4Ww5_1u~I b{?2>?oh6k!r^M>F00000NkvXXu0mjfg#f)% literal 0 HcmV?d00001 diff --git a/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemReductus.png b/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemReductus.png new file mode 100644 index 0000000000000000000000000000000000000000..304784d3277f5c77c9e7e8c35b337faa1d50754c GIT binary patch literal 429 zcmV;e0aE^nP)o3rO) zrHK-vrTEn|KR#yQf2VP(v2m(#-i*v!-af1Y@Y>F~JuBtcz|OJ8bkpE1gaAUsJ_Wj0 zL4E{wPc&{Eqy&T{5d_F{Pl%CWyX4{gDHmHJ%Qe>X&#i1_pcsW62 zdU?0GL{*hh?&$Z&{Tt;dpav2nK%9Mp#!($r z!RC&qz9oAOcqhDdJhe^1xJd7M#to(sfW782)&|Pb6GCLrDgbC-%=yAB=p*0X_jmFR X^mUPs@aTw)00000NkvXXu0mjfG~u>9 literal 0 HcmV?d00001 diff --git a/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png b/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fee0063dd8ab90fa81768b2258d4a0c3753ec4 GIT binary patch literal 417 zcmV;S0bc%zP)?=+3fG%`~cq|-bGJwhkM z))nzK1odM?z&Ef2CT0w(%C;7PsA?uybG^m;+@ik~#2V#zji!R|FZb0vnvrQ?)WI9O&oC6=p zFastbumVCGP`|Q4RoTRh2)M)&xDSEX)CC6)%aW-XSFLV%{ao9Su^FGhQH*#JJ)1E# z<1(3Rk4b7a*Na6%9=WRodMT~*)~&-lSFLTjunw~BWBt|GuHX3w(HIKydtBNj00000 LNkvXXu0mjf=~<&E literal 0 HcmV?d00001 diff --git a/resources/assets/alchemicalwizardry/textures/items/baseItemCrackedRunicPlate.png b/resources/assets/alchemicalwizardry/textures/items/baseItemCrackedRunicPlate.png index 1a8eaca2a060061d39ba68f65aef91814f2cfd91..934477e503303b4c495f4e7167e1592b65b2b85f 100644 GIT binary patch delta 410 zcmV;L0cHM*1d9ZaQwS3m8!!4|7HE-MEProFL_t(I%cYacj^Z#7MUPGAfe?9!7!(9M z{{Nd;AQl}9DI}7WSh#vc1_q{QT2m{lWS_cKx2!~j{|WsrX^atL%s-Jo-cq$@zu!~W zwTK95nyTaR_;&?LDU304I2`D@4iRCoSm2!dqoOCk{lPen6JWVqQkEr2lCWN{Uw=R! zzxST!Ij7T!5CU12AtHG1QA$zQ^>h!QX&UvUAcR2Q_l)BRK$@m_@3~&D%w{tH#&M)5 zieGKtZ8XNncDu!UkJcJ%EoqwKoFhpRvMj?|OIem!Yq8cU5qWMQNfH2Vw;Nh(x~^lj zS}~u`8HND>@BK8dX$JS|!!Ypq`F}|W0e~oqrgPi2L{UWBwlqznUR*ez&kVzW)|#rS z*lac^rRe*f5CU3j;y8Y>Q9Z75RaGJ)>~^~;*E9_xLQxc0YoDsW*l4X)k2d9bj#3Km zJTrTQIfJcysObUMt_%6NxVAaW}mI}oj00000Ne4wvM6N<$ Ef()IzxBvhE delta 409 zcmV;K0cQS-1d0TZQwR(J2s-A0D;kkoEPrlEL_t(I%cYasisC>JhQDq%2ML-46Ez~} zmG8ChE^}cDAtn%##;&>ApzEy5?ABFNG=Kl6Hmb`1jQwg^mZg?uss9XMt>thyP*s&~ zw_80Pk3ateU>+qHVk6%EPu%J zoG6M|uh%cqe*CUIO;gV2Gv0fa%O$Fca}Hw+RaH&*0P4CnPYk^GbX~_djsV1QjB}3L z?Z#|217I9SvMhV`pe#$>?RGflu+}0X#BogD_e4>|a=AoA$nzW#K}3wIK1+zA2!Q+j zj44aS%$LTfEy7{2d8Q534G?DzX=SJySFN|t4a$V(TVJP;A{7*m?27-MkG z(f9q|oA}kA00_g7zVEqSujX3-k3gzAG5j{byZHpmj?6UKVLRdg0000Zfeyyu8sd$2L(tMc2K<{7TD{Pm*Q RwSc~3@O1TaS?83{1OUTLdwc)@ literal 0 HcmV?d00001 diff --git a/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost3.png b/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost3.png index 930d6b75c2d4df9a6949c2722925b383117b455a..34e4a954c49f53f1d15a7b85ece6b78beb590490 100644 GIT binary patch delta 3997 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 b7g_!vH_LTG9beMv00000NkvXXu0mjfEJw{5 diff --git a/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png b/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png index 853997892763643893768dfcf34334d0e69bf201..d74001fe091c9ff81e4de2a5a5ae7e3e4725c78a 100644 GIT binary patch delta 3895 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 FV1oIfeA)m2 delta 3918 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 M07*qoM6N<$f_`$mV*mgE delta 4064 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 Sm-d+e0000