From f2b4f3db9ee5a98946e5bffc63b598d517d05488 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Mon, 13 Apr 2015 13:10:10 -0400 Subject: [PATCH] Added WoS reagent use, general touch ups. --- build.properties | 4 +- .../AlchemicalWizardry.java | 4 ++ .../common/AlchemicalWizardryEventHooks.java | 22 ++++++- .../common/items/armour/OmegaArmourEarth.java | 35 ++++++++++- .../common/items/armour/OmegaArmourWater.java | 38 +++++++++--- .../common/omega/OmegaParadigm.java | 2 +- .../common/omega/OmegaParadigmEarth.java | 60 ++++++++++++++++--- .../common/omega/OmegaParadigmFire.java | 6 +- .../common/omega/OmegaParadigmWater.java | 10 +++- .../rituals/RitualEffectWellOfSuffering.java | 8 ++- .../spell/complex/effect/SpellHelper.java | 4 +- 11 files changed, 166 insertions(+), 27 deletions(-) diff --git a/build.properties b/build.properties index 9653268d..d3454967 100644 --- a/build.properties +++ b/build.properties @@ -1,5 +1,5 @@ # -#Sat Apr 11 18:01:40 EDT 2015 +#Sun Apr 12 20:13:33 EDT 2015 mod_name=BloodMagic forge_version=10.13.2.1232 ccc_version=1.0.4.29 @@ -8,5 +8,5 @@ nei_version=1.0.3.64 package_group=com.wayoftime.bloodmagic mod_version=1.3.2Beta minetweaker_version=Dev-1.7.10-3.0.9B -build_number=2 mc_version=1.7.10 +build_number=3 diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 1efb8141..1bd352b4 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -1095,7 +1095,11 @@ public class AlchemicalWizardry AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.mycelium, 1, 0), 5, new ItemStack[]{new ItemStack(Blocks.grass), new ItemStack(Blocks.brown_mushroom), new ItemStack(Blocks.red_mushroom)}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.ice), 2, new ItemStack[]{waterBucketStack, new ItemStack(Items.snowball)}, 1); AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.potionitem, 1, 0), 1, new ItemStack[]{new ItemStack(Items.glass_bottle), new ItemStack(Blocks.cactus)}, 1); + AlchemyRecipeRegistry.registerRecipe(waterBucketStack, 1, new ItemStack[]{emptyBucketStack, new ItemStack(Blocks.cactus)}, 1); AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.glass_bottle, 3), 1, new ItemStack[]{glassStack, glassStack, glassStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.ghast_tear, 2), 100, new ItemStack[]{ghastTearStack, concentratedCatalystStack, weakBloodShardStack, new ItemStack(Blocks.soul_sand), new ItemStack(Blocks.soul_sand)}, 5); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.coal, 5), 1, new ItemStack[]{new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.clay_ball, 4), 5, new ItemStack[]{new ItemStack(Blocks.sand), waterBucketStack}, 2); } @EventHandler diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java index 9361c7e2..fcd4cf20 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java @@ -105,8 +105,13 @@ public class AlchemicalWizardryEventHooks @SubscribeEvent(priority=EventPriority.HIGHEST) public void onLivingHurtEvent(LivingHurtEvent event) { + System.out.println("IsRemote: " + event.entity.worldObj.isRemote); if(!event.isCanceled() && event.entityLiving instanceof EntityPlayer && !event.entityLiving.worldObj.isRemote) { + if(event.entityLiving.getHealth() > event.entityLiving.getMaxHealth()) + { + event.entityLiving.setHealth(event.entityLiving.getMaxHealth()); + } EntityPlayer player = (EntityPlayer)event.entityLiving; float prevHp = APISpellHelper.getCurrentAdditionalHP((EntityPlayer)event.entityLiving); @@ -155,7 +160,7 @@ public class AlchemicalWizardryEventHooks if(event.ammount <= 0.3) { - if(rand.nextInt(10) == 0) +// if(rand.nextInt(10) == 0) { event.ammount++; } @@ -216,6 +221,13 @@ public class AlchemicalWizardryEventHooks } } } + }else + { + reagentAmount = 0; + APISpellHelper.setPlayerMaxReagentAmount(player, 0); + NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getReagentBarPacket(null, 0, 0), (EntityPlayerMP)player); + APISpellHelper.setCurrentAdditionalHP(player, 0); + NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getAddedHPPacket(0, 0), (EntityPlayerMP)player); } //Consumes the amount float costPerTick = parad.getCostPerTickOfUse(player); @@ -238,14 +250,22 @@ public class AlchemicalWizardryEventHooks if(reagentAmount <= 0) { + boolean hasRevertedArmour = false; ItemStack[] armourInventory = player.inventory.armorInventory; for(ItemStack stack : armourInventory) { if(stack != null && stack.getItem() instanceof OmegaArmour) { ((OmegaArmour)stack.getItem()).revertArmour(player, stack); + hasRevertedArmour = true; } } + + if(hasRevertedArmour) + { + APISpellHelper.setCurrentAdditionalHP(player, 0); + NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getAddedHPPacket(0, 0), (EntityPlayerMP)player); + } } if(player instanceof EntityPlayerMP) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourEarth.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourEarth.java index d858ca18..c3723384 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourEarth.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourEarth.java @@ -28,6 +28,7 @@ public class OmegaArmourEarth extends OmegaArmour public OmegaArmourEarth(int armorType) { super(armorType); + this.storeYLevel = true; } @Override @@ -89,10 +90,14 @@ public class OmegaArmourEarth extends OmegaArmour } @Override - public Multimap getItemAttributeModifiers() + public Multimap getAttributeModifiers(ItemStack stack) { Multimap map = HashMultimap.create(); - map.put(SharedMonsterAttributes.knockbackResistance.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(179618 /** Random number **/, armorType), "Armor modifier" + armorType, getKnockbackResist(), 0)); + int yLevel = this.getYLevelStored(stack); + map.put(SharedMonsterAttributes.knockbackResistance.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(179618 /** Random number **/, armorType), "Knockback modifier" + armorType, getKnockbackResist(), 0)); + map.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(80532 /** Random number **/, armorType), "Health modifier" + armorType, getDefaultArmourBoost()*getHealthBoostModifierForLevel(yLevel), 1)); + map.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(85112 /** Random number **/, armorType), "Damage modifier" + armorType, getDefaultArmourBoost()*getDamageModifierForLevel(yLevel), 2)); + return map; } @@ -100,4 +105,30 @@ public class OmegaArmourEarth extends OmegaArmour { return 0.25f; } + + public float getDefaultArmourBoost() + { + switch(this.armorType) + { + case 0: + return 2.5f; + case 1: + return 4; + case 2: + return 3.5f; + case 3: + return 2; + } + return 0.25f; + } + + public float getHealthBoostModifierForLevel(int yLevel) + { + return (float) (0.05 * Math.max(-0.5, -((float)yLevel)/64f * 1.5f + 5.5f)); + } + + public float getDamageModifierForLevel(int yLevel) + { + return 0.02f * ((((float)yLevel)/64f) * 1.5f - 1); + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourWater.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourWater.java index 1532cf70..11e0e127 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourWater.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/armour/OmegaArmourWater.java @@ -97,12 +97,13 @@ public class OmegaArmourWater extends OmegaArmour BiomeGenBase biome = BiomeGenBase.getBiome(biomeID); if(biome != null) { - map.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(85312 /** Random number **/, armorType), "Armor modifier" + armorType, getDefaultHealthBoost()*getHealthBoostModifierForBiome(biome), 0)); + map.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(85312 /** Random number **/, armorType), "Health modifier" + armorType, getDefaultArmourBoost()*getHealthBoostModifierForBiome(biome), 2)); + map.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(85432 /** Random number **/, armorType), "Damage modifier" + armorType, getDefaultArmourBoost()*getDamageModifierForBiome(biome), 2)); } return map; } - public float getDefaultHealthBoost() + public float getDefaultArmourBoost() { switch(this.armorType) { @@ -120,21 +121,44 @@ public class OmegaArmourWater extends OmegaArmour public float getHealthBoostModifierForBiome(BiomeGenBase biome) { + float modifier = 0.05f; if(biome.isEqualTo(BiomeGenBase.hell)) { - return -0.5f; + return modifier * -0.5f; } - if(biome.isEqualTo(BiomeGenBase.ocean)) + if(biome.isEqualTo(BiomeGenBase.ocean) || biome.isEqualTo(BiomeGenBase.river)) { - return 2.0f; + return modifier * 2.0f; } if(biome.isHighHumidity()) { - return 1.5f; + return modifier * 1.5f; } - return 0.5f; + return modifier * 0.5f; + } + + public float getDamageModifierForBiome(BiomeGenBase biome) + { + float modifier = 0.03f; + + if(biome.isEqualTo(BiomeGenBase.hell)) + { + return modifier * -0.5f; + } + + if(biome.isEqualTo(BiomeGenBase.ocean) || biome.isEqualTo(BiomeGenBase.river)) + { + return modifier * 2.0f; + } + + if(biome.isHighHumidity()) + { + return modifier * 1.5f; + } + + return modifier * 0.5f; } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigm.java b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigm.java index 40ad85d1..d90b989f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigm.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigm.java @@ -74,7 +74,7 @@ public class OmegaParadigm public int getMaxAdditionalHealth() { - return 50; + return 20; } public boolean setOmegaStalling(EntityPlayer player, int duration) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmEarth.java b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmEarth.java index e722bd91..794271f8 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmEarth.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmEarth.java @@ -1,5 +1,13 @@ package WayofTime.alchemicalWizardry.common.omega; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmour; @@ -7,18 +15,52 @@ public class OmegaParadigmEarth extends OmegaParadigm { public OmegaParadigmEarth(OmegaArmour helmet, OmegaArmour chestPiece, OmegaArmour leggings, OmegaArmour boots) { - super(ReagentRegistry.terraeReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 10, 100)); + super(ReagentRegistry.terraeReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 1, 10)); } -// @Override -// public float getCostPerTickOfUse(EntityPlayer player) -// { -// if(player.isInWater()) + @Override + public float getCostPerTickOfUse(EntityPlayer player) + { +// if(player.isBurning()) // { // return 0.5f; -// }else -// { -// return 1; // } -// } + return 1; + } + + @Override + public void onUpdate(World world, EntityPlayer player, ItemStack stack) + { + if(world.getWorldTime() % 100 == 0 && !world.isRemote) + { + if(player.posY < 50 && player.getHealth() < player.getMaxHealth()) + { + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 200, 0, true)); + } + +// if(player.isInWater()) +// { +// player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 200, 2, true)); +// player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 200, 2, true)); +// player.addPotionEffect(new PotionEffect(Potion.weakness.id, 200, 1, true)); +// } + } + + if(player.posY > 100) + { + player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id, 200, 0, true)); + } + } + + @Override + public boolean getBlockEffectWhileInside(Entity entity, int x, int y, int z) + { + return true; + } + + @Override + public void onOmegaKeyPressed(EntityPlayer player, ItemStack stack) + { + + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmFire.java b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmFire.java index 70477d72..4802841f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmFire.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmFire.java @@ -14,12 +14,16 @@ public class OmegaParadigmFire extends OmegaParadigm { public OmegaParadigmFire(OmegaArmour helmet, OmegaArmour chestPiece, OmegaArmour leggings, OmegaArmour boots) { - super(ReagentRegistry.incendiumReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 10, 100)); + super(ReagentRegistry.incendiumReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 1, 10)); } @Override public float getCostPerTickOfUse(EntityPlayer player) { + if(player.isBurning()) + { + return 0.5f; + } return 1; } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmWater.java b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmWater.java index 60e0a26c..941f82cd 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmWater.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/omega/OmegaParadigmWater.java @@ -17,7 +17,7 @@ public class OmegaParadigmWater extends OmegaParadigm { public OmegaParadigmWater(OmegaArmour helmet, OmegaArmour chestPiece, OmegaArmour leggings, OmegaArmour boots) { - super(ReagentRegistry.aquasalusReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 10, 100)); + super(ReagentRegistry.aquasalusReagent, helmet, chestPiece, leggings, boots, new ReagentRegenConfiguration(50, 1, 10)); } @Override @@ -37,6 +37,14 @@ public class OmegaParadigmWater extends OmegaParadigm { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.id, 3, 0, true)); player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionAmphibian.id, 3, 0, true)); + + if(world.getWorldTime() % 100 == 0 && !world.isRemote) + { + if(player.isInWater() && player.getHealth() < player.getMaxHealth()) + { + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 200, 0, true)); + } + } } @Override diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java index e2176079..b6fe5c99 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.rituals; import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; @@ -19,6 +20,8 @@ public class RitualEffectWellOfSuffering extends RitualEffect { public static final int timeDelay = 25; public static final int amount = 10; + + private static final int tennebraeDrain = 5; @Override public void performEffect(IMasterRitualStone ritualStone) @@ -65,6 +68,7 @@ public class RitualEffectWellOfSuffering extends RitualEffect List list = world.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); int entityCount = 0; + boolean hasTennebrae = this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tennebraeDrain, false); if (currentEssence < this.getCostPerRefresh() * list.size()) { @@ -80,8 +84,10 @@ public class RitualEffectWellOfSuffering extends RitualEffect if (livingEntity.attackEntityFrom(DamageSource.outOfWorld, 1)) { + hasTennebrae = hasTennebrae && this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tennebraeDrain, true); + entityCount++; - tileAltar.sacrificialDaggerCall(this.amount, true); + tileAltar.sacrificialDaggerCall(this.amount * (hasTennebrae ? 2 : 1), true); } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java index 45db03ff..0b4afd33 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -547,13 +547,13 @@ public class SpellHelper int[] array = ((ISidedInventory)inventory).getAccessibleSlotsFromSide(dir.ordinal()); for(int in : array) { - canBeInserted[in] = ((ISidedInventory)inventory).canInsertItem(in, stack, dir.ordinal()); + canBeInserted[in] = inventory.isItemValidForSlot(in, stack) && ((ISidedInventory)inventory).canInsertItem(in, stack, dir.ordinal()); } }else { for(int i=0; i