Absorption works again. During thunderstorms, mobs will spawn at 100%

the regular spawn rate.
This commit is contained in:
sigonasr2 2016-07-17 16:20:24 -05:00
parent b3c5722a80
commit 8f6c7ed236
4 changed files with 37 additions and 7 deletions

Binary file not shown.

View File

@ -21,6 +21,7 @@ import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Skeleton.SkeletonType; import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -1851,7 +1852,7 @@ public class GenericFunctions {
} }
} }
public static boolean isRanger(Player p) { 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")) && (p.getInventory().getExtraContents()[0]==null || p.getInventory().getExtraContents()[0].getType().toString().contains("ARROW")) &&
AllLeatherArmor(p)) { AllLeatherArmor(p)) {
return true; return true;
@ -2523,6 +2524,15 @@ public class GenericFunctions {
} else { } else {
finaldmg = TwosideKeeper.CalculateDamageReduction(dmg, target, damager); 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) { if ((target instanceof Monster) && damager!=null) {
Monster m = (Monster)target; Monster m = (Monster)target;
m.setTarget(damager); m.setTarget(damager);
@ -2555,4 +2565,19 @@ public class GenericFunctions {
} }
return false; return false;
} }
public static int getPotionEffectLevel(PotionEffectType type, LivingEntity ent) {
if (ent.hasPotionEffect(type)) {
for (int j=0;j<ent.getActivePotionEffects().size();j++) {
if (Iterables.get(ent.getActivePotionEffects(), j).getType().equals(type)) {
//Get the level.
return Iterables.get(ent.getActivePotionEffects(), j).getAmplifier();
}
}
TwosideKeeper.log("Something went wrong while getting potion effect level of "+type+" for Entity "+ent.getName()+"!", 1);
return -1;
} else {
return -1;
}
}
} }

View File

@ -3,6 +3,7 @@ package sig.plugin.TwosideKeeper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.DyeColor; import org.bukkit.DyeColor;
import org.bukkit.Location; import org.bukkit.Location;
@ -52,7 +53,7 @@ public class MonsterController {
} }
if (ylv>=128) { if (ylv>=128) {
//This is a 95% chance this will despawn. //This is a 95% chance this will despawn.
if (Math.random()<=0.95) { if (Math.random()<=0.95 && !ent.getWorld().hasStorm()) {
ent.remove(); ent.remove();
return false; return false;
} else { } else {
@ -65,7 +66,7 @@ public class MonsterController {
} else } else
if (ylv>=64) { if (ylv>=64) {
//This is a 90% chance this will despawn. //This is a 90% chance this will despawn.
if (Math.random()<=0.90) { if (Math.random()<=0.90 && !ent.getWorld().hasStorm()) {
ent.remove(); ent.remove();
return false; return false;
} else { } else {
@ -79,7 +80,7 @@ public class MonsterController {
if (ylv>=48) { if (ylv>=48) {
//"Normal" spawn rate. We're going to decrease it a bit for the time being. //"Normal" spawn rate. We're going to decrease it a bit for the time being.
//This is a 50% chance this will despawn. //This is a 50% chance this will despawn.
if (Math.random()<=0.50) { if (Math.random()<=0.50 && !ent.getWorld().hasStorm()) {
ent.remove(); ent.remove();
return false; return false;
} else { } else {

View File

@ -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.setCustomName((it.getItemStack().getItemMeta().hasDisplayName())?it.getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(it.getItemStack()));
it.setCustomNameVisible(true); 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.MAGIC,0);
ev.setDamage(DamageModifier.RESISTANCE,0); ev.setDamage(DamageModifier.RESISTANCE,0);
ev.setDamage(DamageModifier.ARMOR,0); ev.setDamage(DamageModifier.ARMOR,0);
ev.setDamage(DamageModifier.ABSORPTION,0);
int dmgmult = 1; int dmgmult = 1;
@ -3723,6 +3725,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
double rawdmg = ev.getDamage()*dmgmult*ENEMY_DMG_MULT; double rawdmg = ev.getDamage()*dmgmult*ENEMY_DMG_MULT;
ev.setDamage(CalculateDamageReduction(rawdmg,p,m)); ev.setDamage(CalculateDamageReduction(rawdmg,p,m));
log("New damage: "+ev.getDamage(),2);
if (GenericFunctions.isStriker(p)) { if (GenericFunctions.isStriker(p)) {
int currentSpeedLevel = -1; int currentSpeedLevel = -1;
for (int j=0;j<p.getActivePotionEffects().size();j++) { for (int j=0;j<p.getActivePotionEffects().size();j++) {
@ -4023,7 +4027,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ev.setDamage(DamageModifier.MAGIC,0); ev.setDamage(DamageModifier.MAGIC,0);
ev.setDamage(DamageModifier.RESISTANCE,0); ev.setDamage(DamageModifier.RESISTANCE,0);
ev.setDamage(DamageModifier.ARMOR,0); ev.setDamage(DamageModifier.ARMOR,0);
ev.setDamage(DamageModifier.ABSORPTION,0);
int dmgmult = 1; int dmgmult = 1;
@ -5977,6 +5980,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,60,(p.isBlocking())?1:0)); p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,60,(p.isBlocking())?1:0));
} }
/*
if (p.hasPotionEffect(PotionEffectType.ABSORPTION)) { if (p.hasPotionEffect(PotionEffectType.ABSORPTION)) {
Collection<PotionEffect> player_effects = p.getActivePotionEffects(); Collection<PotionEffect> player_effects = p.getActivePotionEffects();
for (int i=0;i<player_effects.size();i++) { for (int i=0;i<player_effects.size();i++) {
@ -5984,7 +5988,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
hp += (Iterables.get(player_effects, i).getAmplifier()+1)*4; hp += (Iterables.get(player_effects, i).getAmplifier()+1)*4;
} }
} }
} }*/
if (GenericFunctions.HasFullRangerSet(p)) { if (GenericFunctions.HasFullRangerSet(p)) {
hp += 20; hp += 20;