From 6aff7077087d7c041b256df3f56c1323c93f1365 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sat, 18 Jun 2016 16:59:56 -0400 Subject: [PATCH] Added Fire Resistance Living Armour Upgrade, "Gift of Ignis." --- changelog.txt | 1 + .../WayofTime/bloodmagic/api/Constants.java | 9 +- .../tracker/StatTrackerFireResist.java | 85 +++++++++++++++++++ .../tracker/StatTrackerPoison.java | 2 +- .../LivingArmourUpgradeFireResist.java | 79 +++++++++++++++++ .../registry/ModArmourTrackers.java | 4 + .../assets/bloodmagic/lang/en_US.lang | 2 + 7 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeFireResist.java diff --git a/changelog.txt b/changelog.txt index db348e46..a090cabd 100644 --- a/changelog.txt +++ b/changelog.txt @@ -5,6 +5,7 @@ Version 2.0.2-45 - Fixed the Routing system so that it properly eliminates the connection to the Master node when the Master node is broken. - Fixed an issue where the Spectral Blocks (from the Sigil of Suppression) would return the liquid on the client side before the sigil was deactivated. - Made it so that the bound tools are (supposedly more so) unbreakable. This will probably come bite me on the ehem later, but we'll see. +- Added Fire Resistance Living Armour Upgrade, "Gift of Ignis." ------------------------------------------------------ Version 2.0.2-44 diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 8b7cd1d6..de2b4eff 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -87,6 +87,7 @@ public class Constants public static final String HELD_DOWN = "heldDown"; public static final String UPGRADE_POISON_TIMER = "poisonTimer"; + public static final String UPGRADE_FIRE_TIMER = "fireTimer"; public static final String SOULS = "souls"; public static final String SOUL_SWORD_DAMAGE = "soulSwordDamage"; @@ -173,8 +174,12 @@ public class Constants BOUND_PICKAXE("ItemBoundPickaxe"), BOUND_SHOVEL("ItemBoundShovel"), BOUND_SWORD("ItemBoundSword"), - /** @deprecated - Use {@code UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, BloodMagicAPI.getLifeEssence())} **/ - @Deprecated BUCKET_ESSENCE("ItemBucketEssence"), + /** + * @deprecated - Use + * {@code UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, BloodMagicAPI.getLifeEssence())} + **/ + @Deprecated + BUCKET_ESSENCE("ItemBucketEssence"), COMPONENT("ItemComponent"), CUTTING_FLUID("ItemCuttingFluid"), DEMON_CRYSTAL("ItemDemonCrystal"), diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java new file mode 100644 index 00000000..be46075b --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java @@ -0,0 +1,85 @@ +package WayofTime.bloodmagic.livingArmour.tracker; + +import java.util.ArrayList; +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.upgrade.LivingArmourUpgradeFireResist; + +public class StatTrackerFireResist extends StatTracker +{ + public int totalFireTicks = 0; + + public static int[] fireTicksRequired = new int[] { 60 * 20, 3 * 60 * 20, 10 * 60 * 20, 20 * 60 * 20, 25 * 60 * 20 }; + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.fire"; + } + + @Override + public void resetTracker() + { + this.totalFireTicks = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + totalFireTicks = tag.getInteger(Constants.Mod.MODID + ".tracker.fire"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setInteger(Constants.Mod.MODID + ".tracker.fire", totalFireTicks); + } + + @Override + public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) + { + if (player.isBurning()) + { + totalFireTicks++; + this.markDirty(); + return true; + } + + 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 < 5; i++) + { + if (totalFireTicks >= fireTicksRequired[i]) + { + upgradeList.add(new LivingArmourUpgradeFireResist(i)); + } + } + + return upgradeList; + } + + @Override + public boolean providesUpgrade(String key) + { + return key.equals(Constants.Mod.MODID + ".upgrade.fireResist"); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java index 115d4289..048b896d 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java @@ -67,7 +67,7 @@ public class StatTrackerPoison extends StatTracker { List upgradeList = new ArrayList(); - for (int i = 0; i < 3; i++) + for (int i = 0; i < 5; i++) { if (totalPoisonTicks >= poisonTicksRequired[i]) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeFireResist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeFireResist.java new file mode 100644 index 00000000..9733a93a --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/upgrade/LivingArmourUpgradeFireResist.java @@ -0,0 +1,79 @@ +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; + +public class LivingArmourUpgradeFireResist extends LivingArmourUpgrade +{ + public static final int[] costs = new int[] { 2, 6, 14, 25, 40 }; + public static final int[] fireCooldownTime = new int[] { 5 * 60 * 20, 5 * 60 * 20, 4 * 60 * 20, 3 * 60 * 20, 2 * 60 * 20 }; + public static final int[] fireResistDuration = new int[] { 30 * 20, 30 * 20, 40 * 20, 50 * 20, 60 * 20 }; + + public int fireCooldown = 0; + + public LivingArmourUpgradeFireResist(int level) + { + super(level); + } + + @Override + public void onTick(World world, EntityPlayer player, ILivingArmour livingArmour) + { + if (player.isBurning() && fireCooldown <= 0) + { + + player.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE, fireResistDuration[this.level])); + fireCooldown = fireCooldownTime[this.level]; + + ChatUtil.sendNoSpam(player, TextHelper.localizeEffect(chatBase + "fireRemove")); + + } else if (fireCooldown > 0) + { + fireCooldown--; + } + } + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".upgrade.fireResist"; + } + + @Override + public int getMaxTier() + { + return 5; // Set to here until I can add more upgrades to it. + } + + @Override + public int getCostOfUpgrade() + { + return costs[this.level]; + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setInteger(Constants.NBT.UPGRADE_FIRE_TIMER, fireCooldown); + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + fireCooldown = tag.getInteger(Constants.NBT.UPGRADE_FIRE_TIMER); + } + + @Override + public String getUnlocalizedName() + { + return tooltipBase + "fireResist"; + } +} \ 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 11486d77..7fece75e 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -6,6 +6,7 @@ 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.StatTrackerFireResist; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerFood; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerGraveDigger; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerGrimReaperSprint; @@ -25,6 +26,7 @@ import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeElytra; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeFallProtect; +import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeFireResist; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeGraveDigger; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeGrimReaperSprint; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeHealthboost; @@ -61,6 +63,7 @@ public class ModArmourTrackers LivingArmourHandler.registerStatTracker(StatTrackerStepAssist.class); LivingArmourHandler.registerStatTracker(StatTrackerSprintAttack.class); LivingArmourHandler.registerStatTracker(StatTrackerCriticalStrike.class); + LivingArmourHandler.registerStatTracker(StatTrackerFireResist.class); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0)); @@ -81,5 +84,6 @@ public class ModArmourTrackers LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSprintAttack(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeCriticalStrike(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeElytra(0)); + LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeFireResist(0)); } } diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index a6cf1938..bebf7c9d 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -345,6 +345,7 @@ tooltip.BloodMagic.telepositionFocus.demonic=Used to move blocks in the world 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.fireResist=Gift of Ignis tooltip.BloodMagic.livingArmour.upgrade.selfSacrifice=Tough Palms tooltip.BloodMagic.livingArmour.upgrade.knockback=Body Builder tooltip.BloodMagic.livingArmour.upgrade.physicalProtect=Tough Skin @@ -523,6 +524,7 @@ chat.BloodMagic.ritual.activate=A rush of energy flows through the ritual! chat.BloodMagic.ritual.notValid=You feel that these runes are not configured correctly... chat.BloodMagic.livingArmour.upgrade.poisonRemove=You are starting to feel better already! +chat.BloodMagic.livingArmour.upgrade.fireRemove=&6A cool feeling envelopes you as the burning subsides. chat.BloodMagic.livingArmour.upgrade.grimReaper=&6A shadowy force pulls you from the brink of death! chat.BloodMagic.livingArmour.newUpgrade=&4Upgrade acquired!