Item Sets now dropped based on the mode you are in.
This commit is contained in:
parent
032b72113f
commit
4dedb85de7
Binary file not shown.
@ -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:
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user