From 6ea17510b75ec618cc7799d2e5bef169a8984cda Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 2 Oct 2016 15:03:31 -0400 Subject: [PATCH] - Added a potion effect called "(-) Immunity", which allows the training of Living Armour Downgrades. This potion is crafted using a Draft of Angelus with a potion flask. Check the uses of the flask! - Added some more framework for the Living Armour Downgrades. - Modified the Grim Reaper's Sprint so it is better at later levels. --- changelog.txt | 3 + .../api/livingArmour/StatTracker.java | 5 + .../bloodmagic/livingArmour/LivingArmour.java | 11 +- .../LivingArmourUpgradeSlowness.java | 27 +++- .../downgrade/StatTrackerMeleeDecrease.java | 130 ++++++++++++++++ .../downgrade/StatTrackerSlowness.java | 141 ++++++++++++++++++ .../LivingArmourUpgradeGrimReaperSprint.java | 28 +++- .../registry/ModArmourTrackers.java | 5 + .../bloodmagic/registry/ModPotions.java | 3 + .../bloodmagic/registry/ModRecipes.java | 2 + .../handler/event/StatTrackerHandler.java | 4 + .../bloodmagic/textures/misc/potions.png | Bin 1506 -> 1577 bytes 12 files changed, 348 insertions(+), 11 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java diff --git a/changelog.txt b/changelog.txt index 041d8bf7..a83df253 100644 --- a/changelog.txt +++ b/changelog.txt @@ -2,6 +2,9 @@ Version 2.1.0-66 ------------------------------------------------------ - Made it so that when you acquire a Living Armour Upgrade from a Tome, it raises the corresponding Stat Tracker up to that upgrade level. +- Added a potion effect called "(-) Immunity", which allows the training of Living Armour Downgrades. This potion is crafted using a Draft of Angelus with a potion flask. Check the uses of the flask! +- Added some more framework for the Living Armour Downgrades. +- Modified the Grim Reaper's Sprint so it is better at later levels. ------------------------------------------------------ Version 2.1.0-65 diff --git a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java index ee27a048..33fa47d5 100644 --- a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java +++ b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java @@ -73,4 +73,9 @@ public abstract class StatTracker public abstract boolean providesUpgrade(String key); public abstract void onArmourUpgradeAdded(LivingArmourUpgrade upgrade); + + public boolean isTrackerDowngrade() + { + return false; + } } diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java index 27e77383..1ef1b6f7 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java @@ -20,6 +20,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; +import WayofTime.bloodmagic.registry.ModPotions; import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.TextHelper; @@ -108,7 +109,7 @@ public class LivingArmour implements ILivingArmour if (nextLevel > currentLevel) { int upgradePointDifference = upgrade.getCostOfUpgrade() - upgradeMap.get(key).getCostOfUpgrade(); - if (upgradePointDifference >= 0 && totalUpgradePoints + upgradePointDifference <= maxUpgradePoints) + if (Math.abs(upgradePointDifference) >= 0 && totalUpgradePoints + upgradePointDifference <= maxUpgradePoints) { upgradeMap.put(key, upgrade); totalUpgradePoints += upgradePointDifference; @@ -190,6 +191,8 @@ public class LivingArmour implements ILivingArmour } } + boolean allowOnlyDowngrades = player.isPotionActive(ModPotions.immuneSuppress); + for (Entry entry : trackerMap.entrySet()) { StatTracker tracker = entry.getValue(); @@ -219,6 +222,12 @@ public class LivingArmour implements ILivingArmour } } + if ((allowOnlyDowngrades != tracker.isTrackerDowngrade())) + { + tracker.onDeactivatedTick(world, player, this); + continue; + } + if (tracker.onTick(world, player, this)) { List upgradeList = tracker.getUpgrades(); diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java index 14e41fe1..0d3a72e1 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java @@ -1,28 +1,43 @@ package WayofTime.bloodmagic.livingArmour.downgrade; +import java.util.UUID; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.MobEffects; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.ILivingArmour; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + public class LivingArmourUpgradeSlowness extends LivingArmourUpgrade { - public static final int[] costs = new int[] { -50 }; - public static final int[] slownessDuration = new int[] { 30 * 20 }; + public static final int[] costs = new int[] { -10, -17, -23, -35, -48, -60, -80, -110, -160, -200 }; + public static final double[] speedModifier = new double[] { -0.1, -0.2, -0.3, -0.4, -0.45, -0.5, -0.55, -0.6, -0.65, -0.7 }; public LivingArmourUpgradeSlowness(int level) { super(level); } + @Override + public Multimap getAttributeModifiers() + { + Multimap modifierMap = HashMultimap.create(); + + modifierMap.put(SharedMonsterAttributes.MOVEMENT_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(85472, 8502), "speed modifier" + 2, speedModifier[this.level], 1)); + + return modifierMap; + } + @Override public void onTick(World world, EntityPlayer player, ILivingArmour livingArmour) { - player.addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, 1, 0, true, false)); + } @Override @@ -34,7 +49,7 @@ public class LivingArmourUpgradeSlowness extends LivingArmourUpgrade @Override public int getMaxTier() { - return 1; + return 10; } @Override diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java new file mode 100644 index 00000000..131cf472 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java @@ -0,0 +1,130 @@ +package WayofTime.bloodmagic.livingArmour.tracker.downgrade; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; +import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeMeleeDecrease; +import WayofTime.bloodmagic.util.Utils; + +public class StatTrackerMeleeDecrease extends StatTracker +{ + public double totalDamageDealt = 0; + + public static HashMap changeMap = new HashMap(); + public static int[] damageRequired = new int[] { 40, 100, 200, 350, 650, 1000, 1500, 2000, 3500, 7500 }; + + public static void incrementCounter(LivingArmour armour, double damage) + { + changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + damage : damage); + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.meleeDecrease"; + } + + @Override + public void resetTracker() + { + this.totalDamageDealt = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + totalDamageDealt = tag.getDouble(Constants.Mod.MODID + ".tracker.meleeDecrease"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setDouble(Constants.Mod.MODID + ".tracker.meleeDecrease", totalDamageDealt); + } + + @Override + public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (changeMap.containsKey(livingArmour)) + { + double change = Math.abs(changeMap.get(livingArmour)); + if (change > 0) + { + totalDamageDealt += Math.abs(changeMap.get(livingArmour)); + System.out.println(totalDamageDealt); + changeMap.put(livingArmour, 0d); + + this.markDirty(); + + return true; + } + } + + return false; + } + + @Override + public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (changeMap.containsKey(livingArmour)) + { + changeMap.remove(livingArmour); + } + } + + @Override + public List getUpgrades() + { + List upgradeList = new ArrayList(); + + for (int i = 0; i < 10; i++) + { + if (totalDamageDealt >= damageRequired[i]) + { + upgradeList.add(new LivingArmourUpgradeMeleeDecrease(i)); + } + } + + return upgradeList; + } + + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); + } + + @Override + public boolean providesUpgrade(String key) + { + return key.equals(Constants.Mod.MODID + ".upgrade.meleeDecrease"); + } + + @Override + public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) + { + if (upgrade instanceof LivingArmourUpgradeMeleeDecrease) + { + int level = upgrade.getUpgradeLevel(); + if (level < damageRequired.length) + { + totalDamageDealt = Math.max(totalDamageDealt, damageRequired[level]); + this.markDirty(); + } + } + } + + @Override + public boolean isTrackerDowngrade() + { + return true; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java new file mode 100644 index 00000000..05d43081 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java @@ -0,0 +1,141 @@ +package WayofTime.bloodmagic.livingArmour.tracker.downgrade; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.MobEffects; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; +import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeSlowness; +import WayofTime.bloodmagic.util.Utils; + +public class StatTrackerSlowness extends StatTracker +{ + public static Map lastPosX = new HashMap(); + public static Map lastPosZ = new HashMap(); + + public static int[] blocksRequired = new int[] { 200, 1000, 2000, 4000, 7000, 15000, 25000, 35000, 50000, 70000 }; + + public double totalMovement = 0; + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.slowness"; + } + + @Override + public void resetTracker() + { + this.totalMovement = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + totalMovement = tag.getDouble(Constants.Mod.MODID + ".tracker.slowness"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setDouble(Constants.Mod.MODID + ".tracker.slowness", totalMovement); + + } + + @Override + public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (!lastPosX.containsKey(player)) + { + lastPosX.put(player, player.posX); + lastPosZ.put(player, player.posZ); + return false; + } + + if (!player.onGround || !player.isPotionActive(MobEffects.SLOWNESS)) + { + return false; + } + + double distanceTravelled = Math.sqrt(Math.pow(lastPosX.get(player) - player.posX, 2) + Math.pow(lastPosZ.get(player) - player.posZ, 2)); + + if (distanceTravelled > 0.0001 && distanceTravelled < 2) + { + totalMovement += distanceTravelled; + + lastPosX.put(player, player.posX); + lastPosZ.put(player, player.posZ); + + markDirty(); + + return true; + } + + lastPosX.put(player, player.posX); + lastPosZ.put(player, player.posZ); + + return false; + } + + @Override + public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + + } + + @Override + public List getUpgrades() + { + List upgradeList = new ArrayList(); + + for (int i = 0; i < 10; i++) + { + if (totalMovement >= blocksRequired[i]) + { + upgradeList.add(new LivingArmourUpgradeSlowness(i)); + } + } + + return upgradeList; + } + + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalMovement, blocksRequired, currentLevel); + } + + @Override + public boolean providesUpgrade(String key) + { + return key.equals(Constants.Mod.MODID + ".upgrade.slowness"); + } + + @Override + public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) + { + if (upgrade instanceof LivingArmourUpgradeSlowness) + { + int level = upgrade.getUpgradeLevel(); + if (level < blocksRequired.length) + { + totalMovement = Math.max(totalMovement, blocksRequired[level]); + this.markDirty(); + } + } + } + + @Override + public boolean isTrackerDowngrade() + { + return true; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeGrimReaperSprint.java b/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeGrimReaperSprint.java index 22722f61..bd600265 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeGrimReaperSprint.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeGrimReaperSprint.java @@ -1,18 +1,25 @@ package WayofTime.bloodmagic.livingArmour.upgrade; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.MobEffects; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.ILivingArmour; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.TextHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; public class LivingArmourUpgradeGrimReaperSprint extends LivingArmourUpgrade { public static final int[] costs = new int[] { 20, 50, 130, 270, 450, 580, 700, 800, 900, 1000 }; public static final int[] rebirthDelay = new int[] { 20 * 60 * 60, 20 * 60 * 50, 20 * 60 * 45, 20 * 60 * 40, 20 * 60 * 30, 20 * 60 * 25, 20 * 60 * 15, 20 * 60 * 10, 20 * 60 * 5, 20 * 60 }; + public static final int[] strengthDuration = new int[] { 0, 0, 100, 100, 200, 200, 200, 300, 300, 400 }; + public static final int[] strengthValue = new int[] { 0, 0, 0, 0, 0, 1, 1, 2, 2, 3 }; + public static final int[] resistanceDuration = new int[] { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 }; + public static final int[] resistanceValue = new int[] { 0, 0, 0, 0, 0, 1, 1, 2, 2, 3 }; + public static final float[] healthOnRevive = new float[] { 0.2f, 0.2f, 0.3f, 0.3f, 0.4f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f }; public int deathTimer = 0; @@ -68,7 +75,20 @@ public class LivingArmourUpgradeGrimReaperSprint extends LivingArmourUpgrade public void applyEffectOnRebirth(EntityPlayer player) { - player.setHealth(player.getMaxHealth()); + player.setHealth(player.getMaxHealth() * healthOnRevive[this.level]); + + int strDur = strengthDuration[this.level]; + if (strDur > 0) + { + player.addPotionEffect(new PotionEffect(MobEffects.STRENGTH, strDur, strengthValue[this.level])); + } + + int resDur = resistanceDuration[this.level]; + if (resDur > 0) + { + player.addPotionEffect(new PotionEffect(MobEffects.RESISTANCE, resDur, resistanceValue[this.level])); + } + deathTimer = rebirthDelay[this.level]; ChatUtil.sendNoSpam(player, TextHelper.localizeEffect(chatBase + "grimReaper")); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java index c9ad96fb..a0dc095d 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -28,6 +28,8 @@ import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSelfSacrifice; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSolarPowered; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSprintAttack; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerStepAssist; +import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerMeleeDecrease; +import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerSlowness; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeArrowShot; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeCriticalStrike; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; @@ -75,6 +77,9 @@ public class ModArmourTrackers LivingArmourHandler.registerStatTracker(StatTrackerFireResist.class); LivingArmourHandler.registerStatTracker(StatTrackerNightSight.class); + LivingArmourHandler.registerStatTracker(StatTrackerMeleeDecrease.class); + LivingArmourHandler.registerStatTracker(StatTrackerSlowness.class); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradePoisonResist(0)); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModPotions.java b/src/main/java/WayofTime/bloodmagic/registry/ModPotions.java index b0f59b86..23375920 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModPotions.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModPotions.java @@ -21,6 +21,8 @@ public class ModPotions public static Potion plantLeech; public static Potion deafness; + public static Potion immuneSuppress; + public static void init() { new PotionEventHandlers(); @@ -47,6 +49,7 @@ public class ModPotions constrict = registerPotion("Constriction", new ResourceLocation("constrict"), true, 0x000000, 6, 0); plantLeech = registerPotion("Plant Leech", new ResourceLocation("plantLeech"), true, 0x000000, 7, 0); deafness = registerPotion("Deaf", new ResourceLocation("deafness"), true, 0x000000, 0, 1); + immuneSuppress = registerPotion("(-) Immunity", new ResourceLocation("immuneSuppress"), true, 0x000000, 1, 1); // heavyHeart = new PotionBloodMagic("Heavy Heart", new // ResourceLocation(resourceLocation + // heavyHeart.getName().toLowerCase()), true, 0, 0, 0); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 18d7f112..304aed4e 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -444,6 +444,8 @@ public class ModRecipes addPotionRecipe(1000, 1, new ItemStack(ModItems.BLOOD_SHARD, 1, 0), new PotionEffect(MobEffects.HEALTH_BOOST, 2 * 60 * 20)); addPotionRecipe(1000, 1, new ItemStack(Items.BEETROOT), new PotionEffect(ModPotions.deafness, 450)); + + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTablePotionRecipe(5000, 100, 4, ItemLivingArmourPointsUpgrade.getStack(ItemLivingArmourPointsUpgrade.DRAFT_ANGELUS), new PotionEffect(ModPotions.immuneSuppress, 15 * 60 * 20))); } static ItemStack mundaneLengtheningStack = ItemComponent.getStack(ItemComponent.CATALYST_LENGTH_1); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java index 639c7a06..c84d0268 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java @@ -34,6 +34,7 @@ import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerNightSight; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerPhysicalProtect; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSolarPowered; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSprintAttack; +import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerMeleeDecrease; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience; import WayofTime.bloodmagic.util.Utils; @@ -162,6 +163,9 @@ public class StatTrackerHandler { StatTrackerMeleeDamage.incrementCounter(armour, amount); + if (player.isPotionActive(MobEffects.WEAKNESS)) + StatTrackerMeleeDecrease.incrementCounter(armour, amount); + if (player.worldObj.getLight(player.getPosition()) <= 9) StatTrackerNightSight.incrementCounter(armour, amount); diff --git a/src/main/resources/assets/bloodmagic/textures/misc/potions.png b/src/main/resources/assets/bloodmagic/textures/misc/potions.png index c3d67c513a141cd5d8bda89261dbe8904cc977a4..49c30a6e3a54c8bedba5f62ceaf3a7727f82fd28 100644 GIT binary patch delta 1310 zcmV+(1>ySQ3#kl{Dlz{6{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2jB_<4l)(68vK}%TP%N#Nkle)nM^((80PG~fBU!B8Cbu)_S$=P0RR9100000005H;0k)G60R)r40SkXA z=Sq`F)gxnfdE}92`FT#XZ{N05lGOsR6)R09o6K|7lJc|-d7fF_P(5v(JpbRmNRD0f zz2v!o^DL*gA3Qi|XT7ZYVRhFo9a(*(dSms$>O}RdO>SQ_2F{~{2PYjoI9a*#2b0y$ zJJ_1HR6p5;f2HSF-6i1Hk+0Rr19S10S0AljQyr@g&z&t_P`#=8Q}yiX=hb)Sax5$6W7U5v#`pg0 zxOV^0Cblmc1LyzxfA!jb{`We2+*?9$ML>6m+vbxBc1E2_pEWuWyLhw@%6L(B{$l>XbkM?5x`HI-o|=D z_1o&N)wR{V)sw5^>+JWt>cfB4ZR5=M_p$z-arVEi`sG-6ZS{sxEUNx8ip1gZx$4!` zWz|2%e$QCrn9GWRJu(NdI?F#Z+kfKFEzM5^p2csfe^xIZ%MXsBZPhiS5Ul4^_3%vR zZ*=k>&*W=d7Cbbwd~7Vgd~V(M#xbjotZ}?$#lQt#09J4H9XZIYjyC|qHtP~ICbi5 z&lcY^uH~<9I8yYKqvzP(t2+DBe+QaAFmw0Jx`S7iFZ}+>-0w}mlXqh zqX4Wm3YaYl3v~X~5x^bQ)zz2B5dLk|eG9bhil&dhuAa?bJ38INGclLV?Q>i8nd)CN z>u#O7UcaaM*&3a8Suu?QcllYq*GAhHje#xOx85bdhDBlH&cA;ZE7k9-FIE3;dMDv= z)$KE#d!_nz^|$J))zhp0RG*s5b>A4a|7eUvj*tDeBj%>+<4x~W93GcFf850OMPpza z3cx4=XWe6aJO1pM{r>8y)l)`0A6zH)>gvj-cOBMxT=tStJgylzAKAv3D?5E+_2d>V zci_UYjDIzp)MS6;xv}X);d8f`XIbr$N1i>AXMWxO-BJWr8~0eh>Ok-Re$z?A+pE`| z>z7zttk(O)T=rb7AEHlK}x07000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2jB+`6frp07G?^OTP%M@NklWNz@Uo?LPwr&4b8vp9yBc~534j(z6qk;Q&>38~~>XDi4 z?^Y+bP`+pkoWl-)MP0JZ@fP1-bMco~AFWP6Uda(L@(}l2`N8`S8 zChn!x-J?Ufp?d2$-xufdePw2(b6xeGbN|1pvFmfQWeau)$43Y7 z!s=_)tH%CE&$7Ok&a5kJWHJ|XvU*4Ljp_@dF7pj|Sut>7tO2aoz}Gs3(>jS$r#5@G z_}G}sU*B|L?`YFi`$vDyvc6Zf`O|*~nm#ad_sqV7W4Qj!ri+PpRqyNcM=O^V0~baI zu-+(Owo_Q3@vn^l?x?P=zC4ETZ>#QIpl(+*ef)LpYW~{M=pLGhxoqy3+p5o0|C-r% z>&$%pSoO1Y8tt-T8Xer_n|!V_l`k3t+qQ3`DZm*!g)=w)?O1=UeqVj5`ghYi36HC8 zpK08y)wip^RbQ>1Uj3)~)LgE6$FTiJV@8TEW%gV?L9E1TYRSnqM!OGf8$&B*!i4#r&B=?kkTw=vy; zy<-{wYB;IM$a8;V(}lw4ZZpra>LZUl7et=000000000000026=lBH` zdE~ix^33nszuiv2FR{oY&)&)d000000000000000005H@0S6eI5B~!o7sQclU3QNE O0000