->Armor Penetration scaling has been reduced in the lower tiers.
->Lifesteal properly gets applied by Area of Effect again.
->Redesigned Debuff Resistance engine to handle debuffs better.
->Debuff Resistance now shows up in /stats.
->Elite Zombie algorithm has been tuned.
->Fixed a glitch where the healthbar of an Elite Monster would remain
when the fight was lost or ended.
->Elite Monsters now properly get hit by abilities, even when done
immediately after regular attacks.
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",newdouble[]{1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0},
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",newdouble[]{0.4,0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.2,5.7,6.4,7.5},
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",newdouble[]{0.3,0.45,0.6,0.75,0.9,1.05,1.2,1.35,1.50,1.65,1.80,1.95,2.10,2.40,2.70},
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",newdouble[]{0.1,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.3,0.35,0.4,0.5,0.7,0.9,1.25},
LIFESTEAL("Lifesteal","Heals [VAL]% of the damage dealt to targets back to your health pool.",newdouble[]{0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.6,6.4,7.2,8.0,8.8},
TwosideKeeper.log(ChatColor.GRAY+" Effect on Player "+p.getName()+" is now "+type.getName()+" "+WorldShop.toRomanNumeral((amplifier+1))+"("+amplifier+"), Duration: "+ticks+" ticks",TwosideKeeper.POTION_DEBUG_LEVEL);
if(amplifier==-1||ticks==0){
//Something really bad happened!!!
@ -2752,8 +2757,9 @@ public class GenericFunctions {
TwosideKeeper.log(ChatColor.WHITE+"Removing Potion Effect "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+") on Player "+p.getName()+" Duration: "+getPotionEffectDuration(type,p)+" ticks",TwosideKeeper.POTION_DEBUG_LEVEL);
p.removePotionEffect(type);
TwosideKeeper.log(ChatColor.WHITE+"Removing Potion Effect "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+") on Player "+p.getName()+" Duration: "+getPotionEffectDuration(type,p)+" ticks by adding a 0 duration version of this effect.",TwosideKeeper.POTION_DEBUG_LEVEL);
//p.removePotionEffect(type);
logAndApplyPotionEffectToPlayer(type,0,0,p,true);
if(p.hasPotionEffect(type)){
TwosideKeeper.log(ChatColor.DARK_RED+" Effect on Player "+p.getName()+" is now "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+"), Duration: "+getPotionEffectDuration(type,p)+" ticks",TwosideKeeper.POTION_DEBUG_LEVEL);
TwosideKeeper.log(ChatColor.RED+"THIS SHOULD NOT BE HAPPENING! Reporting",TwosideKeeper.POTION_DEBUG_LEVEL);
@ -2894,6 +2900,12 @@ public class GenericFunctions {
p.sendMessage(ChatColor.DARK_GRAY+"You successfully resisted the application of "+ChatColor.WHITE+GenericFunctions.CapitalizeFirstLetters(type.getName().replace("_"," ")));
p.sendMessage(ChatColor.DARK_GRAY+"You successfully resisted the application of "+ChatColor.WHITE+GenericFunctions.CapitalizeFirstLetters(type.getName().replace("_"," ")));