From f9185817a14f59b61ed630cf87f65d182dec69fd Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 25 Sep 2016 19:08:06 -0400 Subject: [PATCH] Added another proper Armour Downgrade: Battle Hunger. More to follow. --- .../LivingArmourUpgradeBattleHungry.java | 78 +++++++++++++++++++ .../LivingArmourUpgradeSlippery.java | 76 ++++++++++++++++++ .../registry/ModArmourTrackers.java | 4 + .../util/handler/event/GenericHandler.java | 7 ++ .../handler/event/StatTrackerHandler.java | 31 +++++--- .../assets/bloodmagic/lang/en_US.lang | 2 + 6 files changed, 188 insertions(+), 10 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java new file mode 100644 index 00000000..472b15a3 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java @@ -0,0 +1,78 @@ +package WayofTime.bloodmagic.livingArmour.downgrade; + +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.ILivingArmour; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; + +public class LivingArmourUpgradeBattleHungry extends LivingArmourUpgrade +{ + public static final int[] costs = new int[] { -10, -20, -35, -50, -75 }; + public static final float[] exhaustionAdded = new float[] { 0.02f, 0.04f, 0.06f, 0.08f, 0.1f }; + public static final int[] delay = new int[] { 600, 600, 600, 500, 400 }; + + public int timer = 0; + + public LivingArmourUpgradeBattleHungry(int level) + { + super(level); + } + + public void resetTimer() + { + this.timer = delay[this.level]; + } + + @Override + public void onTick(World world, EntityPlayer player, ILivingArmour livingArmour) + { + if (timer > 0) + { + timer--; + return; + } + + if (player.ticksExisted % 20 == 0) + { + player.addExhaustion(exhaustionAdded[this.level]); //TODO: Change exhaustion added per level. + } + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".upgrade.battleHunger"; + } + + @Override + public int getMaxTier() + { + return 5; + } + + @Override + public int getCostOfUpgrade() + { + return costs[this.level]; + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setInteger("timer", timer); + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + timer = tag.getInteger("timer"); + } + + @Override + public String getUnlocalizedName() + { + return tooltipBase + "battleHunger"; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java new file mode 100644 index 00000000..4c35b082 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java @@ -0,0 +1,76 @@ +package WayofTime.bloodmagic.livingArmour.downgrade; + +import net.minecraft.block.BlockIce; +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.ILivingArmour; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; + +public class LivingArmourUpgradeSlippery extends LivingArmourUpgrade +{ + public static final int[] costs = new int[] { -50 }; + public static final int[] slipperyDuration = new int[] { 30 * 20 }; + + public double prevMotionX = 0; + public double prevMotionZ = 0; + + public LivingArmourUpgradeSlippery(int level) + { + super(level); + } + + @Override + public void onTick(World world, EntityPlayer player, ILivingArmour livingArmour) + { + double weight = 0.05; + if (world.isRemote && player.onGround) + { + if (player.moveForward == 0) + { + player.motionX = (player.motionX - this.prevMotionX) * weight + this.prevMotionX; + player.motionZ = (player.motionZ - this.prevMotionZ) * weight + this.prevMotionZ; + + player.velocityChanged = true; + } + } + + this.prevMotionX = player.motionX; + this.prevMotionZ = player.motionZ; + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".upgrade.slippery"; + } + + @Override + public int getMaxTier() + { + return 1; + } + + @Override + public int getCostOfUpgrade() + { + return costs[this.level]; + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + } + + @Override + public String getUnlocalizedName() + { + return tooltipBase + "slippery"; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java index ba650eec..f26e8a5b 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -1,7 +1,9 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; +import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeBattleHungry; import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeCrippledArm; +import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeSlippery; import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeSlowness; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowShot; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerCriticalStrike; @@ -93,5 +95,7 @@ public class ModArmourTrackers LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSlowness(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeCrippledArm(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeNightSight(0)); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSlippery(0)); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeBattleHungry(0)); } } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index 31559740..cda0b7ee 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -62,6 +62,7 @@ import WayofTime.bloodmagic.item.ItemExperienceBook; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeBattleHungry; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSelfSacrifice; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeSelfSacrifice; import WayofTime.bloodmagic.network.BloodMagicPacketHandler; @@ -153,6 +154,12 @@ public class GenericHandler if (shouldSyphon) ItemHelper.LPContainer.addLPToItem(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST), totalLP, pack.CAPACITY); } + + LivingArmourUpgrade upgrade = ItemLivingArmour.getUpgrade(Constants.Mod.MODID + ".upgrade.battleHunger", player.getItemStackFromSlot(EntityEquipmentSlot.CHEST)); + if (upgrade instanceof LivingArmourUpgradeBattleHungry) + { + ((LivingArmourUpgradeBattleHungry) upgrade).resetTimer(); + } } } 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 d611b65b..639c7a06 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java @@ -1,15 +1,5 @@ package WayofTime.bloodmagic.util.handler.event; -import WayofTime.bloodmagic.annot.Handler; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.item.armour.ItemLivingArmour; -import WayofTime.bloodmagic.item.armour.ItemSentientArmour; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.tracker.*; -import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; -import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience; -import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -26,6 +16,27 @@ import net.minecraftforge.event.entity.player.PlayerPickupXpEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import WayofTime.bloodmagic.annot.Handler; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; +import WayofTime.bloodmagic.item.armour.ItemLivingArmour; +import WayofTime.bloodmagic.item.armour.ItemSentientArmour; +import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowProtect; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerCriticalStrike; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerDigging; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerExperience; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerFallProtect; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerGraveDigger; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerHealthboost; +import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerMeleeDamage; +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.upgrade.LivingArmourUpgradeDigging; +import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience; +import WayofTime.bloodmagic.util.Utils; @Handler public class StatTrackerHandler diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 0ef4763e..2dce48c7 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -490,6 +490,8 @@ tooltip.BloodMagic.livingArmour.upgrade.nightSight=Nocturnal Prowess tooltip.BloodMagic.livingArmour.upgrade.slowness=Limp Leg tooltip.BloodMagic.livingArmour.upgrade.crippledArm=Crippled Arm +tooltip.BloodMagic.livingArmour.upgrade.slippery=Loose Traction +tooltip.BloodMagic.livingArmour.upgrade.battleHunger=Battle Hungry tooltip.BloodMagic.livingArmour.upgrade.level=%s (Level %d) tooltip.BloodMagic.livingArmour.upgrade.progress=%s (%d/100) tooltip.BloodMagic.livingArmour.upgrade.points=&6Upgrade points: %s / %s