From 4f0b6199f694862b2eb6cc7b7f4c9ce03272a137 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 19 Jan 2014 16:15:10 -0500 Subject: [PATCH] Finished self-spells for Fire --- .../common/items/ItemComplexSpellCrystal.java | 13 +++++- .../complex/SpellModifierEnvironmental.java | 2 +- .../common/spell/complex/SpellParadigm.java | 36 +++++++++++++++ .../spell/complex/effect/SpellEffect.java | 15 ++++++ .../spell/complex/effect/SpellEffectFire.java | 21 ++++----- .../spell/complex/effect/SpellHelper.java | 46 +++++++++++++++++++ .../fire/SelfEnvironmentalFire.java | 35 ++++++++++++++ 7 files changed, 153 insertions(+), 15 deletions(-) create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java index 2a1a756c..58ebedef 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java @@ -7,10 +7,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellModifierDefault; +import WayofTime.alchemicalWizardry.common.spell.complex.SpellModifierOffensive; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigm; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffectFire; +import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancementPotency; +import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancementPower; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -54,9 +56,16 @@ public class ItemComplexSpellCrystal extends EnergyItems return par1ItemStack; } + if(par2World.isRemote) + { + return par1ItemStack; + } + SpellParadigm parad = new SpellParadigmSelf(); parad.addBufferedEffect(new SpellEffectFire()); - parad.modifyBufferedEffect(new SpellModifierDefault()); + parad.modifyBufferedEffect(new SpellModifierOffensive()); + parad.applyEnhancement(new SpellEnhancementPower()); + parad.applyEnhancement(new SpellEnhancementPotency()); parad.castSpell(par2World, par3EntityPlayer, par1ItemStack); return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java index 1da4620a..ff9ef7f4 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java @@ -4,6 +4,6 @@ public class SpellModifierEnvironmental extends SpellModifier { public SpellModifierEnvironmental() { - super(SpellModifier.DEFENSIVE); + super(SpellModifier.ENVIRONMENTAL); } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java index 1eaae817..893d3ae7 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java @@ -118,4 +118,40 @@ public abstract class SpellParadigm } public abstract int getDefaultCost(); + + public int getBufferedEffectPower() + { + SpellEffect eff = this.getBufferedEffect(); + + if(eff!=null) + { + return eff.getPowerEnhancements(); + } + + return 0; + } + + public int getBufferedEffectCost() + { + SpellEffect eff = this.getBufferedEffect(); + + if(eff!=null) + { + return eff.getCostEnhancements(); + } + + return 0; + } + + public int getBufferedEffectPotency() + { + SpellEffect eff = this.getBufferedEffect(); + + if(eff!=null) + { + return eff.getPotencyEnhancements(); + } + + return 0; + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java index df6f8cf8..9ae235a4 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java @@ -154,4 +154,19 @@ public abstract class SpellEffect protected abstract int getCostForOffenseMelee(); protected abstract int getCostForDefenseMelee(); protected abstract int getCostForEnvironmentMelee(); + + public int getPowerEnhancements() + { + return this.powerEnhancement; + } + + public int getCostEnhancements() + { + return this.costEnhancement; + } + + public int getPotencyEnhancements() + { + return this.potencyEnhancement; + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java index 32d7ab02..49bd8ac1 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java @@ -4,6 +4,9 @@ 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.fire.SelfDefaultFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfDefensiveFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfEnvironmentalFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfOffensiveFire; public class SpellEffectFire extends SpellEffect { @@ -43,22 +46,19 @@ public class SpellEffectFire extends SpellEffect @Override public void offensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfOffensiveFire(powerEnhancement,potencyEnhancement,costEnhancement)); } @Override public void defensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfDefensiveFire(powerEnhancement,potencyEnhancement,costEnhancement)); } @Override public void environmentalModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfEnvironmentalFire(powerEnhancement, potencyEnhancement, costEnhancement)); } @Override @@ -120,15 +120,13 @@ public class SpellEffectFire extends SpellEffect @Override protected int getCostForDefaultSelf() { - // TODO Auto-generated method stub - return 1000; + return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)); } @Override protected int getCostForOffenseSelf() { - // TODO Auto-generated method stub - return 0; + return 100*(int)((this.powerEnhancement+1)*Math.pow(2, potencyEnhancement)); } @Override @@ -141,8 +139,7 @@ public class SpellEffectFire extends SpellEffect @Override protected int getCostForEnvironmentSelf() { - // TODO Auto-generated method stub - return 0; + return (int) ((15*Math.pow(1.7, powerEnhancement)+10*Math.pow(potencyEnhancement,1.8))*Math.pow(0.8, costEnhancement)); } @Override diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java new file mode 100644 index 00000000..d9bf5e50 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -0,0 +1,46 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect; + +import java.util.List; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class SpellHelper +{ + public static Random rand = new Random(); + + public static void smeltBlockInWorld(World world, int posX, int posY, int posZ) + { + FurnaceRecipes recipes = FurnaceRecipes.smelting(); + + Block block = Block.blocksList[world.getBlockId(posX, posY, posZ)]; + if(block==null) + { + return; + } + + int meta = world.getBlockMetadata(posX, posY, posZ); + + ItemStack smeltedStack = recipes.getSmeltingResult(new ItemStack(block,1,meta)); + if(smeltedStack!=null && smeltedStack.getItem() instanceof ItemBlock) + { + world.setBlock(posX, posY, posZ, smeltedStack.itemID, smeltedStack.getItemDamage(), 3); + } + } + + public static List getEntitiesInRange(World world, double posX, double posY, double posZ, double horizontalRadius, double verticalRadius) + { + return world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(posX-0.5f, posY-0.5f, posZ-0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(horizontalRadius, verticalRadius, horizontalRadius)); + } + + public static double gaussian(double d) + { + return d * ((rand.nextFloat() - 0.5D)); + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfEnvironmentalFire.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfEnvironmentalFire.java index 769871cc..cd8f1613 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfEnvironmentalFire.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfEnvironmentalFire.java @@ -1,7 +1,9 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire; +import net.minecraft.block.Block; 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.SelfSpellEffect; public class SelfEnvironmentalFire extends SelfSpellEffect @@ -17,5 +19,38 @@ public class SelfEnvironmentalFire extends SelfSpellEffect int posX = (int) Math.round(player.posX - 0.5f); int posY = (int) player.posY; int posZ = (int) Math.round(player.posZ - 0.5f); + + int powRadius = this.powerUpgrades; + int potRadius = this.potencyUpgrades-1; + + for(int i=-powRadius;i<=powRadius;i++) + { + for(int j=-powRadius;j<=powRadius;j++) + { + for(int k=-powRadius;k<=powRadius;k++) + { + if(world.isAirBlock(posX+i, posY+j, posZ+k)) + { + world.setBlock(posX+i, posY+j, posZ+k, Block.fire.blockID); + + } + } + } + } + + for(int i=-potRadius;i<=potRadius;i++) + { + for(int j=-potRadius;j<=potRadius;j++) + { + for(int k=-potRadius;k<=potRadius;k++) + { + if(!world.isAirBlock(posX+i, posY+j, posZ+k)) + { + SpellHelper.smeltBlockInWorld(world, posX+i, posY+j, posZ+k); + } + } + } + } + } }