Item Sets now dropped based on the mode you are in.

This commit is contained in:
sigonasr2 2016-08-25 22:12:15 -05:00
parent 032b72113f
commit 4dedb85de7
6 changed files with 322 additions and 62 deletions

Binary file not shown.

View File

@ -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:

View File

@ -3312,6 +3312,10 @@ public class GenericFunctions {
}
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<Entity> nearbyentities = new ArrayList<Entity>();
//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<Entity> 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));

View File

@ -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,12 +56,177 @@ public class Loot {
}
if (setitem && (raresword.getType().toString().contains("SWORD") || GenericFunctions.isArmor(raresword))) {
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);
ItemMeta sword_meta = raresword.getItemMeta();
@ -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;
}
}*/
}

View File

@ -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<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger) {
return RandomizeDrops(dropmult,isBoss,false,isRanger);
public List<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger, Entity damager, Monster m) {
return RandomizeDrops(dropmult,isBoss,false,isRanger,damager,m);
}
public List<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isElite, boolean isRanger) {
public List<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isElite, boolean isRanger, Entity damager, Monster m) {
TwosideKeeper.log(ChatColor.AQUA+"->Entering RandomizeDrops()", 5);
List<ItemStack> droplist = new ArrayList<ItemStack>();
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);
}

View File

@ -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;i<monsters.size();i++) {
GenericFunctions.removeNoDamageTick(monsters.get(i), ev1.getPlayer());
}
GenericFunctions.DealDamageToNearbyMobs(newpos, dmgdealt, 2, true, 0.8d, ev1.getPlayer(),true);
GenericFunctions.DealDamageToNearbyMobs(newpos, dmgdealt, 2, true, 0.8d, ev1.getPlayer(), ev.getItemDrop().getItemStack(), true);
lp.setColor(Color.OLIVE);
DecimalFormat df = new DecimalFormat("0.00");
lp.setCustomName("LD "+df.format(CustomDamage.getBaseWeaponDamage(ev.getItemDrop().getItemStack(), ev1.getPlayer(), null))+" "+ev1.getPlayer().getName());
@ -3294,7 +3294,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
Bukkit.getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("TwosideKeeper"), new Runnable() {
public void run() {
AreaEffectCloud lp = (AreaEffectCloud)newpos2.getWorld().spawnEntity(newpos2, EntityType.AREA_EFFECT_CLOUD);
GenericFunctions.DealDamageToNearbyMobs(newpos2, dmgdealt, 2, true, 0.4d, ev1.getPlayer(),true);
GenericFunctions.DealDamageToNearbyMobs(newpos2, dmgdealt, 2, true, 0.4d, ev1.getPlayer(), ev.getItemDrop().getItemStack(), true);
lp.setColor(Color.OLIVE);
lp.setCustomName(customname);
lp.setBasePotionData(new PotionData(PotionType.INSTANT_DAMAGE));
@ -3917,7 +3917,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ItemCubeWindow.addItemCubeWindow(p, itemcubeid);
} else
if (itemcubeid!=-1) {
log("Size is "+(ev.getView().getTopInventory().getSize())+", Clicked slot "+ev.getRawSlot(),2);
log("Size is "+(ev.getView().getTopInventory().getSize())+", Clicked slot "+ev.getRawSlot(),5);
ItemCubeWindow.removeAllItemCubeWindows(p);
}
log("This is an Item Cube.",5);
@ -4009,6 +4009,13 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
for (int i=0;i<entities.length;i++) {
if (entities[i]!=null && entities[i].isValid() && (entities[i] instanceof Monster)) {
Monster m = (Monster)entities[i];
updateMonsterFlags(m);
}
}
}
}
public void updateMonsterFlags(Monster m) {
MonsterStructure ms = MonsterStructure.getMonsterStructure(m);
MonsterDifficulty md = MonsterController.getMonsterDifficulty(m);
if (md == MonsterDifficulty.ELITE) {
@ -4020,23 +4027,13 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ms.SetLeader(true);
}
}
}
}
}
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
public void MonsterSpawnEvent(CreatureSpawnEvent ev) {
if (ev.getEntity() instanceof Monster) {
Monster m = (Monster)ev.getEntity();
if (!habitat_data.addNewStartingLocation(ev.getEntity())) {
ev.getEntity().remove();
ev.setCancelled(true);
}
MonsterStructure.getMonsterStructure(m);
}
if ((ev.getSpawnReason().equals(SpawnReason.DISPENSE_EGG) ||
ev.getSpawnReason().equals(SpawnReason.EGG)) &&
CustomDamage.trimNonLivingEntities(ev.getEntity().getNearbyEntities(8, 8, 8)).size()>20) {
@ -4062,10 +4059,16 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
ev.getEntity().remove();
} else
{
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,12 +4156,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
double dmgdealt = ev.getDamage(DamageModifier.BASE);
CustomDamage.setupTrueDamage(ev);
//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());
}
boolean applieddmg = CustomDamage.ApplyDamage(dmgdealt, null, (LivingEntity)ev.getEntity(), null, ev.getCause().name(), CustomDamage.TRUEDMG);
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 ||
@ -4170,8 +4176,21 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
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);
}
//ev.setCancelled(true);
} else
{
double dmgdealt = ev.getDamage(DamageModifier.BASE);
@ -4301,6 +4320,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
@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) {
if (ev.getEntity() instanceof Monster && MonsterController.getMonsterDifficulty((Monster)ev.getEntity()).equals(MonsterDifficulty.ELITE)) {
ev.setTo(ev.getFrom());
@ -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<ItemStack> drop = new ArrayList<ItemStack>();
drop.addAll(droplist);