diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index dd3b41d..272e66c 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/src/plugin.yml b/src/plugin.yml index 5d83259..cbb5e42 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: TwosideKeeper main: sig.plugin.TwosideKeeper.TwosideKeeper -version: 3.7.3cr3 +version: 3.7.3cr4 commands: money: description: Tells the player the amount of money they are holding. diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java index 36de9d1..474bdb3 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java @@ -1,5 +1,6 @@ package sig.plugin.TwosideKeeper.HelperStructures.Common; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; @@ -2647,7 +2648,7 @@ public class GenericFunctions { double ratio = 1.0-NewCombat.CalculateDamageReduction(1,target,p); AwakenedArtifact.addPotentialEXP(damager.getEquipment().getItemInMainHand(), (int)((ratio*20)+5), p); NewCombat.increaseArtifactArmorXP(p,(int)(ratio*10)+1); - } + } if (damager instanceof Player) { Player p = (Player)damager; @@ -2802,8 +2803,19 @@ public class GenericFunctions { public static void subtractHealth(LivingEntity entity, LivingEntity damager, double dmg, ItemStack artifact) { if (damager instanceof Player) { + Player p = (Player)damager; + TwosideKeeper.log("Damage goes from "+dmg+"->"+(dmg+TwosideKeeper.CUSTOM_DAMAGE_IDENTIFIER),5); entity.damage(dmg+TwosideKeeper.CUSTOM_DAMAGE_IDENTIFIER,damager); + aPlugin.API.showDamage(entity, (int)(dmg/10)); + + PlayerStructure pd = PlayerStructure.GetPlayerStructure(p); + if (pd.damagelogging) { + pd.target=entity; + DecimalFormat df = new DecimalFormat("0.0"); + TwosideKeeper.updateTitle(p,ChatColor.AQUA+df.format(dmg)); + TwosideKeeper.log("In here",2); + } //Bukkit.getPluginManager().callEvent(new EntityDamageByEntityEvent(damager,entity,DamageCause.CUSTOM,dmg+TwosideKeeper.CUSTOM_DAMAGE_IDENTIFIER)); } else { if (entity instanceof Player) { @@ -2830,6 +2842,7 @@ public class GenericFunctions { if (entity.getHealth()>dmg && entity instanceof Player) { if (!AttemptRevive((Player)entity,dmg)) { entity.setHealth(((Player)entity).getHealth()-dmg); + aPlugin.API.showDamage(entity, (int)(dmg/10)); aPlugin.API.sendEntityHurtAnimation((Player)entity); } } diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/ItemSet.java b/src/sig/plugin/TwosideKeeper/HelperStructures/ItemSet.java index 66555d6..27ba48c 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/ItemSet.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/ItemSet.java @@ -147,7 +147,9 @@ public enum ItemSet { ItemSet temp = ItemSet.GetSet(GenericFunctions.getEquipment(ent)[i]); if (temp!=null) { int tier = ItemSet.GetTier(GenericFunctions.getEquipment(ent)[i]); - if (ItemSet.GetTierSetCount(set, tier, ent)>=5) { + int detectedsets = ItemSet.GetTierSetCount(set, tier, ent); + TwosideKeeper.log("Sets: "+detectedsets, 2); + if (detectedsets>=5) { return true; } } diff --git a/src/sig/plugin/TwosideKeeper/NewCombat.java b/src/sig/plugin/TwosideKeeper/NewCombat.java index 0a1050d..f19f9dd 100644 --- a/src/sig/plugin/TwosideKeeper/NewCombat.java +++ b/src/sig/plugin/TwosideKeeper/NewCombat.java @@ -149,6 +149,9 @@ public class NewCombat { totaldmg+=CalculateWeaponDamage(damager, target); double mult1 = calculatePlayerCriticalStrike(weapon,damager); addMultiplierToPlayerLogger(damager,"Critical Strike Mult",mult1); + if (mult1>1.0) { + aPlugin.API.critEntity(target, 10); + } bonusmult*=mult1; } } @@ -804,7 +807,7 @@ public class NewCombat { static double calculateExecutionDamage(ItemStack weapon, LivingEntity target) { if (target!=null) { - return getPercentHealthRemaining(target) + return getPercentHealthMissing(target) /20 *GenericFunctions.getAbilityValue(ArtifactAbility.EXECUTION,weapon); } @@ -813,7 +816,10 @@ public class NewCombat { //Returns between 0-100. static double getPercentHealthRemaining(LivingEntity target) { - return 100-(target.getHealth()/target.getMaxHealth()*100); + return ((target.getHealth()/target.getMaxHealth())*100); + } + static double getPercentHealthMissing(LivingEntity target) { + return 100-getPercentHealthRemaining(target); } static double calculateArtifactAbilityMultiplier(ItemStack weapon, Entity damager, LivingEntity target) { @@ -833,6 +839,7 @@ public class NewCombat { if (damager instanceof Player && criticalstrike) { Player p = (Player)damager; p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_ATTACK_CRIT, 1.0f, 1.0f); + } return criticalstrike?(calculateCriticalStrikeMultiplier(weapon)):1.0; } diff --git a/src/sig/plugin/TwosideKeeper/PlayerStructure.java b/src/sig/plugin/TwosideKeeper/PlayerStructure.java index 0df6c93..648e886 100644 --- a/src/sig/plugin/TwosideKeeper/PlayerStructure.java +++ b/src/sig/plugin/TwosideKeeper/PlayerStructure.java @@ -21,6 +21,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; import sig.plugin.TwosideKeeper.HelperStructures.DeathStructure; +import sig.plugin.TwosideKeeper.HelperStructures.ServerType; import sig.plugin.TwosideKeeper.Logging.DamageLogger; /*PLAYER STRUCTURE @@ -120,24 +121,24 @@ public class PlayerStructure { this.title_task=-1; this.sounds_enabled=true; this.debuffcount=0; - this.last_deathmark=TwosideKeeper.getServerTickTime(); - this.last_shovelspell=TwosideKeeper.getServerTickTime()+300; + this.last_deathmark=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; + this.last_shovelspell=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime()+300:0; this.swordcombo=0; - this.last_swordhit=TwosideKeeper.getServerTickTime(); + this.last_swordhit=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; this.highwinder=false; this.highwinderdmg=0.0; this.nextarrowxp=0; this.hasfullrangerset=false; - this.last_strikerspell=TwosideKeeper.getServerTickTime(); + this.last_strikerspell=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; this.openeditemcube = new ArrayList(); this.openinginventory = false; this.fulldodge=false; - this.last_dodge=TwosideKeeper.getServerTickTime(); + this.last_dodge=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; this.lastarrowwasinrangermode=false; this.isViewingInventory=false; this.destroyedminecart=false; - this.last_laugh_time=TwosideKeeper.getServerTickTime(); - this.last_rejuvenate=TwosideKeeper.getServerTickTime(); + this.last_laugh_time=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; + this.last_rejuvenate=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0; this.damagedata = new DamageLogger(p); this.damagelogging=false; //Set defaults first, in case this is a new user. diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index 5e0689d..015a7a8 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -2826,7 +2826,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener { !pd.target.isDead()) { pd.target.setNoDamageTicks(0); } + ev.getPlayer().getEquipment().setItemInMainHand(ev.getItemDrop().getItemStack()); boolean ex_version = ItemSet.hasFullSet(ev.getPlayer(), ItemSet.PANROS); + ev.getPlayer().getEquipment().setItemInMainHand(new ItemStack(Material.AIR)); ev.getItemDrop().setPickupDelay(0); Vector facing = ev.getPlayer().getLocation().getDirection(); if (!second_charge) { @@ -3911,7 +3913,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { ((!monsterdata.containsKey(ev.getEntity().getUniqueId())) || monsterdata.get(ev.getEntity().getUniqueId()).GetTarget()==null)) { //We won't drop it when they are targeting a player, only when they are doing their own thing. Block block_teleported_on = ev.getFrom().add(0,0,0).getBlock(); - log("Teleported on "+block_teleported_on.getType()+".",2); + log("Teleported on "+block_teleported_on.getType()+".",5); if (block_teleported_on.isLiquid()) { if (MonsterController.getMonsterDifficulty(((Monster)ev.getEntity()))==MonsterDifficulty.HELLFIRE) { ItemStack i=new ItemStack(Material.PUMPKIN_SEEDS,1); @@ -3997,7 +3999,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener { testamt=500; } if (val<=((double)testamt/(double)65)*(0.00125)*ARTIFACT_RARITY) { - ev.getPlayer().getWorld().dropItemNaturally(ev.getPlayer().getLocation(), Artifact.createArtifactItem(ArtifactItem.MALLEABLE_BASE)); + Item it = ev.getPlayer().getWorld().dropItemNaturally(ev.getPlayer().getLocation(), Artifact.createArtifactItem(ArtifactItem.MALLEABLE_BASE)); + it.setPickupDelay(0); + it.setInvulnerable(true); ev.getPlayer().sendMessage(ChatColor.LIGHT_PURPLE+"A strange item has appeared nearby."); } } @@ -4033,6 +4037,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener { log("Stored Damage is "+storeddmg+". CUSTOM_DAMAGE_IDENTIFIER:"+CUSTOM_DAMAGE_IDENTIFIER+"\n...Subtracted damage is "+(storeddmg-CUSTOM_DAMAGE_IDENTIFIER),4); ev.setDamage(DamageModifier.BASE,storeddmg-CUSTOM_DAMAGE_IDENTIFIER); ev.setDamage(storeddmg-CUSTOM_DAMAGE_IDENTIFIER); + if (ev.getEntity() instanceof LivingEntity) { + aPlugin.API.showDamage((LivingEntity)ev.getEntity(), (int)((storeddmg-CUSTOM_DAMAGE_IDENTIFIER)/10)); + } log("New Damage: "+ev.getFinalDamage(),4); } else { double dmg = 0.0; @@ -4096,7 +4103,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //ev.setCancelled(true); if (ev.getEntity() instanceof LivingEntity) { ((LivingEntity)ev.getEntity()).setNoDamageTicks(10); - final double oldhp=((LivingEntity)ev.getEntity()).getHealth(); + final double oldhp=((LivingEntity)ev.getEntity()).getHealth(); if (ev.getEntity() instanceof Player) { if (!GenericFunctions.AttemptRevive((Player)ev.getEntity(), dmg)) { @@ -4126,6 +4133,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } GenericFunctions.knockOffGreed(p); } + aPlugin.API.showDamage((LivingEntity)ev.getEntity(), (int)(dmg/10)); } } //Negative damage doesn't make sense. We'd apply it normally. } @@ -4477,8 +4485,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (ev.getEntity().getCustomName().contains("LD ")) { Player p = Bukkit.getPlayer(ev.getEntity().getCustomName().split(" ")[2]); double dmgdealt=Double.parseDouble(ev.getEntity().getCustomName().split(" ")[1]); - dmgdealt*=1.0d+(4*((100-NewCombat.getPercentHealthRemaining((Monster)affected.get(i)))/100d)); - log("Dealing "+dmgdealt+" damage. Player is "+p.getName(),4); + dmgdealt*=1.0d+(4*((NewCombat.getPercentHealthMissing((Monster)affected.get(i)))/100d)); + log("Dealing "+dmgdealt+" damage. Player is "+p.getName(),5); double reduceddmg = CalculateDamageReduction(dmgdealt,affected.get(i),null); DamageLogger.AddNewCalculation(Bukkit.getPlayer(ev.getEntity().getCustomName().split(" ")[2]), ChatColor.GREEN+"Line Drive", dmgdealt, reduceddmg); GenericFunctions.DealDamageToMob(reduceddmg, affected.get(i), Bukkit.getPlayer(ev.getEntity().getCustomName().split(" ")[2]), Bukkit.getPlayer(ev.getEntity().getCustomName().split(" ")[2]).getEquipment().getItemInMainHand());