->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:
sigonasr2 2016-08-05 16:47:45 -05:00
parent 4c19c97061
commit 79c3577469
7 changed files with 48 additions and 17 deletions

Binary file not shown.

View File

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

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

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

View File

@ -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());