Added True Strike, increasing the damage of critical hits
This commit is contained in:
parent
7b94e414f8
commit
21473c12cd
|
@ -5,6 +5,7 @@ Version 2.0.0-32
|
|||
- Added step assist living armour upgrade tracker.
|
||||
- Added new Living Armour upgrades:
|
||||
- Added Charging Strike, which increases knockback and damage for attacks while sprinting
|
||||
- Added True Strike, increasing the damage of critical hits
|
||||
|
||||
------------------------------------------------------
|
||||
Version 2.0.0-31
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
package WayofTime.bloodmagic.livingArmour.tracker;
|
||||
|
||||
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.upgrade.LivingArmourUpgradeCriticalStrike;
|
||||
|
||||
public class StatTrackerCriticalStrike extends StatTracker
|
||||
{
|
||||
public double totalDamageDealt = 0;
|
||||
|
||||
public static HashMap<LivingArmour, Double> changeMap = new HashMap<LivingArmour, Double>();
|
||||
public static int[] damageRequired = new int[] { 200, 800, 1300, 2500, 3800 };
|
||||
|
||||
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.criticalStrike";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetTracker()
|
||||
{
|
||||
this.totalDamageDealt = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound tag)
|
||||
{
|
||||
totalDamageDealt = tag.getDouble(Constants.Mod.MODID + ".tracker.criticalStrike");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound tag)
|
||||
{
|
||||
tag.setDouble(Constants.Mod.MODID + ".tracker.criticalStrike", 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));
|
||||
|
||||
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<LivingArmourUpgrade> getUpgrades()
|
||||
{
|
||||
List<LivingArmourUpgrade> upgradeList = new ArrayList<LivingArmourUpgrade>();
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
if (totalDamageDealt >= damageRequired[i])
|
||||
{
|
||||
upgradeList.add(new LivingArmourUpgradeCriticalStrike(i));
|
||||
}
|
||||
}
|
||||
|
||||
return upgradeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean providesUpgrade(String key)
|
||||
{
|
||||
return key.equals(Constants.Mod.MODID + ".upgrade.criticalStrike");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package WayofTime.bloodmagic.livingArmour.upgrade;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.MobEffects;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
||||
|
||||
public class LivingArmourUpgradeCriticalStrike extends LivingArmourUpgrade
|
||||
{
|
||||
public static final int[] costs = new int[] { 5, 12, 22, 35, 49 };
|
||||
public static final double[] damageBoost = new double[] { 0.1, 0.2, 0.3, 0.4, 0.5 };
|
||||
|
||||
public LivingArmourUpgradeCriticalStrike(int level)
|
||||
{
|
||||
super(level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getAdditionalDamageOnHit(double damage, EntityPlayer wearer, EntityLivingBase hitEntity, ItemStack weapon)
|
||||
{
|
||||
boolean flag = wearer.fallDistance > 0.0F && !wearer.onGround && !wearer.isOnLadder() && !wearer.isInWater() && !wearer.isPotionActive(MobEffects.blindness) && !wearer.isRiding() && !wearer.isSprinting();
|
||||
|
||||
if (flag)
|
||||
{
|
||||
return getDamageModifier() * damage;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public double getDamageModifier()
|
||||
{
|
||||
return damageBoost[this.level];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueIdentifier()
|
||||
{
|
||||
return Constants.Mod.MODID + ".upgrade.criticalStrike";
|
||||
}
|
||||
|
||||
@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 + "criticalStrike";
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
|||
|
||||
public class LivingArmourUpgradeSprintAttack extends LivingArmourUpgrade
|
||||
{
|
||||
public static final int[] costs = new int[] { 3, 7, 15, 35, 49 };
|
||||
public static final int[] costs = new int[] { 3, 7, 15, 25, 40 };
|
||||
public static final double[] damageBoost = new double[] { 0.5, 1, 1.5, 2, 2.5 };
|
||||
public static final double[] knockbackModifier = new double[] { 1, 2, 3, 4, 5 };
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package WayofTime.bloodmagic.registry;
|
|||
|
||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowShot;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerCriticalStrike;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerDigging;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerExperience;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerFallProtect;
|
||||
|
@ -19,6 +20,7 @@ import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSolarPowered;
|
|||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSprintAttack;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerStepAssist;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeArrowShot;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeCriticalStrike;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeFallProtect;
|
||||
|
@ -57,6 +59,7 @@ public class ModArmourTrackers
|
|||
LivingArmourHandler.registerStatTracker(StatTrackerGraveDigger.class);
|
||||
LivingArmourHandler.registerStatTracker(StatTrackerStepAssist.class);
|
||||
LivingArmourHandler.registerStatTracker(StatTrackerSprintAttack.class);
|
||||
LivingArmourHandler.registerStatTracker(StatTrackerCriticalStrike.class);
|
||||
|
||||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(0));
|
||||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0));
|
||||
|
@ -75,5 +78,6 @@ public class ModArmourTrackers
|
|||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeFallProtect(0));
|
||||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeGraveDigger(0));
|
||||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSprintAttack(0));
|
||||
LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeCriticalStrike(0));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
|||
import net.minecraft.entity.projectile.EntityArrow;
|
||||
import net.minecraft.init.Enchantments;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.init.MobEffects;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.ItemArrow;
|
||||
import net.minecraft.item.ItemSpade;
|
||||
|
@ -89,6 +90,7 @@ import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
|||
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowProtect;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowShot;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerCriticalStrike;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerDigging;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerExperience;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerFallProtect;
|
||||
|
@ -684,6 +686,12 @@ public class EventHandler
|
|||
StatTrackerSprintAttack.incrementCounter(armour, amount);
|
||||
}
|
||||
|
||||
boolean isCritical = lastPlayerSwingStrength > 0.9 && player.fallDistance > 0.0F && !player.onGround && !player.isOnLadder() && !player.isInWater() && !player.isPotionActive(MobEffects.blindness) && !player.isRiding() && !player.isSprinting();
|
||||
if (isCritical)
|
||||
{
|
||||
StatTrackerCriticalStrike.incrementCounter(armour, amount);
|
||||
}
|
||||
|
||||
double kb = armour.getKnockbackOnHit(player, attackedEntity, mainWeapon);
|
||||
if (kb > 0)
|
||||
{
|
||||
|
|
|
@ -323,6 +323,7 @@ tooltip.BloodMagic.livingArmour.upgrade.jump=Strong Legs
|
|||
tooltip.BloodMagic.livingArmour.upgrade.fallProtect=Soft Fall
|
||||
tooltip.BloodMagic.livingArmour.upgrade.graveDigger=Grave Digger
|
||||
tooltip.BloodMagic.livingArmour.upgrade.sprintAttack=Charging Strike
|
||||
tooltip.BloodMagic.livingArmour.upgrade.criticalStrike=True Strike
|
||||
tooltip.BloodMagic.livingArmour.upgrade.level=%s (Level %d)
|
||||
tooltip.BloodMagic.livingArmour.upgrade.points=&6Upgrade points: %s / %s
|
||||
|
||||
|
|
Loading…
Reference in a new issue