diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index fa4fb17..54b60da 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java index 539f413..466e23b 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java @@ -21,6 +21,7 @@ import org.bukkit.entity.Skeleton; import org.bukkit.entity.Skeleton.SkeletonType; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -1851,7 +1852,7 @@ public class GenericFunctions { } } public static boolean isRanger(Player p) { - if (p.getEquipment().getItemInMainHand()!=null && p.getEquipment().getItemInMainHand().getType()==Material.BOW && + if (p!=null && !p.isDead() && p.getEquipment().getItemInMainHand()!=null && p.getEquipment().getItemInMainHand().getType()==Material.BOW && (p.getInventory().getExtraContents()[0]==null || p.getInventory().getExtraContents()[0].getType().toString().contains("ARROW")) && AllLeatherArmor(p)) { return true; @@ -2523,6 +2524,15 @@ public class GenericFunctions { } else { finaldmg = TwosideKeeper.CalculateDamageReduction(dmg, target, damager); } + + if (target.hasPotionEffect(PotionEffectType.ABSORPTION)) { + //We attempt to absorb the amount of damage of absorption level we have. + finaldmg-=(GenericFunctions.getPotionEffectLevel(PotionEffectType.ABSORPTION, target)+1)*4; + if (finaldmg<0) { + finaldmg=0; + } + } + if ((target instanceof Monster) && damager!=null) { Monster m = (Monster)target; m.setTarget(damager); @@ -2555,4 +2565,19 @@ public class GenericFunctions { } return false; } + + public static int getPotionEffectLevel(PotionEffectType type, LivingEntity ent) { + if (ent.hasPotionEffect(type)) { + for (int j=0;j=128) { //This is a 95% chance this will despawn. - if (Math.random()<=0.95) { + if (Math.random()<=0.95 && !ent.getWorld().hasStorm()) { ent.remove(); return false; } else { @@ -65,7 +66,7 @@ public class MonsterController { } else if (ylv>=64) { //This is a 90% chance this will despawn. - if (Math.random()<=0.90) { + if (Math.random()<=0.90 && !ent.getWorld().hasStorm()) { ent.remove(); return false; } else { @@ -79,7 +80,7 @@ public class MonsterController { if (ylv>=48) { //"Normal" spawn rate. We're going to decrease it a bit for the time being. //This is a 50% chance this will despawn. - if (Math.random()<=0.50) { + if (Math.random()<=0.50 && !ent.getWorld().hasStorm()) { ent.remove(); return false; } else { diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index cc5b49a..038c98e 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -3222,6 +3222,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener { it.setCustomName((it.getItemStack().getItemMeta().hasDisplayName())?it.getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(it.getItemStack())); it.setCustomNameVisible(true); } + if (GenericFunctions.isArtifactEquip(it.getItemStack())) { + it.setInvulnerable(true); + } } /** @@ -3694,7 +3697,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { ev.setDamage(DamageModifier.MAGIC,0); ev.setDamage(DamageModifier.RESISTANCE,0); ev.setDamage(DamageModifier.ARMOR,0); - ev.setDamage(DamageModifier.ABSORPTION,0); int dmgmult = 1; @@ -3723,6 +3725,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener { double rawdmg = ev.getDamage()*dmgmult*ENEMY_DMG_MULT; ev.setDamage(CalculateDamageReduction(rawdmg,p,m)); + log("New damage: "+ev.getDamage(),2); + if (GenericFunctions.isStriker(p)) { int currentSpeedLevel = -1; for (int j=0;j player_effects = p.getActivePotionEffects(); for (int i=0;i