->Fixed a bug with percent health remaining calculations being inverted.
->Fixed a bug where Line Drive 5-set bonus was not properly working. ->Damage particles now appear appropriately when players deal damage and critically strike. ->All damage dealt, including damage from skills now show up when damage tracking is enabled via '/dps'. ->Malleable Base Drops are now invulnerable, so they do not get destroyed while hunting.
This commit is contained in:
parent
4c19c97061
commit
79c3577469
Binary file not shown.
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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<ItemCubeWindow>();
|
||||
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.
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user