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_BOOTS:
case LEATHER_LEGGINGS: case LEATHER_LEGGINGS:
case LEATHER_CHESTPLATE: 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); dmgreduction+=3*((isBlockArmor)?2:1);
}break; }break;
case IRON_BOOTS: case IRON_BOOTS:

View File

@ -3312,6 +3312,10 @@ public class GenericFunctions {
} }
public static void DealExplosionDamageToEntities(Location l, double basedmg, double range) { 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>(); List<Entity> nearbyentities = new ArrayList<Entity>();
//nearbyentities.addAll(); //nearbyentities.addAll();
final double rangeSquared=range*range; final double rangeSquared=range*range;
@ -3325,7 +3329,7 @@ public class GenericFunctions {
TwosideKeeper.log("dmg mult is "+damage_mult,2); TwosideKeeper.log("dmg mult is "+damage_mult,2);
dmg = basedmg * damage_mult; dmg = basedmg * damage_mult;
if (ent instanceof Player) {TwosideKeeper.log("Damage is "+dmg, 5);} 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)); //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); Collection<Entity> ents = l.getWorld().getNearbyEntities(l, range, range, range);
//We cleared the non-living entities, deal damage to the rest. //We cleared the non-living entities, deal damage to the rest.
double origdmg = basedmg; double origdmg = basedmg;
@ -3449,9 +3453,9 @@ public class GenericFunctions {
basedmg=origdmg; basedmg=origdmg;
if (isLineDrive) { if (isLineDrive) {
basedmg*=1.0d+(4*((CustomDamage.getPercentHealthMissing(m))/100d)); 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 { } else {
CustomDamage.ApplyDamage(basedmg, damager, m, null, null); CustomDamage.ApplyDamage(basedmg, damager, m, weapon, null);
} }
if (knockup) { if (knockup) {
m.setVelocity(new Vector(0,knockupamt,0)); m.setVelocity(new Vector(0,knockupamt,0));

View File

@ -7,10 +7,17 @@ import org.bukkit.ChatColor;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; 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.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta; 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; import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
public class Loot { public class Loot {
@ -27,6 +34,10 @@ public class Loot {
} }
public static ItemStack GenerateMegaPiece(Material mat_type, boolean hardened, boolean setitem, int settier) { 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); ItemStack raresword = new ItemStack(mat_type);
ItemMeta sword_meta = raresword.getItemMeta(); ItemMeta sword_meta = raresword.getItemMeta();
sword_meta.setDisplayName(ChatColor.AQUA+""+ChatColor.BOLD+"Mega "+GenericFunctions.UserFriendlyMaterialName(mat_type)); 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 (setitem && (raresword.getType().toString().contains("SWORD") || GenericFunctions.isArmor(raresword))) {
if (damager==null && m==null) {
raresword = GenerateSetPiece(raresword,hardened,settier); 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; 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) { public static ItemStack GenerateRangerPiece(Material mat_type, boolean hardened, int tier) {
ItemStack raresword = new ItemStack(mat_type); ItemStack raresword = new ItemStack(mat_type);
ItemMeta sword_meta = raresword.getItemMeta(); ItemMeta sword_meta = raresword.getItemMeta();
@ -391,4 +567,50 @@ public class Loot {
} }
return item; 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.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Monster;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.PotionMeta;
@ -216,11 +218,11 @@ public enum MonsterDifficulty {
return null; return null;
} }
public List<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger) { public List<ItemStack> RandomizeDrops(double dropmult, boolean isBoss, boolean isRanger, Entity damager, Monster m) {
return RandomizeDrops(dropmult,isBoss,false,isRanger); 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); TwosideKeeper.log(ChatColor.AQUA+"->Entering RandomizeDrops()", 5);
List<ItemStack> droplist = new ArrayList<ItemStack>(); List<ItemStack> droplist = new ArrayList<ItemStack>();
dropmult += 1; //Base dropmult is 1.0. dropmult += 1; //Base dropmult is 1.0.
@ -239,7 +241,7 @@ public enum MonsterDifficulty {
this.loot_regular.length>0) { this.loot_regular.length>0) {
TwosideKeeper.log(">Attempting Common roll.", 4); TwosideKeeper.log(">Attempting Common roll.", 4);
//This is a common roll. //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); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4);
droplist.add(gen_loot); droplist.add(gen_loot);
TwosideKeeper.Loot_Logger.AddCommonLoot(); TwosideKeeper.Loot_Logger.AddCommonLoot();
@ -249,7 +251,7 @@ public enum MonsterDifficulty {
this.loot_rare.length>0) { this.loot_rare.length>0) {
TwosideKeeper.log(">Attempting Rare roll.", 3); TwosideKeeper.log(">Attempting Rare roll.", 3);
//This is a common roll. //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); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4);
droplist.add(gen_loot); droplist.add(gen_loot);
double randomness = Math.random(); double randomness = Math.random();
@ -284,7 +286,7 @@ public enum MonsterDifficulty {
this.loot_legendary.length>0) { this.loot_legendary.length>0) {
TwosideKeeper.log(">Attempting Legendary roll.", 3); TwosideKeeper.log(">Attempting Legendary roll.", 3);
//This is a common roll. //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); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4);
droplist.add(gen_loot); droplist.add(gen_loot);
double randomness = Math.random(); double randomness = Math.random();
@ -334,7 +336,7 @@ public enum MonsterDifficulty {
if (isBoss) { //50% of the time, we drop something great. if (isBoss) { //50% of the time, we drop something great.
if (Math.random()<=0.5 && this.loot_legendary.length>0) { if (Math.random()<=0.5 && this.loot_legendary.length>0) {
TwosideKeeper.log(">Boss Legendary roll.", 1); 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); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4);
droplist.add(gen_loot); droplist.add(gen_loot);
TwosideKeeper.Loot_Logger.AddLegendaryLoot(); TwosideKeeper.Loot_Logger.AddLegendaryLoot();
@ -342,7 +344,7 @@ public enum MonsterDifficulty {
else else
if (this.loot_rare.length>0) { //Consolation Prize. if (this.loot_rare.length>0) { //Consolation Prize.
TwosideKeeper.log(">Boss Rare roll.", 1); 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); TwosideKeeper.log("Adding "+gen_loot.toString()+" to loot table.", 4);
droplist.add(gen_loot); droplist.add(gen_loot);
TwosideKeeper.Loot_Logger.AddRareLoot(); TwosideKeeper.Loot_Logger.AddRareLoot();
@ -353,7 +355,7 @@ public enum MonsterDifficulty {
return droplist; 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. //Choose an item randomly from the loot list.
if (lootlist.length>0) { if (lootlist.length>0) {
//Choose an element. //Choose an element.
@ -384,7 +386,7 @@ public enum MonsterDifficulty {
if (GenericFunctions.isTool(new ItemStack(ls.GetMaterial()))) { if (GenericFunctions.isTool(new ItemStack(ls.GetMaterial()))) {
if (Math.random()<=0.1) { if (Math.random()<=0.1) {
if (Math.random()<=0.8) { 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 { } else {
return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),false); return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),false);
} }
@ -401,7 +403,7 @@ public enum MonsterDifficulty {
} }
} else {*/ } else {*/
if (Math.random()<=0.8) { 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 { } else {
return Loot.GenerateMegaPiece(ls.GetMaterial(), ls.GetHardened(),false); 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.EntityDamageEvent.DamageModifier;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityPortalEvent; import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.entity.EntityPortalExitEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason; import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
@ -1398,7 +1399,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
p.getEquipment().getItemInMainHand().setItemMeta(m); p.getEquipment().getItemInMainHand().setItemMeta(m);
return true; return true;
} }
} else { } else {
//Implement console/admin version later (Let's you check any name's money.) //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++) { for (int i=0;i<monsters.size();i++) {
GenericFunctions.removeNoDamageTick(monsters.get(i), ev1.getPlayer()); 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); lp.setColor(Color.OLIVE);
DecimalFormat df = new DecimalFormat("0.00"); DecimalFormat df = new DecimalFormat("0.00");
lp.setCustomName("LD "+df.format(CustomDamage.getBaseWeaponDamage(ev.getItemDrop().getItemStack(), ev1.getPlayer(), null))+" "+ev1.getPlayer().getName()); 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() { Bukkit.getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("TwosideKeeper"), new Runnable() {
public void run() { public void run() {
AreaEffectCloud lp = (AreaEffectCloud)newpos2.getWorld().spawnEntity(newpos2, EntityType.AREA_EFFECT_CLOUD); 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.setColor(Color.OLIVE);
lp.setCustomName(customname); lp.setCustomName(customname);
lp.setBasePotionData(new PotionData(PotionType.INSTANT_DAMAGE)); lp.setBasePotionData(new PotionData(PotionType.INSTANT_DAMAGE));
@ -3917,7 +3917,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ItemCubeWindow.addItemCubeWindow(p, itemcubeid); ItemCubeWindow.addItemCubeWindow(p, itemcubeid);
} else } else
if (itemcubeid!=-1) { 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); ItemCubeWindow.removeAllItemCubeWindows(p);
} }
log("This is an Item Cube.",5); 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++) { for (int i=0;i<entities.length;i++) {
if (entities[i]!=null && entities[i].isValid() && (entities[i] instanceof Monster)) { if (entities[i]!=null && entities[i].isValid() && (entities[i] instanceof Monster)) {
Monster m = (Monster)entities[i]; Monster m = (Monster)entities[i];
updateMonsterFlags(m);
}
}
}
}
public void updateMonsterFlags(Monster m) {
MonsterStructure ms = MonsterStructure.getMonsterStructure(m); MonsterStructure ms = MonsterStructure.getMonsterStructure(m);
MonsterDifficulty md = MonsterController.getMonsterDifficulty(m); MonsterDifficulty md = MonsterController.getMonsterDifficulty(m);
if (md == MonsterDifficulty.ELITE) { if (md == MonsterDifficulty.ELITE) {
@ -4020,23 +4027,13 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ms.SetLeader(true); ms.SetLeader(true);
} }
} }
}
}
}
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true) @EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
public void MonsterSpawnEvent(CreatureSpawnEvent ev) { public void MonsterSpawnEvent(CreatureSpawnEvent ev) {
if (ev.getEntity() instanceof Monster) { if (ev.getEntity() instanceof Monster) {
Monster m = (Monster)ev.getEntity(); Monster m = (Monster)ev.getEntity();
if (!habitat_data.addNewStartingLocation(ev.getEntity())) {
ev.getEntity().remove();
ev.setCancelled(true);
}
MonsterStructure.getMonsterStructure(m); MonsterStructure.getMonsterStructure(m);
} }
if ((ev.getSpawnReason().equals(SpawnReason.DISPENSE_EGG) || if ((ev.getSpawnReason().equals(SpawnReason.DISPENSE_EGG) ||
ev.getSpawnReason().equals(SpawnReason.EGG)) && ev.getSpawnReason().equals(SpawnReason.EGG)) &&
CustomDamage.trimNonLivingEntities(ev.getEntity().getNearbyEntities(8, 8, 8)).size()>20) { CustomDamage.trimNonLivingEntities(ev.getEntity().getNearbyEntities(8, 8, 8)).size()>20) {
@ -4062,10 +4059,16 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
ev.getEntity().remove(); ev.getEntity().remove();
} else } else
{
if (!habitat_data.addNewStartingLocation(ev.getEntity())) {
ev.getEntity().remove();
ev.setCancelled(true);
}
if (!MonsterController.MobHeightControl(ev.getEntity(),false)) { if (!MonsterController.MobHeightControl(ev.getEntity(),false)) {
ev.setCancelled(true); ev.setCancelled(true);
//This spawn was not allowed by the mob height controller. //This spawn was not allowed by the mob height controller.
} }
}
} else { } else {
log("Reason for spawn: "+ev.getSpawnReason().toString(),4); 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); double dmgdealt = ev.getDamage(DamageModifier.BASE);
CustomDamage.setupTrueDamage(ev); 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) { if (ev.getCause()==DamageCause.FALL) {
dmgdealt *= GenericFunctions.CalculateFallResistance((LivingEntity)ev.getEntity()); dmgdealt *= GenericFunctions.CalculateFallResistance((LivingEntity)ev.getEntity());
} }
dmgdealt = CustomDamage.subtractAbsorptionHearts(dmgdealt, (LivingEntity)ev.getEntity());
boolean applieddmg = CustomDamage.ApplyDamage(dmgdealt, null, (LivingEntity)ev.getEntity(), null, ev.getCause().name(), CustomDamage.TRUEDMG); dmgdealt = CustomDamage.applyOnHitEffects(dmgdealt,null,(LivingEntity)ev.getEntity(),null ,null,CustomDamage.NONE);
if ((ev.getCause()==DamageCause.CONTACT || if ((ev.getCause()==DamageCause.CONTACT ||
ev.getCause()==DamageCause.LIGHTNING || ev.getCause()==DamageCause.LIGHTNING ||
ev.getCause()==DamageCause.FALLING_BLOCK || ev.getCause()==DamageCause.FALLING_BLOCK ||
@ -4170,8 +4176,21 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
Player p = (Player)ev.getEntity(); Player p = (Player)ev.getEntity();
damageArmor(p,1); 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);
}
//ev.setCancelled(true);
} else } else
{ {
double dmgdealt = ev.getDamage(DamageModifier.BASE); double dmgdealt = ev.getDamage(DamageModifier.BASE);
@ -4301,6 +4320,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = 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) { public void onEndermanTeleport(EntityTeleportEvent ev) {
if (ev.getEntity() instanceof Monster && MonsterController.getMonsterDifficulty((Monster)ev.getEntity()).equals(MonsterDifficulty.ELITE)) { if (ev.getEntity() instanceof Monster && MonsterController.getMonsterDifficulty((Monster)ev.getEntity()).equals(MonsterDifficulty.ELITE)) {
ev.setTo(ev.getFrom()); ev.setTo(ev.getFrom());
@ -4667,7 +4694,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
droplist.remove(i); droplist.remove(i);
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>(); final List<ItemStack> drop = new ArrayList<ItemStack>();
drop.addAll(droplist); drop.addAll(droplist);