diff --git a/.gitignore b/.gitignore index 01f7afd..25b476e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .* /bin /projectBuilder.xml -/TwosideKeeper.jar diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar new file mode 100644 index 0000000..e8e8010 Binary files /dev/null and b/TwosideKeeper.jar differ diff --git a/projectBuilder.xml b/projectBuilder.xml deleted file mode 100644 index 4faeb1b..0000000 --- a/projectBuilder.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/sig/plugin/TwosideKeeper/CustomDamage.java b/src/sig/plugin/TwosideKeeper/CustomDamage.java index a9cd6fe..0ae4a8b 100644 --- a/src/sig/plugin/TwosideKeeper/CustomDamage.java +++ b/src/sig/plugin/TwosideKeeper/CustomDamage.java @@ -772,7 +772,7 @@ public class CustomDamage { restoreHealthToPartyMembersWithProtectorSet(p); applySustenanceSetonHitEffects(p); reduceStrengthAmountForStealthSet(p); - increaseBlockStacks(p); + handleBlockStacks(p); if (!isFlagSet(flags,NOAOE)) { if (damage0) { + pd.blockStacks--; + GenericFunctions.sendActionBarMessage(p, "", true); + pd.customtitle.updateSideTitleStats(p); + } } } + return damage; } private static void updateAggroValues(LivingEntity damager, LivingEntity target, double damage, String reason) { @@ -2027,6 +2035,16 @@ public class CustomDamage { } return; } + if (PlayerMode.isDefender(p)) { + if (DefenderStance.getDefenderStance(p)==DefenderStance.TANK) { + Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, new Runnable() { + @Override + public void run() { + p.setVelocity(p.getVelocity().multiply(0)); + } + },1); + } + } /*if (PlayerMode.isDefender(p) && p.isBlocking()) { Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, new Runnable() { @Override @@ -2772,6 +2790,9 @@ public class CustomDamage { if (ds==DefenderStance.BLOCK) { defenderstancemult = 0.25; } else + if (ds==DefenderStance.CHARGE) { + defenderstancemult = 0.1; + } else if (ds==DefenderStance.TANK) { defenderstancemult = 0.5; } diff --git a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java index 14662ec..73711fc 100644 --- a/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java +++ b/src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java @@ -4134,6 +4134,7 @@ public class GenericFunctions { basedmg=origdmg; boolean isForcefulStrike = (reason!=null && reason.equalsIgnoreCase("forceful strike")); boolean isSweepUp = (reason!=null && reason.equalsIgnoreCase("sweep up")); + boolean isShieldCharge = (reason!=null && reason.equalsIgnoreCase("shield charge")); if (isSweepUp) { aPlugin.API.sendSoundlessExplosion(m.getLocation(), 1.5f); if (damager instanceof Player) { @@ -4141,6 +4142,12 @@ public class GenericFunctions { p.playEffect(m.getLocation(), Effect.LAVA_POP, null); } } + if (isShieldCharge) { + GenericFunctions.addSuppressionTime(m, (int)(20*0.5)); + Player p = (Player)damager; + double dmg = CustomDamage.getBaseWeaponDamage(p.getEquipment().getItemInMainHand(), p, m);; + CustomDamage.ApplyDamage(dmg*0.25, p, m, p.getEquipment().getItemInMainHand(), "Shield Charge", CustomDamage.IGNORE_DAMAGE_TICK|CustomDamage.TRUEDMG); + } if (isForcefulStrike) { GenericFunctions.addSuppressionTime(m, 20*2); } @@ -4152,7 +4159,7 @@ public class GenericFunctions { } } } else { - if (CustomDamage.ApplyDamage(basedmg, damager, m, weapon, reason)) { + if (CustomDamage.ApplyDamage(basedmg, damager, m, weapon, reason, CustomDamage.IGNORE_DAMAGE_TICK)) { if (knockup) { m.setVelocity(new Vector(0,knockupamt,0)); } diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index fdc8b05..60228b3 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -4492,7 +4492,17 @@ public class TwosideKeeper extends JavaPlugin implements Listener { /*double dmg = CustomDamage.CalculateDamage(0,p,); CustomDamage.ApplyDamage(, damager, target, weapon, reason, flags)*/ //GenericFunctions.DealBlitzenLightningStrikeToNearbyMobs(l, basedmg, range, damager, flags); - GenericFunctions.DealDamageToNearbyMobs(checkpos, 0, 1, true, 2, p, p.getEquipment().getItemInMainHand(), false, "Shield Charge"); + Block bb = checkpos.getBlock().getRelative(0, -1, 0); + if (bb!=null && bb.getType()!=Material.AIR) { + GenericFunctions.DealDamageToNearbyMobs(checkpos, 0, 1, true, 2, p, p.getEquipment().getItemInMainHand(), false, "Shield Charge"); + } + } + List ents = GenericFunctions.getNearbyMobs(p.getLocation(), 16); + for (LivingEntity ent : ents) { + if (!(ent instanceof Player)) { + LivingEntityStructure les = LivingEntityStructure.GetLivingEntityStructure(ent); + les.increaseAggro(p, 50); + } } } }