diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index 77c0469..e12ee06 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/src/sig/plugin/TwosideKeeper/CustomDamage.java b/src/sig/plugin/TwosideKeeper/CustomDamage.java index f0ba554..d676caa 100644 --- a/src/sig/plugin/TwosideKeeper/CustomDamage.java +++ b/src/sig/plugin/TwosideKeeper/CustomDamage.java @@ -883,7 +883,11 @@ public class CustomDamage { case LEATHER_BOOTS: case LEATHER_LEGGINGS: case LEATHER_CHESTPLATE: - case LEATHER_HELMET: { + case LEATHER_HELMET: + case CHAINMAIL_BOOTS: + case CHAINMAIL_LEGGINGS: + case CHAINMAIL_CHESTPLATE: + case CHAINMAIL_HELMET: { dmgreduction+=3*((isBlockArmor)?2:1); }break; case IRON_BOOTS: diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java index ec023ed..e07f170 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java @@ -3310,8 +3310,12 @@ public class GenericFunctions { //TwosideKeeper.log("Added "+20+" glowing ticks to "+p.getName()+" for reviving.",3); //p.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,20,0)); } - + public static void DealExplosionDamageToEntities(Location l, double basedmg, double range) { + DealExplosionDamageToEntities(l, basedmg, range, null); + } + + public static void DealExplosionDamageToEntities(Location l, double basedmg, double range, Entity damager) { List nearbyentities = new ArrayList(); //nearbyentities.addAll(); final double rangeSquared=range*range; @@ -3325,7 +3329,7 @@ public class GenericFunctions { TwosideKeeper.log("dmg mult is "+damage_mult,2); dmg = basedmg * damage_mult; if (ent instanceof Player) {TwosideKeeper.log("Damage is "+dmg, 5);} - CustomDamage.ApplyDamage(dmg, null, (LivingEntity)ent, null, "Explosion", CustomDamage.NONE); + CustomDamage.ApplyDamage(dmg, damager, (LivingEntity)ent, null, "Explosion", CustomDamage.NONE); //subtractHealth((LivingEntity)nearbyentities.get(i),null,NewCombat.CalculateDamageReduction(dmg, (LivingEntity)nearbyentities.get(i), null)); } } @@ -3437,7 +3441,7 @@ public class GenericFunctions { } } - public static void DealDamageToNearbyMobs(Location l, double basedmg, int range, boolean knockup, double knockupamt, Entity damager, boolean isLineDrive) { + public static void DealDamageToNearbyMobs(Location l, double basedmg, int range, boolean knockup, double knockupamt, Entity damager, ItemStack weapon, boolean isLineDrive) { Collection ents = l.getWorld().getNearbyEntities(l, range, range, range); //We cleared the non-living entities, deal damage to the rest. double origdmg = basedmg; @@ -3449,9 +3453,9 @@ public class GenericFunctions { basedmg=origdmg; if (isLineDrive) { basedmg*=1.0d+(4*((CustomDamage.getPercentHealthMissing(m))/100d)); - CustomDamage.ApplyDamage(basedmg, damager, m, null, "Line Drive"); + CustomDamage.ApplyDamage(basedmg, damager, m, weapon, "Line Drive"); } else { - CustomDamage.ApplyDamage(basedmg, damager, m, null, null); + CustomDamage.ApplyDamage(basedmg, damager, m, weapon, null); } if (knockup) { m.setVelocity(new Vector(0,knockupamt,0)); diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Loot.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Loot.java index 2309478..ae26b78 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/Loot.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Loot.java @@ -7,10 +7,17 @@ import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Monster; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.LeatherArmorMeta; +import sig.plugin.TwosideKeeper.CustomDamage; +import sig.plugin.TwosideKeeper.MonsterController; +import sig.plugin.TwosideKeeper.TwosideKeeper; import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; public class Loot { @@ -27,6 +34,10 @@ public class Loot { } public static ItemStack GenerateMegaPiece(Material mat_type, boolean hardened, boolean setitem, int settier) { + return GenerateMegaPiece(mat_type,hardened,setitem,settier,null,null); + } + + public static ItemStack GenerateMegaPiece(Material mat_type, boolean hardened, boolean setitem, int settier, Entity damager, Monster m) { ItemStack raresword = new ItemStack(mat_type); ItemMeta sword_meta = raresword.getItemMeta(); sword_meta.setDisplayName(ChatColor.AQUA+""+ChatColor.BOLD+"Mega "+GenericFunctions.UserFriendlyMaterialName(mat_type)); @@ -45,11 +56,176 @@ public class Loot { } if (setitem && (raresword.getType().toString().contains("SWORD") || GenericFunctions.isArmor(raresword))) { - raresword = GenerateSetPiece(raresword,hardened,settier); + if (damager==null && m==null) { + raresword = GenerateSetPiece(raresword,hardened,settier); + } else { + LivingEntity shooter = CustomDamage.getDamagerEntity(damager); + Player p = null; + if (shooter instanceof Player) { + p = (Player)shooter; + } else { + if (shooter!=null) { + TwosideKeeper.log("Something went terribly wrong trying to give a set item! Shooter was "+shooter.toString(), 0); + } else { + TwosideKeeper.log("Something went terribly wrong trying to give a set item! Shooter was null.", 0); + } + } + MonsterDifficulty md = MonsterController.getMonsterDifficulty(m); + ItemSet set = null; + if (p!=null) { + if (GenericFunctions.isStriker(p)) { + set=ItemSet.PANROS; + } else + if (GenericFunctions.isRanger(p)) { + set = PickRandomRangerSet(); + } else + if (GenericFunctions.isDefender(p)) { + set=ItemSet.SONGSTEEL; + } else { + //RANDOM SET! because we are not a mode of any sort. + if (Math.random()<0.33) { + set=ItemSet.PANROS; + } else + if (Math.random()<0.33) { + set=PickRandomRangerSet(); + } else { + set=ItemSet.SONGSTEEL; + } + } + } + switch (md) { + case NORMAL:{ + raresword = GenerateSetPiece(new ItemStack(Material.STONE_SWORD),hardened,settier+2); + }break; + case DANGEROUS:{ + if (Math.random()<=0.2) { + if (GenericFunctions.isStriker(p)) { //Only do this weapon for all tiers since the other weapons don't have tiers. Those require hellfires. + raresword = GenerateSetPiece(new ItemStack(Material.IRON_SWORD),set,(Math.random()<=0.1)?true:false,settier); + } + } else { + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_HELMET),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.IRON_HELMET),set,hardened,settier+1); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_CHESTPLATE),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.IRON_CHESTPLATE),set,hardened,settier+1); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_LEGGINGS),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.IRON_LEGGINGS),set,hardened,settier+1); + } + } else { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_BOOTS),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.IRON_BOOTS),set,hardened,settier+1); + } + } + } + }break; + case DEADLY:{ + if (Math.random()<=0.2) { + if (GenericFunctions.isStriker(p)) { //Only do this weapon for all tiers since the other weapons don't have tiers. Those require hellfires. + raresword = GenerateSetPiece(new ItemStack(Material.DIAMOND_SWORD),set,(Math.random()<=0.1)?true:false,settier); + } + } else { + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_HELMET),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.DIAMOND_HELMET),set,hardened,settier); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_CHESTPLATE),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.DIAMOND_CHESTPLATE),set,hardened,settier); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_LEGGINGS),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.DIAMOND_LEGGINGS),set,hardened,settier); + } + } else { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_BOOTS),set,hardened,settier); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.DIAMOND_BOOTS),set,hardened,settier); + } + } + } + }break; + case HELLFIRE:{ + if (Math.random()<=0.2) { + raresword = GenerateSetPiece(new ItemStack(Material.GOLD_SWORD),set,(Math.random()<=0.1)?true:false,settier); + } else { + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_HELMET),set,hardened,settier+1); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.GOLD_HELMET),set,hardened,settier); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_CHESTPLATE),set,hardened,settier+1); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.GOLD_CHESTPLATE),set,hardened,settier); + } + } else + if (Math.random()<=0.25) { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_LEGGINGS),set,hardened,settier+1); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.GOLD_LEGGINGS),set,hardened,settier); + } + } else { + if (GenericFunctions.isRanger(p)) { + raresword = GenerateSetPiece(new ItemStack(Material.LEATHER_BOOTS),set,hardened,settier+1); + } else { + raresword = GenerateSetPiece(new ItemStack(Material.GOLD_BOOTS),set,hardened,settier); + } + } + } + }break; + default:{ + raresword = GenerateSetPiece(raresword,hardened,settier); + }break; + } + } } return raresword; } + + public static ItemSet PickRandomRangerSet() { + ItemSet set; + if (Math.random()<0.25) { + set=ItemSet.JAMDAK; + } else + if (Math.random()<0.25) { + set=ItemSet.DARNYS; + } else + if (Math.random()<0.25) { + set=ItemSet.ALIKAHN; + } else + { + set=ItemSet.LORASAADI; + } + return set; + } public static ItemStack GenerateRangerPiece(Material mat_type, boolean hardened, int tier) { ItemStack raresword = new ItemStack(mat_type); @@ -391,4 +567,50 @@ public class Loot { } return item; } + + /* + public static ItemStack DropProperSetPiece(Entity damager, Monster monster) { + //Alright. Let's make a set piece. + MonsterDifficulty md = MonsterController.getMonsterDifficulty(monster); + //Now determine the type of piece it will be. + ItemStack[] randomlist = null; + switch (md) { + case NORMAL:{ + //Drop a stone item. + randomlist=new ItemStack[]{ + new ItemStack(Material.STONE_SWORD) + }; + }break; + case DANGEROUS:{ + //Drop a stone item. + randomlist=new ItemStack[]{ + new ItemStack(Material.IRON_SWORD), + new ItemStack(Material.IRON_CHESTPLATE), + new ItemStack(Material.IRON_HELMET), + new ItemStack(Material.IRON_LEGGINGS), + new ItemStack(Material.IRON_BOOTS), + }; + }break; + case DEADLY:{ + //Drop a stone item. + randomlist=new ItemStack[]{ + new ItemStack(Material.DIAMOND_SWORD), + new ItemStack(Material.DIAMOND_CHESTPLATE), + new ItemStack(Material.DIAMOND_HELMET), + new ItemStack(Material.DIAMOND_LEGGINGS), + new ItemStack(Material.DIAMOND_BOOTS), + }; + }break; + case HELLFIRE:{ + //Drop a stone item. + randomlist=new ItemStack[]{ + new ItemStack(Material.GOLD_SWORD), + new ItemStack(Material.GOLD_CHESTPLATE), + new ItemStack(Material.GOLD_HELMET), + new ItemStack(Material.GOLD_LEGGINGS), + new ItemStack(Material.GOLD_BOOTS), + }; + }break; + } + }*/ } diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/MonsterDifficulty.java b/src/sig/plugin/TwosideKeeper/HelperStructures/MonsterDifficulty.java index 44536c3..e0ef61f 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/MonsterDifficulty.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/MonsterDifficulty.java @@ -5,6 +5,8 @@ import java.util.List; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Monster; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; @@ -216,11 +218,11 @@ public enum MonsterDifficulty { return null; } - public List RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger) { - return RandomizeDrops(dropmult,isBoss,false,isRanger); + public List RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger, Entity damager, Monster m) { + return RandomizeDrops(dropmult,isBoss,false,isRanger,damager,m); } - public List RandomizeDrops(double dropmult, boolean isBoss, boolean isElite, boolean isRanger) { + public List RandomizeDrops(double dropmult, boolean isBoss, boolean isElite, boolean isRanger, Entity damager, Monster m) { TwosideKeeper.log(ChatColor.AQUA+"->Entering RandomizeDrops()", 5); List droplist = new ArrayList(); dropmult += 1; //Base dropmult is 1.0. @@ -239,7 +241,7 @@ public enum MonsterDifficulty { this.loot_regular.length>0) { TwosideKeeper.log(">Attempting Common roll.", 4); //This is a common roll. - ItemStack gen_loot = DistributeRandomLoot(this.loot_regular, isRanger); + ItemStack gen_loot = DistributeRandomLoot(this.loot_regular, isRanger, damager, m); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4); droplist.add(gen_loot); TwosideKeeper.Loot_Logger.AddCommonLoot(); @@ -249,7 +251,7 @@ public enum MonsterDifficulty { this.loot_rare.length>0) { TwosideKeeper.log(">Attempting Rare roll.", 3); //This is a common roll. - ItemStack gen_loot = DistributeRandomLoot(this.loot_rare, isRanger); + ItemStack gen_loot = DistributeRandomLoot(this.loot_rare, isRanger, damager, m); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4); droplist.add(gen_loot); double randomness = Math.random(); @@ -284,7 +286,7 @@ public enum MonsterDifficulty { this.loot_legendary.length>0) { TwosideKeeper.log(">Attempting Legendary roll.", 3); //This is a common roll. - ItemStack gen_loot = DistributeRandomLoot(this.loot_legendary, isRanger); + ItemStack gen_loot = DistributeRandomLoot(this.loot_legendary, isRanger, damager, m); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4); droplist.add(gen_loot); double randomness = Math.random(); @@ -334,7 +336,7 @@ public enum MonsterDifficulty { if (isBoss) { //50% of the time, we drop something great. if (Math.random()<=0.5 && this.loot_legendary.length>0) { TwosideKeeper.log(">Boss Legendary roll.", 1); - ItemStack gen_loot = DistributeRandomLoot(this.loot_legendary, isRanger); + ItemStack gen_loot = DistributeRandomLoot(this.loot_legendary, isRanger, damager, m); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4); droplist.add(gen_loot); TwosideKeeper.Loot_Logger.AddLegendaryLoot(); @@ -342,7 +344,7 @@ public enum MonsterDifficulty { else if (this.loot_rare.length>0) { //Consolation Prize. TwosideKeeper.log(">Boss Rare roll.", 1); - ItemStack gen_loot = DistributeRandomLoot(this.loot_rare, isRanger); + ItemStack gen_loot = DistributeRandomLoot(this.loot_rare, isRanger, damager, m); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4); droplist.add(gen_loot); TwosideKeeper.Loot_Logger.AddRareLoot(); @@ -353,7 +355,7 @@ public enum MonsterDifficulty { return droplist; } - private ItemStack DistributeRandomLoot(LootStructure[] lootlist, boolean isRanger) { + private ItemStack DistributeRandomLoot(LootStructure[] lootlist, boolean isRanger, Entity damager, Monster m) { //Choose an item randomly from the loot list. if (lootlist.length>0) { //Choose an element. @@ -384,7 +386,7 @@ public enum MonsterDifficulty { if (GenericFunctions.isTool(new ItemStack(ls.GetMaterial()))) { if (Math.random()<=0.1) { if (Math.random()<=0.8) { - return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),true); + return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(), true, 0, damager, m); } else { return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),false); } @@ -401,7 +403,7 @@ public enum MonsterDifficulty { } } else {*/ if (Math.random()<=0.8) { - return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),true); + return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(), true, 0, damager, m); } else { return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),false); } diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index 1512512..3040470 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -87,6 +87,7 @@ 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.EntityPortalEvent; +import org.bukkit.event.entity.EntityPortalExitEvent; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.EntityTargetEvent.TargetReason; @@ -1398,7 +1399,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener { p.getEquipment().getItemInMainHand().setItemMeta(m); return true; } - } else { //Implement console/admin version later (Let's you check any name's money.) } @@ -3273,7 +3273,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { for (int i=0;i20) { @@ -4062,9 +4059,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } ev.getEntity().remove(); } else - if (!MonsterController.MobHeightControl(ev.getEntity(),false)) { - ev.setCancelled(true); - //This spawn was not allowed by the mob height controller. + { + if (!habitat_data.addNewStartingLocation(ev.getEntity())) { + ev.getEntity().remove(); + ev.setCancelled(true); + } + if (!MonsterController.MobHeightControl(ev.getEntity(),false)) { + ev.setCancelled(true); + //This spawn was not allowed by the mob height controller. + } } } else { log("Reason for spawn: "+ev.getSpawnReason().toString(),4); @@ -4153,25 +4156,41 @@ public class TwosideKeeper extends JavaPlugin implements Listener { double dmgdealt = ev.getDamage(DamageModifier.BASE); CustomDamage.setupTrueDamage(ev); - if (ev.getCause()==DamageCause.FALL) { - dmgdealt *= GenericFunctions.CalculateFallResistance((LivingEntity)ev.getEntity()); - } + //boolean applieddmg = CustomDamage.ApplyDamage(dmgdealt, null, (LivingEntity)ev.getEntity(), null, ev.getCause().name(), CustomDamage.TRUEDMG); + if (!CustomDamage.InvulnerableCheck(null, (LivingEntity)ev.getEntity())) { + boolean applieddmg=true; + dmgdealt = CustomDamage.CalculateDamage(dmgdealt, null, (LivingEntity)ev.getEntity(), null, null, CustomDamage.NONE); + if (ev.getCause()==DamageCause.FALL) { + dmgdealt *= GenericFunctions.CalculateFallResistance((LivingEntity)ev.getEntity()); + } + dmgdealt = CustomDamage.subtractAbsorptionHearts(dmgdealt, (LivingEntity)ev.getEntity()); + dmgdealt = CustomDamage.applyOnHitEffects(dmgdealt,null,(LivingEntity)ev.getEntity(),null ,null,CustomDamage.NONE); + if ((ev.getCause()==DamageCause.CONTACT || + ev.getCause()==DamageCause.LIGHTNING || + ev.getCause()==DamageCause.FALLING_BLOCK || + ev.getCause()==DamageCause.BLOCK_EXPLOSION || + ev.getCause()==DamageCause.FIRE || + ev.getCause()==DamageCause.LAVA) && + (ev.getEntity() instanceof Player) && + applieddmg) { + Player p = (Player)ev.getEntity(); + damageArmor(p,1); + }; + CustomDamage.setupTrueDamage(ev); + ev.setDamage(DamageModifier.BASE, dmgdealt); + log("Damage from this event is "+dmgdealt,4); + if (dmgdealt < 1) { + ev.setDamage(DamageModifier.BASE,dmgdealt); + } else { + ev.setDamage(DamageModifier.BASE,1d); + ((LivingEntity)ev.getEntity()).setHealth(Math.max(((LivingEntity)ev.getEntity()).getHealth() - (dmgdealt - 1d), 0.5)); + } + } else { + ev.setCancelled(true); + } - boolean applieddmg = CustomDamage.ApplyDamage(dmgdealt, null, (LivingEntity)ev.getEntity(), null, ev.getCause().name(), CustomDamage.TRUEDMG); + //ev.setCancelled(true); - if ((ev.getCause()==DamageCause.CONTACT || - ev.getCause()==DamageCause.LIGHTNING || - ev.getCause()==DamageCause.FALLING_BLOCK || - ev.getCause()==DamageCause.BLOCK_EXPLOSION || - ev.getCause()==DamageCause.FIRE || - ev.getCause()==DamageCause.LAVA) && - (ev.getEntity() instanceof Player) && - applieddmg) { - Player p = (Player)ev.getEntity(); - damageArmor(p,1); - }; - - ev.setCancelled(true); } else { double dmgdealt = ev.getDamage(DamageModifier.BASE); @@ -4299,6 +4318,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener { ev.setCancelled(true); } } + + @EventHandler(priority=EventPriority.LOW,ignoreCancelled = true) + public void HiImAPigZombie(EntityPortalExitEvent ev) { + if (ev.getEntity() instanceof Monster) { + Monster m = (Monster)ev.getEntity(); + updateMonsterFlags(m); + } + } @EventHandler(priority=EventPriority.LOW,ignoreCancelled = true) public void onEndermanTeleport(EntityTeleportEvent ev) { @@ -4667,7 +4694,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener { droplist.remove(i); i--; } - droplist.addAll(MonsterController.getMonsterDifficulty((Monster)ev.getEntity()).RandomizeDrops(dropmult, isBoss, isRanger)); + + droplist.addAll(MonsterController.getMonsterDifficulty((Monster)ev.getEntity()).RandomizeDrops(dropmult, isBoss, isRanger, p, m)); final List drop = new ArrayList(); drop.addAll(droplist);