diff --git a/changelog.txt b/changelog.txt index 9efd4d2a..8fad296e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -5,6 +5,7 @@ Version 2.0.0-3 - Added poison upgrade to Living Armour - Fixed digging upgrade - Added self sacrifice upgrade to Living Armour (Tough Palms) +- Added knockback resistance upgrade to Living Armour, trained via eating (Body Builder) ------------------------------------------------------ diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeKnockbackResist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeKnockbackResist.java new file mode 100644 index 00000000..cfcb606c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmourUpgradeKnockbackResist.java @@ -0,0 +1,75 @@ +package WayofTime.bloodmagic.livingArmour; + +import java.util.UUID; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.nbt.NBTTagCompound; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + +public class LivingArmourUpgradeKnockbackResist extends LivingArmourUpgrade +{ + public static final int[] costs = new int[] { 3, 7, 13, 26, 42 }; + public static final double[] kbModifier = new double[] { 0.2, 0.4, 0.6, 0.8, 1.0 }; + public static final int[] healthModifier = new int[] { 0, 0, 0, 4, 10 }; + + public LivingArmourUpgradeKnockbackResist(int level) + { + super(level); + } + + @Override + public Multimap getAttributeModifiers() + { + Multimap modifierMap = HashMultimap.create(); + + modifierMap.put(SharedMonsterAttributes.knockbackResistance.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(895132, 1), "Knockback modifier" + 1, kbModifier[this.level], 0)); + + if (healthModifier[this.level] > 0) + { + modifierMap.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(952142, 1), "Health modifier" + 1, healthModifier[this.level], 0)); + } + + return modifierMap; + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".upgrade.knockback"; + } + + @Override + public int getMaxTier() + { + return 5; + } + + @Override + public int getCostOfUpgrade() + { + return costs[this.level]; + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + // EMPTY + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + // EMPTY + } + + @Override + public String getUnlocalizedName() + { + return tooltipBase + "knockback"; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerFood.java b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerFood.java new file mode 100644 index 00000000..3ec4edd5 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerFood.java @@ -0,0 +1,89 @@ +package WayofTime.bloodmagic.livingArmour; + +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.nbt.NBTTagCompound; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; + +public class StatTrackerFood extends StatTracker +{ + public static Map lastFoodEatenMap = new HashMap(); + + public static int[] foodRequired = new int[] { 100, 200, 300, 5000, 1000 }; + + public int foodEaten = 0; + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.foodEaten"; + } + + @Override + public void resetTracker() + { + this.foodEaten = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + foodEaten = tag.getInteger(Constants.Mod.MODID + ".tracker.foodEaten"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setInteger(Constants.Mod.MODID + ".tracker.foodEaten", foodEaten); + + } + + @Override + public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (!lastFoodEatenMap.containsKey(player)) + { + lastFoodEatenMap.put(player, 20); + return false; + } + + int currentFood = player.getFoodStats().getFoodLevel(); + int prevFood = lastFoodEatenMap.get(player); + lastFoodEatenMap.put(player, currentFood); + + if (currentFood > prevFood) + { + foodEaten += (currentFood - prevFood); + + markDirty(); + + return true; + } + + return false; + } + + @Override + public List getUpgrades() + { + // TODO Auto-generated method stub + List upgradeList = new ArrayList(); + + for (int i = 0; i < foodRequired.length; i++) + { + if (foodEaten >= foodRequired[i]) + { + upgradeList.add(new LivingArmourUpgradeKnockbackResist(i)); + } + } + + return upgradeList; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerMovement.java b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerMovement.java index bf855cc7..01bf1fe5 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerMovement.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerMovement.java @@ -86,7 +86,7 @@ public class StatTrackerMovement extends StatTracker for (int i = 0; i < 10; i++) { - if (totalMovement > blocksRequired[i]) + if (totalMovement >= blocksRequired[i]) { upgradeList.add(new LivingArmourUpgradeSpeed(i)); } diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerPoison.java b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerPoison.java index 82e47049..78e605cb 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerPoison.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/StatTrackerPoison.java @@ -62,7 +62,7 @@ public class StatTrackerPoison extends StatTracker for (int i = 0; i < 3; i++) { - if (totalPoisonTicks < poisonTicksRequired[i]) + if (totalPoisonTicks >= poisonTicksRequired[i]) { upgradeList.add(new LivingArmourUpgradePoisonResist(i)); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java index 3e37e062..7b5b8a18 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -2,10 +2,12 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeDigging; +import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeKnockbackResist; import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradePoisonResist; import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeSelfSacrifice; import WayofTime.bloodmagic.livingArmour.LivingArmourUpgradeSpeed; import WayofTime.bloodmagic.livingArmour.StatTrackerDigging; +import WayofTime.bloodmagic.livingArmour.StatTrackerFood; import WayofTime.bloodmagic.livingArmour.StatTrackerMovement; import WayofTime.bloodmagic.livingArmour.StatTrackerPoison; import WayofTime.bloodmagic.livingArmour.StatTrackerSelfSacrifice; @@ -18,10 +20,12 @@ public class ModArmourTrackers LivingArmourHandler.registerStatTracker(StatTrackerDigging.class); LivingArmourHandler.registerStatTracker(StatTrackerPoison.class); LivingArmourHandler.registerStatTracker(StatTrackerSelfSacrifice.class); + LivingArmourHandler.registerStatTracker(StatTrackerFood.class); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradePoisonResist(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSelfSacrifice(0)); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeKnockbackResist(0)); } } diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index b6791597..6ca5761e 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -222,6 +222,7 @@ tooltip.BloodMagic.livingArmour.upgrade.speed=Quick Feet tooltip.BloodMagic.livingArmour.upgrade.digging=Dwarven Might tooltip.BloodMagic.livingArmour.upgrade.poisonResist=Poison Resistance tooltip.BloodMagic.livingArmour.upgrade.selfSacrifice=Tough Palms +tooltip.BloodMagic.livingArmour.upgrade.knockback=Body Builder tooltip.BloodMagic.livingArmour.upgrade.level=(Level %d) # Ritual