diff --git a/Changelog.txt b/Changelog.txt index ee8d35dcf..a917ee831 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -35,9 +35,10 @@ Version 2.1.0 + (Events) Starting an XP event will now use the title API (toggle this in advanced.yml) + (Sound) Volume and Pitch of sounds can now be configured in the new sounds.yml file + (MySQL) Added support for SSL for MySQL/MariaDB (On by default) - ! (Skills) Taming's Gore now uses Bleed Rank 1 for its DoT - ! (Skills) Sword's Rupture now ticks four times as fast + ! (Skills) Taming's Gore now uses Rupture Rank 1 for its DoT ! (Skills) Sword's Bleed has been renamed to Rupture + ! (Skills) Sword's Rupture now ticks four times as fast + = (Skills) Fixed a bug where Rupture would apply an incorrect amount of bleed ticks ! (Skills) Sword's Rupture now reaches its max proc chance at level 20 (200 in Retro) ! (Skills) Sword's Rupture now has a max chance to proc of 33% instead of 70% ! (Skills) Sword's Rupture now deals 50% more damage at above Rank 3 and can last much longer! The base damage for Bleed has been increased as well (update your advanced.yml admins) diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java index 7a775baa2..3f3a1e7d8 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java @@ -4,7 +4,6 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.skills.swords.Swords; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.TextComponentFactory; import com.gmail.nossr50.util.player.UserManager; @@ -43,7 +42,7 @@ public class SwordsCommand extends SkillCommand { // SWORDS_RUPTURE if (canBleed) { - bleedLength = UserManager.getPlayer(player).getSwordsManager().getBleedTicks(); + bleedLength = UserManager.getPlayer(player).getSwordsManager().getRuptureBleedTicks(); String[] bleedStrings = calculateAbilityDisplayValues(skillValue, SubSkillType.SWORDS_RUPTURE, isLucky); bleedChance = bleedStrings[0]; @@ -69,7 +68,7 @@ public class SwordsCommand extends SkillCommand { protected List statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) { List messages = new ArrayList(); - int ruptureTicks = UserManager.getPlayer(player).getSwordsManager().getBleedTicks(); + int ruptureTicks = UserManager.getPlayer(player).getSwordsManager().getRuptureBleedTicks(); double ruptureDamagePlayers = RankUtils.getRank(player, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamagePlayer() * 1.5D : AdvancedConfig.getInstance().getRuptureDamagePlayer(); double ruptureDamageMobs = RankUtils.getRank(player, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamageMobs() * 1.5D : AdvancedConfig.getInstance().getRuptureDamageMobs(); diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index d52a5934e..cf542db02 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -511,7 +511,7 @@ public class mcMMO extends JavaPlugin { // Cleanup the backups folder new CleanBackupsTask().runTaskAsynchronously(mcMMO.p); - // Bleed timer (Runs every two seconds) + // Bleed timer (Runs every 0.5 seconds) new BleedTimerTask().runTaskTimer(this, 1 * Misc.TICK_CONVERSION_FACTOR, 1 * (Misc.TICK_CONVERSION_FACTOR / 2)); // Old & Powerless User remover diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java index 60daa157e..e6f700022 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java @@ -17,9 +17,10 @@ import java.util.Map; import java.util.Map.Entry; public class BleedTimerTask extends BukkitRunnable { - private final static int MAX_BLEED_TICKS = 10; + private final static int MAX_BLEED_TICKS = 100; //The cap has been raised :) private static Map bleedList = new HashMap(); private static Map bleedDamage = new HashMap(); + private static Map attackerMap = new HashMap<>(); @Override public void run() { @@ -73,7 +74,8 @@ public class BleedTimerTask extends BukkitRunnable { bleedIterator.remove(); } - CombatUtils.dealNoInvulnerabilityTickDamage(entity, damage, null); + + CombatUtils.dealNoInvulnerabilityTickDamage(entity, damage, attackerMap.get(entity)); ParticleEffectUtils.playBleedEffect(entity); } } @@ -86,9 +88,10 @@ public class BleedTimerTask extends BukkitRunnable { */ public static void bleedOut(LivingEntity entity) { if (bleedList.containsKey(entity)) { - CombatUtils.dealNoInvulnerabilityTickDamage(entity, bleedList.get(entity) * 2, null); + CombatUtils.dealNoInvulnerabilityTickDamage(entity, bleedList.get(entity) * 2, attackerMap.get(entity)); bleedList.remove(entity); bleedDamage.remove(entity); + attackerMap.remove(entity); } } @@ -101,6 +104,7 @@ public class BleedTimerTask extends BukkitRunnable { if (bleedList.containsKey(entity)) { bleedList.remove(entity); bleedDamage.remove(entity); + attackerMap.remove(entity); } } @@ -110,20 +114,21 @@ public class BleedTimerTask extends BukkitRunnable { * @param entity LivingEntity to add * @param ticks Number of bleeding ticks */ - public static void add(LivingEntity entity, int ticks, int bleedRank) { + public static void add(LivingEntity entity, LivingEntity attacker, int ticks, int bleedRank) { int newTicks = ticks; if (bleedList.containsKey(entity)) { newTicks += bleedList.get(entity); - bleedList.put(entity, Math.min(newTicks, MAX_BLEED_TICKS)); + bleedList.put(entity, Math.min(MAX_BLEED_TICKS, newTicks)); //Override the current bleed rank only if this one is higher if(bleedDamage.get(entity) < bleedRank) bleedDamage.put(entity, bleedRank); } else { - bleedList.put(entity, Math.min(newTicks, MAX_BLEED_TICKS)); + bleedList.put(entity, Math.min(MAX_BLEED_TICKS, newTicks)); bleedDamage.put(entity, bleedRank); + attackerMap.put(entity, attacker); } } diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java index 0ff20ac61..7f822c8d3 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -61,12 +61,7 @@ public class SwordsManager extends SkillManager { } } - if (getSkillLevel() >= AdvancedConfig.getInstance().getMaxBonusLevel(SubSkillType.SWORDS_RUPTURE)) { - BleedTimerTask.add(target, getBleedTicks(), RankUtils.getRank(getPlayer(), SubSkillType.SWORDS_RUPTURE)); - } - else { - BleedTimerTask.add(target, getBleedTicks(), RankUtils.getRank(getPlayer(), SubSkillType.SWORDS_RUPTURE)); - } + BleedTimerTask.add(target, getRuptureBleedTicks(), RankUtils.getRank(getPlayer(), SubSkillType.SWORDS_RUPTURE)); if (mcMMOPlayer.useChatNotifications()) { NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.SUBSKILL_MESSAGE, "Swords.Combat.Bleeding"); @@ -74,7 +69,7 @@ public class SwordsManager extends SkillManager { } } - public int getBleedTicks() + public int getRuptureBleedTicks() { int bleedTicks = 2 * RankUtils.getRank(getPlayer(), SubSkillType.SWORDS_RUPTURE);