From 6d16bebe1ac1813da8a717c7a658d10f116879f1 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 21 Apr 2021 22:06:59 +0000 Subject: [PATCH] Removal of Creature effect and skill getter conversions to arrays. --- .../game/data/scripts/ai/bosses/Baium.java | 10 +- .../game/data/scripts/ai/bosses/Valakas.java | 24 +- .../game/data/scripts/ai/bosses/Zaken.java | 28 +- .../l2jmobius/gameserver/ai/AttackableAI.java | 12 +- .../gameserver/ai/ControllableMobAI.java | 11 +- .../gameserver/ai/FortSiegeGuardAI.java | 11 +- .../l2jmobius/gameserver/ai/SiegeGuardAI.java | 11 +- .../gameserver/data/sql/SkillTreeTable.java | 4 +- .../admincommandhandlers/AdminBuffs.java | 4 +- .../admincommandhandlers/AdminSkill.java | 13 +- .../handler/itemhandlers/Potions.java | 12 +- .../handler/itemhandlers/Remedy.java | 35 +- .../handler/skillhandlers/Continuous.java | 12 +- .../handler/skillhandlers/Disablers.java | 38 +- .../gameserver/model/actor/Creature.java | 359 +++++------------- .../model/actor/instance/CubicInstance.java | 12 +- .../model/actor/instance/PlayerInstance.java | 4 +- .../model/skills/effects/EffectCancel.java | 13 +- .../skills/effects/EffectSignetNoise.java | 11 +- .../model/skills/handlers/SkillSeed.java | 3 +- .../network/clientpackets/EnterWorld.java | 22 +- .../serverpackets/GMViewSkillInfo.java | 11 +- .../game/data/scripts/ai/bosses/Baium.java | 10 +- .../game/data/scripts/ai/bosses/Valakas.java | 24 +- .../game/data/scripts/ai/bosses/Zaken.java | 28 +- .../l2jmobius/gameserver/ai/AttackableAI.java | 12 +- .../gameserver/ai/ControllableMobAI.java | 11 +- .../gameserver/ai/FortSiegeGuardAI.java | 11 +- .../l2jmobius/gameserver/ai/SiegeGuardAI.java | 11 +- .../gameserver/data/sql/SkillTreeTable.java | 4 +- .../admincommandhandlers/AdminBuffs.java | 4 +- .../admincommandhandlers/AdminSkill.java | 13 +- .../handler/itemhandlers/Potions.java | 12 +- .../handler/itemhandlers/Remedy.java | 35 +- .../handler/skillhandlers/Continuous.java | 12 +- .../handler/skillhandlers/Disablers.java | 38 +- .../gameserver/model/Augmentation.java | 3 +- .../gameserver/model/actor/Creature.java | 347 +++++------------ .../model/actor/instance/CubicInstance.java | 12 +- .../model/actor/instance/PlayerInstance.java | 4 +- .../model/skills/effects/EffectCancel.java | 13 +- .../skills/effects/EffectSignetNoise.java | 11 +- .../model/skills/handlers/SkillSeed.java | 3 +- .../network/clientpackets/EnterWorld.java | 22 +- .../serverpackets/GMViewSkillInfo.java | 11 +- 45 files changed, 425 insertions(+), 886 deletions(-) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java index 5ed5de93c4..62e8bd3131 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java @@ -385,15 +385,11 @@ public class Baium extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Valakas.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Valakas.java index e62270f34f..d063b1bf70 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Valakas.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Valakas.java @@ -158,17 +158,13 @@ public class Valakas extends Quest { int level = 0; int sk4691 = 0; - final Effect[] effects = npc.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : npc.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4629) { - if (e.getSkill().getId() == 4629) - { - sk4691 = 1; - level = e.getSkill().getLevel(); - break; - } + sk4691 = 1; + level = e.getSkill().getLevel(); + break; } } @@ -376,15 +372,11 @@ public class Valakas extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Zaken.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Zaken.java index 49dc3bd0ae..30f2e15dea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Zaken.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Zaken.java @@ -212,19 +212,15 @@ public class Zaken extends Quest } int sk4223 = 0; int sk4227 = 0; - final Effect[] effects = npc.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : npc.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4227) { - if (e.getSkill().getId() == 4227) - { - sk4227 = 1; - } - if (e.getSkill().getId() == 4223) - { - sk4223 = 1; - } + sk4227 = 1; + } + if (e.getSkill().getId() == 4223) + { + sk4223 = 1; } } if (getTimeHour() < 5) @@ -754,15 +750,11 @@ public class Zaken extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 09134489c7..ed74b8caae 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -20,6 +20,8 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; +import java.util.Collection; + import org.l2jmobius.Config; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; @@ -749,7 +751,7 @@ public class AttackableAI extends CreatureAI } // Get all information needed to chose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; @@ -902,10 +904,8 @@ public class AttackableAI extends CreatureAI if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -963,10 +963,8 @@ public class AttackableAI extends CreatureAI if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java index b6007fa92d..161a6ea3b5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java @@ -20,6 +20,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.l2jmobius.commons.util.Rnd; @@ -188,14 +189,13 @@ public class ControllableMobAI extends AttackableAI final ControllableMobAI ctrlAi = (ControllableMobAI) theTarget.getAI(); ctrlAi.forceAttack(_actor); - final Skill[] skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(target); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + target.getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) { // check distant skills - for (Skill sk : skills) + for (Skill sk : _actor.getAllSkills()) { final int castRange = sk.getCastRange(); if (((castRange * castRange) >= dist2) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() > _actor.getStat().getMpConsume(sk))) @@ -225,14 +225,13 @@ public class ControllableMobAI extends AttackableAI } _actor.setTarget(getForcedTarget()); - final Skill[] skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(getForcedTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getForcedTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) { // check distant skills - for (Skill sk : skills) + for (Skill sk : _actor.getAllSkills()) { final int castRange = sk.getCastRange(); if (((castRange * castRange) >= dist2) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() > _actor.getStat().getMpConsume(sk))) @@ -292,7 +291,7 @@ public class ControllableMobAI extends AttackableAI } _actor.setTarget(getAttackTarget()); - final Skill[] skills = _actor.getAllSkills(); + final Collection skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(getAttackTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius(); int maxRange = range; @@ -335,7 +334,7 @@ public class ControllableMobAI extends AttackableAI setAttackTarget(hated); } - if (!_actor.isMuted() && (skills.length > 0) && (Rnd.get(5) == 3)) + if (!_actor.isMuted() && (!skills.isEmpty()) && (Rnd.get(5) == 3)) { for (Skill sk : skills) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java index f11327b611..e2a27fd158 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.Future; import java.util.logging.Logger; @@ -585,7 +586,7 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable private void attackPrepare() { // Get all information needed to choose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; FortSiegeGuardInstance sGuard; @@ -650,10 +651,8 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -788,10 +787,8 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java index 4eb144cba3..a29f935d13 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java @@ -20,6 +20,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; +import java.util.Collection; import java.util.concurrent.Future; import org.l2jmobius.Config; @@ -307,7 +308,7 @@ public class SiegeGuardAI extends CreatureAI implements Runnable private void attackPrepare() { // Get all information needed to chose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; final SiegeGuardInstance sGuard = (SiegeGuardInstance) _actor; @@ -368,10 +369,8 @@ public class SiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -485,10 +484,8 @@ public class SiegeGuardAI extends CreatureAI implements Runnable if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java index 893cb58da7..d48c5aa1a9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java @@ -342,7 +342,7 @@ public class SkillTreeTable skills.addAll(_expandDwarfCraftSkillTrees); } - final Skill[] oldSkills = player.getAllSkills(); + final Skill[] oldSkills = player.getAllSkills().toArray(new Skill[0]); for (SkillLearn temp : skills) { if (temp.getMinLevel() <= player.getLevel()) @@ -378,7 +378,7 @@ public class SkillTreeTable final List skills = new ArrayList<>(); skills.addAll(_enchantSkillTrees); - final Skill[] oldSkills = player.getAllSkills(); + final Skill[] oldSkills = player.getAllSkills().toArray(new Skill[0]); if (player.getLevel() < 76) { return result.toArray(new EnchantSkillLearn[result.size()]); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java index b97640e2c1..05f00f991b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java @@ -178,7 +178,7 @@ public class AdminBuffs implements IAdminCommandHandler html.append(""); html.append(""); - final Effect[] effects = player.getAllEffects(); + final Effect[] effects = player.getAllEffects().toArray(new Effect[0]); for (Effect e : effects) { if (e != null) @@ -202,7 +202,7 @@ public class AdminBuffs implements IAdminCommandHandler final PlayerInstance player = World.getInstance().getPlayer(playername); if ((player != null) && (SkillId > 0)) { - final Effect[] effects = player.getAllEffects(); + final Effect[] effects = player.getAllEffects().toArray(new Effect[0]); for (Effect e : effects) { if ((e != null) && (e.getSkill().getId() == SkillId)) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java index 5e2a8b34ae..2ca015891a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java @@ -247,7 +247,7 @@ public class AdminSkill implements IAdminCommandHandler return; } - final Skill[] skills = player.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); final int maxSkillsPerPage = 10; int maxPages = skills.length / maxSkillsPerPage; if (skills.length > (maxSkillsPerPage * maxPages)) @@ -353,8 +353,8 @@ public class AdminSkill implements IAdminCommandHandler } else { - final Skill[] skills = player.getAllSkills(); - adminSkills = activeChar.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); + adminSkills = activeChar.getAllSkills().toArray(new Skill[0]); for (Skill adminSkill : adminSkills) { activeChar.removeSkill(adminSkill); @@ -392,15 +392,16 @@ public class AdminSkill implements IAdminCommandHandler } else { - final Skill[] skills = player.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); for (Skill skill : skills) { player.removeSkill(skill); } - for (int i = 0; i < activeChar.getAllSkills().length; i++) + final Skill[] skills2 = activeChar.getAllSkills().toArray(new Skill[0]); + for (Skill skill : skills2) { - player.addSkill(activeChar.getAllSkills()[i], true); + player.addSkill(skill, true); } for (Skill skill : skills) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java index f15e339126..f226c9fa03 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java @@ -740,19 +740,13 @@ public class Potions implements IItemHandler private boolean isEffectReplaceable(Playable activeChar, Enum effectType, int itemId) { - final Effect[] effects = activeChar.getAllEffects(); - if (effects == null) + for (Effect effect : activeChar.getAllEffects()) { - return true; - } - - for (Effect e : effects) - { - if ((e.getEffectType() == effectType) && e.getSkill().isPotion()) + if ((effect.getEffectType() == effectType) && effect.getSkill().isPotion()) { // One can reuse pots after 2/3 of their duration is over. // It would be faster to check if its > 10 but that would screw custom pot durations... - if (e.getTaskTime() > ((e.getSkill().getBuffDuration() * 67) / 100000)) + if (effect.getTaskTime() > ((effect.getSkill().getBuffDuration() * 67) / 100000)) { return true; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java index da7c67c385..e864e10f3d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java @@ -63,12 +63,11 @@ public class Remedy implements IItemHandler final int itemId = item.getItemId(); if (itemId == 1831) // antidote { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.POISON) && (e.getSkill().getLevel() <= 3)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.POISON) && (effect.getSkill().getLevel() <= 3)) { - e.exit(true); + effect.exit(true); break; } } @@ -79,12 +78,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1832) // advanced antidote { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.POISON) && (e.getSkill().getLevel() <= 7)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.POISON) && (effect.getSkill().getLevel() <= 7)) { - e.exit(true); + effect.exit(true); break; } } @@ -95,12 +93,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1833) // bandage { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.BLEED) && (e.getSkill().getLevel() <= 3)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.BLEED) && (effect.getSkill().getLevel() <= 3)) { - e.exit(true); + effect.exit(true); break; } } @@ -111,12 +108,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1834) // emergency dressing { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.BLEED) && (e.getSkill().getLevel() <= 7)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.BLEED) && (effect.getSkill().getLevel() <= 7)) { - e.exit(true); + effect.exit(true); break; } } @@ -127,12 +123,11 @@ public class Remedy implements IItemHandler } else if (itemId == 3889) // potion of recovery { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if (e.getSkill().getId() == 4082) + if (effect.getSkill().getId() == 4082) { - e.exit(true); + effect.exit(true); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java index bef4df152e..9e37d30c21 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java @@ -192,16 +192,12 @@ public class Continuous implements ISkillHandler { boolean stopped = false; - final Effect[] effects = target.getAllEffects(); - if (effects != null) + for (Effect e : target.getAllEffects()) { - for (Effect e : effects) + if ((e != null) && (e.getSkill().getId() == skill.getId())) { - if ((e != null) && (e.getSkill().getId() == skill.getId())) - { - e.exit(false); - stopped = true; - } + e.exit(false); + stopped = true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java index 75b773625f..2b5d6af36c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.handler.skillhandlers; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Logger; @@ -201,12 +202,11 @@ public class Disablers implements ISkillHandler // do nothing if not on mob if (Formulas.getInstance().calcSkillSuccess(creature, target, skill, ss, sps, bss)) { - final Effect[] effects = target.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target.getAllEffects()) { - if (e.getSkill().getSkillType() == type) + if (effect.getSkill().getSkillType() == type) { - e.exit(false); + effect.exit(false); } } skill.applyEffects(creature, target, ss, sps, bss); @@ -364,12 +364,11 @@ public class Disablers implements ISkillHandler { continue; } - final Effect[] effects = target1.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target1.getAllEffects()) { - if (e.getStackType().equals("mAtkSpeedUp") || e.getStackType().equals("mAtk") || (e.getSkill().getId() == 1059) || (e.getSkill().getId() == 1085) || (e.getSkill().getId() == 4356) || (e.getSkill().getId() == 4355)) + if (effect.getStackType().equals("mAtkSpeedUp") || effect.getStackType().equals("mAtk") || (effect.getSkill().getId() == 1059) || (effect.getSkill().getId() == 1085) || (effect.getSkill().getId() == 4356) || (effect.getSkill().getId() == 4355)) { - e.exit(); + effect.exit(); } } } @@ -388,12 +387,11 @@ public class Disablers implements ISkillHandler { continue; } - final Effect[] effects = target1.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target1.getAllEffects()) { - if (e.getStackType().equals("SpeedUp") || e.getStackType().equals("pAtkSpeedUp") || (e.getSkill().getId() == 1204) || (e.getSkill().getId() == 1086) || (e.getSkill().getId() == 4342) || (e.getSkill().getId() == 4357)) + if (effect.getStackType().equals("SpeedUp") || effect.getStackType().equals("pAtkSpeedUp") || (effect.getSkill().getId() == 1204) || (effect.getSkill().getId() == 1086) || (effect.getSkill().getId() == 4342) || (effect.getSkill().getId() == 4357)) { - e.exit(); + effect.exit(); } } } @@ -445,7 +443,7 @@ public class Disablers implements ISkillHandler landrate = (int) target.calcStat(Stat.CANCEL_VULN, landrate, target, null); if (Rnd.get(100) < landrate) { - final Effect[] effects = target.getAllEffects(); + final Collection effects = target.getAllEffects(); int maxfive = 5; for (Effect e : effects) { @@ -523,15 +521,14 @@ public class Disablers implements ISkillHandler landrate = (int) target.calcStat(Stat.CANCEL_VULN, landrate, target, null); if (Rnd.get(100) < landrate) { - final Effect[] effects = target.getAllEffects(); int maxdisp = (int) skill.getNegatePower(); if (maxdisp == 0) { maxdisp = Config.BUFFS_MAX_AMOUNT + Config.DEBUFFS_MAX_AMOUNT + 6; } - for (Effect e : effects) + for (Effect effect : target.getAllEffects()) { - switch (e.getEffectType()) + switch (effect.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: @@ -540,10 +537,10 @@ public class Disablers implements ISkillHandler } } - if ((e.getSkill().getId() != 4082) && (e.getSkill().getId() != 4215) && (e.getSkill().getId() != 5182) && (e.getSkill().getId() != 4515) && (e.getSkill().getId() != 110) && (e.getSkill().getId() != 111) && (e.getSkill().getId() != 1323) && (e.getSkill().getId() != 1325) && (e.getSkill().getSkillType() == SkillType.BUFF)) + if ((effect.getSkill().getId() != 4082) && (effect.getSkill().getId() != 4215) && (effect.getSkill().getId() != 5182) && (effect.getSkill().getId() != 4515) && (effect.getSkill().getId() != 110) && (effect.getSkill().getId() != 111) && (effect.getSkill().getId() != 1323) && (effect.getSkill().getId() != 1325) && (effect.getSkill().getSkillType() == SkillType.BUFF)) { int rate = 100; - final int level = e.getLevel(); + final int level = effect.getLevel(); if (level > 0) { rate = 150 / (1 + level); @@ -560,7 +557,7 @@ public class Disablers implements ISkillHandler if (Rnd.get(100) < rate) { - e.exit(true); + effect.exit(true); maxdisp--; if (maxdisp == 0) { @@ -764,8 +761,7 @@ public class Disablers implements ISkillHandler private void negateEffect(Creature target, SkillType type, double power, int skillId) { - final Effect[] effects = target.getAllEffects(); - for (Effect e : effects) + for (Effect e : target.getAllEffects()) { if (((e.getSkill() != null) && (e.getSkill().getId() == 4215)) || (e.getSkill().getId() == 4515)) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java index e3d1df5bbb..7b40521496 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -2968,9 +2968,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder private int _AbnormalEffects; /** - * FastTable containing all active skills effects in progress of a Creature. + * Set containing all active skills effects in progress of a Creature. */ - private final List _effects = new ArrayList<>(); + private final Set _effects = ConcurrentHashMap.newKeySet(); /** The table containing the List of all stacked effect in progress for each Stack group Identifier. */ protected Map> _stackedEffects = new HashMap<>(); @@ -3026,20 +3026,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return; } - final Effect[] effects = getAllEffects(); - // Make sure there's no same effect previously - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if ((effect.getSkill().getId() == newEffect.getSkill().getId()) && (effect.getEffectType() == newEffect.getEffectType()) && (effect.getStackType().equals(newEffect.getStackType()))) { if (((newEffect.getSkill().getSkillType() == SkillType.BUFF) || (newEffect.getEffectType() == Effect.EffectType.BUFF) || (newEffect.getEffectType() == Effect.EffectType.HEAL_OVER_TIME)) && (newEffect.getStackOrder() >= effect.getStackOrder())) @@ -3073,41 +3062,31 @@ public abstract class Creature extends WorldObject implements ISkillsHolder removeFirstDeBuff(tempskill.getId()); } - synchronized (_effects) - { - // Add the Effect to all effect in progress on the Creature - if (!newEffect.getSkill().isToggle()) - { - int pos = 0; - for (int i = 0; i < _effects.size(); i++) - { - if (_effects.get(i) == null) - { - _effects.remove(i); - i--; - continue; - } - - if (_effects.get(i) != null) - { - final int skillId = _effects.get(i).getSkill().getId(); - if (!_effects.get(i).getSkill().isToggle() && ((skillId <= 4360) || (skillId >= 4367))) - { - pos++; - } - } - else - { - break; - } - } - _effects.add(pos, newEffect); - } - else - { - _effects.add(newEffect); - } - } + // Add the Effect to all effect in progress on the Creature + // if (!newEffect.getSkill().isToggle()) + // { + // int pos = 0; + // for (int i = 0; i < _effects.size(); i++) + // { + // if (_effects.get(i) != null) + // { + // final int skillId = _effects.get(i).getSkill().getId(); + // if (!_effects.get(i).getSkill().isToggle() && ((skillId <= 4360) || (skillId >= 4367))) + // { + // pos++; + // } + // } + // else + // { + // break; + // } + // } + // _effects.add(pos, newEffect); + // } + // else + // { + _effects.add(newEffect); + // } // Check if a stack group is defined for this effect if (newEffect.getStackType().equals("none")) @@ -3197,11 +3176,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder // skill.exit() could be used, if the users don't wish to see "effect removed" always when a timer goes off, even if the buff isn't active any more (has been replaced). but then check e.g. npc hold and raid petrify. if (Config.EFFECT_CANCELING && !newStackedEffect.isHerbEffect() && (stackQueue.size() > 1)) { - synchronized (_effects) - { - _effects.remove(stackQueue.get(1)); - } - + _effects.remove(stackQueue.get(1)); stackQueue.remove(1); } @@ -3284,11 +3259,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } - synchronized (_effects) - { - // Remove the active skill L2effect from _effects of the Creature - _effects.remove(effect); - } + // Remove the active skill L2effect from _effects of the Creature + _effects.remove(effect); // Update active skills in progress (In Use and Not In Use because stacked) icones on client updateEffectIcons(); @@ -3458,20 +3430,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopAllEffects() { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect != null) - { - effect.exit(true); - } - else - { - synchronized (_effects) - { - _effects.remove(effect); - } - } + effect.exit(true); } if (this instanceof PlayerInstance) @@ -3543,15 +3504,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopSkillEffects(int skillId) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if ((effect == null) || (effect.getSkill() == null)) + if (effect.getSkill() == null) { - synchronized (_effects) - { - _effects.remove(effect); - } + _effects.remove(effect); continue; } @@ -3577,18 +3534,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopEffects(Effect.EffectType type) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getEffectType() == type) { effect.exit(true); @@ -3607,15 +3554,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopSkillEffects(SkillType skillType, double power) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if ((effect == null) || (effect.getSkill() == null)) + if (effect.getSkill() == null) { - synchronized (_effects) - { - _effects.remove(effect); - } + _effects.remove(effect); continue; } @@ -3897,44 +3840,40 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } // Go through all effects if any - synchronized (_effects) + for (Effect effect : _effects) { - for (int i = 0; i < _effects.size(); i++) + if (effect.getSkill() == null) { - if ((_effects.get(i) == null) || (_effects.get(i).getSkill() == null)) + _effects.remove(effect); + continue; + } + + // C4 + if (!effect.getShowIcon() && !effect.getSkill().isPotion()) + { + continue; + } + + if ((effect.getEffectType() == Effect.EffectType.CHARGE) && (player != null)) + { + // handled by EtcStatusUpdate + continue; + } + + if (effect.getInUse()) + { + if (mi != null) { - _effects.remove(i); - i--; - continue; + effect.addIcon(mi); } - - // C4 - if (!_effects.get(i).getShowIcon() && !_effects.get(i).getSkill().isPotion()) + // Like L2OFF toggle and healing potions must not be showed on party buff list + if ((ps != null) && !effect.getSkill().isToggle() && (effect.getSkill().getId() != 2031) && (effect.getSkill().getId() != 2037) && (effect.getSkill().getId() != 2032)) { - continue; + effect.addPartySpelledIcon(ps); } - - if ((_effects.get(i).getEffectType() == Effect.EffectType.CHARGE) && (player != null)) + if (os != null) { - // handled by EtcStatusUpdate - continue; - } - - if (_effects.get(i).getInUse()) - { - if (mi != null) - { - _effects.get(i).addIcon(mi); - } - // Like L2OFF toggle and healing potions must not be showed on party buff list - if ((ps != null) && !_effects.get(i).getSkill().isToggle() && (_effects.get(i).getSkill().getId() != 2031) && (_effects.get(i).getSkill().getId() != 2037) && (_effects.get(i).getSkill().getId() != 2032)) - { - _effects.get(i).addPartySpelledIcon(ps); - } - if (os != null) - { - _effects.get(i).addOlympiadSpelledIcon(os); - } + effect.addOlympiadSpelledIcon(os); } } } @@ -4026,12 +3965,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder * All active skills effects in progress on the Creature are identified in _effects. The Integer key of _effects is the Skill Identifier that has created the effect. * @return A table containing all active skills effect in progress on the Creature */ - public Effect[] getAllEffects() + public Collection getAllEffects() { - synchronized (_effects) - { - return _effects.toArray(new Effect[_effects.size()]); - } + return _effects; } /** @@ -4045,19 +3981,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(int index) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill().getId() == index) { if (effect.getInUse()) @@ -4082,19 +4008,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(SkillType type) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill().getSkillType() == type) { if (effect.getInUse()) @@ -4108,7 +4024,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } } - return effNotInUse; } @@ -4123,19 +4038,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(Skill skill) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill() == skill) { if (effect.getInUse()) @@ -4164,19 +4069,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(Effect.EffectType tp) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getEffectType() == tp) { if (effect.getInUse()) @@ -6837,9 +6732,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder * All skills own by a Creature are identified in _skills the Creature * @return the all skills */ - public Skill[] getAllSkills() + public Collection getAllSkills() { - return _skills.values().toArray(new Skill[_skills.values().size()]); + return _skills.values(); } /** @@ -6889,25 +6784,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public int getBuffCount() { - final Effect[] effects = getAllEffects(); int numBuffs = 0; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (((e.getSkill().getSkillType() == SkillType.BUFF) || (e.getSkill().getId() == 1416) || (e.getSkill().getSkillType() == SkillType.REFLECT) || (e.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (e.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((e.getSkill().getId() <= 4360) || (e.getSkill().getId() >= 4367))) // 7s + if (((effect.getSkill().getSkillType() == SkillType.BUFF) || (effect.getSkill().getId() == 1416) || (effect.getSkill().getSkillType() == SkillType.REFLECT) || (effect.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (effect.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((effect.getSkill().getId() <= 4360) || (effect.getSkill().getId() >= 4367))) // 7s { numBuffs++; } } - return numBuffs; } @@ -6917,26 +6801,15 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public int getDeBuffCount() { - final Effect[] effects = getAllEffects(); int numDeBuffs = 0; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - // Check for all debuff skills - if (e.getSkill().isDebuff()) + if (effect.getSkill().isDebuff()) { numDeBuffs++; } } - return numDeBuffs; } @@ -6955,34 +6828,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void removeFirstBuff(int preferSkill) { - final Effect[] effects = getAllEffects(); Effect removeMe = null; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (((e.getSkill().getSkillType() == SkillType.BUFF) || (e.getSkill().getSkillType() == SkillType.REFLECT) || (e.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (e.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((e.getSkill().getId() <= 4360) || (e.getSkill().getId() >= 4367))) + if (((effect.getSkill().getSkillType() == SkillType.BUFF) || (effect.getSkill().getSkillType() == SkillType.REFLECT) || (effect.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (effect.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((effect.getSkill().getId() <= 4360) || (effect.getSkill().getId() >= 4367))) { if (preferSkill == 0) { - removeMe = e; + removeMe = effect; break; } - else if (e.getSkill().getId() == preferSkill) + else if (effect.getSkill().getId() == preferSkill) { - removeMe = e; + removeMe = effect; break; } else if (removeMe == null) { - removeMe = e; + removeMe = effect; } } } @@ -6999,34 +6862,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void removeFirstDeBuff(int preferSkill) { - final Effect[] effects = getAllEffects(); Effect removeMe = null; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (e.getSkill().isDebuff()) + if (effect.getSkill().isDebuff()) { if (preferSkill == 0) { - removeMe = e; + removeMe = effect; break; } - else if (e.getSkill().getId() == preferSkill) + else if (effect.getSkill().getId() == preferSkill) { - removeMe = e; + removeMe = effect; break; } else if (removeMe == null) { - removeMe = e; + removeMe = effect; } } } @@ -7044,25 +6897,13 @@ public abstract class Creature extends WorldObject implements ISkillsHolder public int getDanceCount() { int danceCount = 0; - - final Effect[] effects = getAllEffects(); - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (e.getSkill().isDance() && e.getInUse()) + if (effect.getSkill().isDance() && effect.getInUse()) { danceCount++; } } - return danceCount; } @@ -7084,19 +6925,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return false; } - final Effect[] effects = getAllEffects(); - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if ((e.getStackType() != null) && e.getStackType().equals(stackType)) + if ((effect.getStackType() != null) && effect.getStackType().equals(stackType)) { return true; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 45528ca6a1..5a08018ef2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.model.actor.instance; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.Future; import java.util.logging.Logger; @@ -529,13 +530,12 @@ public class CubicInstance Skill skill = null; if ((_id >= SMART_CUBIC_EVATEMPLAR) && (_id <= SMART_CUBIC_SPECTRALMASTER)) { - final Effect[] effects = owner.getAllEffects(); - for (Effect e : effects) + for (Effect effect : owner.getAllEffects()) { - if ((e != null) && e.getSkill().isOffensive()) + if (effect.getSkill().isOffensive()) { useCubicCure = true; - e.exit(true); + effect.exit(true); } } } @@ -730,8 +730,8 @@ public class CubicInstance } case CANCEL: { - final Effect[] effects = target.getAllEffects(); - if ((effects == null) || (effects.length == 0)) + final Collection effects = target.getAllEffects(); + if (effects.isEmpty()) { break; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index cc10d2fd28..cc7eba502d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8661,7 +8661,7 @@ public class PlayerInstance extends Playable statement.close(); // Store all effect data along with calulated remaining reuse delays for matching skills. 'restore_type'= 0. - final Effect[] effects = getAllEffects(); + final Collection effects = getAllEffects(); statement = con.prepareStatement(ADD_SKILL_SAVE); int buffIndex = 0; final List storedSkills = new ArrayList<>(); @@ -14139,7 +14139,7 @@ public class PlayerInstance extends Playable private int getRandomFishLvl() { - final Effect[] effects = getAllEffects(); + final Collection effects = getAllEffects(); int skillLevel = getSkillLevel(1315); for (Effect e : effects) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java index 0d8bfb68ed..7537edbeb6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java @@ -44,15 +44,14 @@ final class EffectCancel extends Effect final int landrate = (int) getEffector().calcStat(Stat.CANCEL_VULN, 90, getEffected(), null); if (Rnd.get(100) < landrate) { - final Effect[] effects = getEffected().getAllEffects(); int maxdisp = (int) getSkill().getNegatePower(); if (maxdisp == 0) { maxdisp = 5; } - for (Effect e : effects) + for (Effect effect : getEffected().getAllEffects()) { - switch (e.getEffectType()) + switch (effect.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: @@ -61,13 +60,13 @@ final class EffectCancel extends Effect } } - if ((e.getSkill().getId() != 4082) && (e.getSkill().getId() != 4215) && (e.getSkill().getId() != 5182) && (e.getSkill().getId() != 4515) && (e.getSkill().getId() != 110) && (e.getSkill().getId() != 111) && (e.getSkill().getId() != 1323) && (e.getSkill().getId() != 1325) && (e.getSkill().getSkillType() == SkillType.BUFF)) + if ((effect.getSkill().getId() != 4082) && (effect.getSkill().getId() != 4215) && (effect.getSkill().getId() != 5182) && (effect.getSkill().getId() != 4515) && (effect.getSkill().getId() != 110) && (effect.getSkill().getId() != 111) && (effect.getSkill().getId() != 1323) && (effect.getSkill().getId() != 1325) && (effect.getSkill().getSkillType() == SkillType.BUFF)) { // TODO Fix cancel debuffs - if (e.getSkill().getSkillType() != SkillType.DEBUFF) + if (effect.getSkill().getSkillType() != SkillType.DEBUFF) { int rate = 100; - final int level = e.getLevel(); + final int level = effect.getLevel(); if (level > 0) { rate = 150 / (1 + level); @@ -84,7 +83,7 @@ final class EffectCancel extends Effect if (Rnd.get(100) < rate) { - e.exit(true); + effect.exit(true); maxdisp--; if (maxdisp == 0) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java index 0ca7fa4377..5e2efa0383 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java @@ -57,17 +57,12 @@ public class EffectSignetNoise extends Effect continue; } - final Effect[] effects = target.getAllEffects(); - if (effects != null) + for (Effect effect : target.getAllEffects()) { - for (Effect effect : effects) + if (effect.getSkill().isDance()) { - if (effect.getSkill().isDance()) - { - effect.exit(true); - } + effect.exit(true); } - // there doesn't seem to be a visible effect? } } return true; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java index 2ac5e2dedc..131a18c00d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java @@ -59,8 +59,7 @@ public class SkillSeed extends Skill oldEffect.increasePower(); } - final Effect[] effects = target.getAllEffects(); - for (Effect effect : effects) + for (Effect effect : target.getAllEffects()) { if (effect.getEffectType() == Effect.EffectType.SEED) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 479bd01996..8c6ab2a8af 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -191,21 +191,17 @@ public class EnterWorld implements IClientIncomingPacket player.restoreEffects(); } - final Effect[] effects = player.getAllEffects(); - if (effects != null) + for (Effect effect : player.getAllEffects()) { - for (Effect e : effects) + if (effect.getEffectType() == Effect.EffectType.HEAL_OVER_TIME) { - if (e.getEffectType() == Effect.EffectType.HEAL_OVER_TIME) - { - player.stopEffects(Effect.EffectType.HEAL_OVER_TIME); - player.removeEffect(e); - } - if (e.getEffectType() == Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME) - { - player.stopEffects(Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME); - player.removeEffect(e); - } + player.stopEffects(Effect.EffectType.HEAL_OVER_TIME); + player.removeEffect(effect); + } + if (effect.getEffectType() == Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME) + { + player.stopEffects(Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME); + player.removeEffect(effect); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java index 653904bf9d..28690530ad 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java @@ -16,6 +16,8 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -24,16 +26,12 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; public class GMViewSkillInfo implements IClientOutgoingPacket { private final PlayerInstance _player; - private Skill[] _skills; + private final Collection _skills; public GMViewSkillInfo(PlayerInstance player) { _player = player; _skills = _player.getAllSkills(); - if (_skills.length == 0) - { - _skills = new Skill[0]; - } } @Override @@ -41,8 +39,7 @@ public class GMViewSkillInfo implements IClientOutgoingPacket { OutgoingPackets.GM_VIEW_SKILL_INFO.writeId(packet); packet.writeS(_player.getName()); - packet.writeD(_skills.length); - + packet.writeD(_skills.size()); for (Skill skill : _skills) { packet.writeD(skill.isPassive() ? 1 : 0); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java index 5ed5de93c4..62e8bd3131 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java @@ -385,15 +385,11 @@ public class Baium extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java index e62270f34f..d063b1bf70 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java @@ -158,17 +158,13 @@ public class Valakas extends Quest { int level = 0; int sk4691 = 0; - final Effect[] effects = npc.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : npc.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4629) { - if (e.getSkill().getId() == 4629) - { - sk4691 = 1; - level = e.getSkill().getLevel(); - break; - } + sk4691 = 1; + level = e.getSkill().getLevel(); + break; } } @@ -376,15 +372,11 @@ public class Valakas extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java index 49dc3bd0ae..30f2e15dea 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java @@ -212,19 +212,15 @@ public class Zaken extends Quest } int sk4223 = 0; int sk4227 = 0; - final Effect[] effects = npc.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : npc.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4227) { - if (e.getSkill().getId() == 4227) - { - sk4227 = 1; - } - if (e.getSkill().getId() == 4223) - { - sk4223 = 1; - } + sk4227 = 1; + } + if (e.getSkill().getId() == 4223) + { + sk4223 = 1; } } if (getTimeHour() < 5) @@ -754,15 +750,11 @@ public class Zaken extends Quest if (attacker.getMountType() == 1) { int sk4258 = 0; - final Effect[] effects = attacker.getAllEffects(); - if ((effects != null) && (effects.length != 0)) + for (Effect e : attacker.getAllEffects()) { - for (Effect e : effects) + if (e.getSkill().getId() == 4258) { - if (e.getSkill().getId() == 4258) - { - sk4258 = 1; - } + sk4258 = 1; } } if (sk4258 == 0) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 09134489c7..ed74b8caae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -20,6 +20,8 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; +import java.util.Collection; + import org.l2jmobius.Config; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; @@ -749,7 +751,7 @@ public class AttackableAI extends CreatureAI } // Get all information needed to chose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; @@ -902,10 +904,8 @@ public class AttackableAI extends CreatureAI if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -963,10 +963,8 @@ public class AttackableAI extends CreatureAI if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java index b6007fa92d..161a6ea3b5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java @@ -20,6 +20,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.l2jmobius.commons.util.Rnd; @@ -188,14 +189,13 @@ public class ControllableMobAI extends AttackableAI final ControllableMobAI ctrlAi = (ControllableMobAI) theTarget.getAI(); ctrlAi.forceAttack(_actor); - final Skill[] skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(target); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + target.getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) { // check distant skills - for (Skill sk : skills) + for (Skill sk : _actor.getAllSkills()) { final int castRange = sk.getCastRange(); if (((castRange * castRange) >= dist2) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() > _actor.getStat().getMpConsume(sk))) @@ -225,14 +225,13 @@ public class ControllableMobAI extends AttackableAI } _actor.setTarget(getForcedTarget()); - final Skill[] skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(getForcedTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getForcedTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) { // check distant skills - for (Skill sk : skills) + for (Skill sk : _actor.getAllSkills()) { final int castRange = sk.getCastRange(); if (((castRange * castRange) >= dist2) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() > _actor.getStat().getMpConsume(sk))) @@ -292,7 +291,7 @@ public class ControllableMobAI extends AttackableAI } _actor.setTarget(getAttackTarget()); - final Skill[] skills = _actor.getAllSkills(); + final Collection skills = _actor.getAllSkills(); final double dist2 = _actor.calculateDistanceSq2D(getAttackTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius(); int maxRange = range; @@ -335,7 +334,7 @@ public class ControllableMobAI extends AttackableAI setAttackTarget(hated); } - if (!_actor.isMuted() && (skills.length > 0) && (Rnd.get(5) == 3)) + if (!_actor.isMuted() && (!skills.isEmpty()) && (Rnd.get(5) == 3)) { for (Skill sk : skills) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java index f11327b611..e2a27fd158 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java @@ -21,6 +21,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.Future; import java.util.logging.Logger; @@ -585,7 +586,7 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable private void attackPrepare() { // Get all information needed to choose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; FortSiegeGuardInstance sGuard; @@ -650,10 +651,8 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -788,10 +787,8 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java index 4eb144cba3..a29f935d13 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java @@ -20,6 +20,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE; +import java.util.Collection; import java.util.concurrent.Future; import org.l2jmobius.Config; @@ -307,7 +308,7 @@ public class SiegeGuardAI extends CreatureAI implements Runnable private void attackPrepare() { // Get all information needed to chose between physical or magical attack - Skill[] skills = null; + Collection skills = null; double dist2 = 0; int range = 0; final SiegeGuardInstance sGuard = (SiegeGuardInstance) _actor; @@ -368,10 +369,8 @@ public class SiegeGuardAI extends CreatureAI implements Runnable } if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; @@ -485,10 +484,8 @@ public class SiegeGuardAI extends CreatureAI implements Runnable if (sk.getSkillType() == Skill.SkillType.BUFF) { - final Effect[] effects = _actor.getAllEffects(); - for (int i = 0; (effects != null) && (i < effects.length); i++) + for (Effect effect : _actor.getAllEffects()) { - final Effect effect = effects[i]; if (effect.getSkill() == sk) { useSkillSelf = false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java index 893cb58da7..d48c5aa1a9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/sql/SkillTreeTable.java @@ -342,7 +342,7 @@ public class SkillTreeTable skills.addAll(_expandDwarfCraftSkillTrees); } - final Skill[] oldSkills = player.getAllSkills(); + final Skill[] oldSkills = player.getAllSkills().toArray(new Skill[0]); for (SkillLearn temp : skills) { if (temp.getMinLevel() <= player.getLevel()) @@ -378,7 +378,7 @@ public class SkillTreeTable final List skills = new ArrayList<>(); skills.addAll(_enchantSkillTrees); - final Skill[] oldSkills = player.getAllSkills(); + final Skill[] oldSkills = player.getAllSkills().toArray(new Skill[0]); if (player.getLevel() < 76) { return result.toArray(new EnchantSkillLearn[result.size()]); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java index b97640e2c1..05f00f991b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminBuffs.java @@ -178,7 +178,7 @@ public class AdminBuffs implements IAdminCommandHandler html.append("
SkillAction
"); html.append(""); - final Effect[] effects = player.getAllEffects(); + final Effect[] effects = player.getAllEffects().toArray(new Effect[0]); for (Effect e : effects) { if (e != null) @@ -202,7 +202,7 @@ public class AdminBuffs implements IAdminCommandHandler final PlayerInstance player = World.getInstance().getPlayer(playername); if ((player != null) && (SkillId > 0)) { - final Effect[] effects = player.getAllEffects(); + final Effect[] effects = player.getAllEffects().toArray(new Effect[0]); for (Effect e : effects) { if ((e != null) && (e.getSkill().getId() == SkillId)) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java index 5e2a8b34ae..2ca015891a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminSkill.java @@ -247,7 +247,7 @@ public class AdminSkill implements IAdminCommandHandler return; } - final Skill[] skills = player.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); final int maxSkillsPerPage = 10; int maxPages = skills.length / maxSkillsPerPage; if (skills.length > (maxSkillsPerPage * maxPages)) @@ -353,8 +353,8 @@ public class AdminSkill implements IAdminCommandHandler } else { - final Skill[] skills = player.getAllSkills(); - adminSkills = activeChar.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); + adminSkills = activeChar.getAllSkills().toArray(new Skill[0]); for (Skill adminSkill : adminSkills) { activeChar.removeSkill(adminSkill); @@ -392,15 +392,16 @@ public class AdminSkill implements IAdminCommandHandler } else { - final Skill[] skills = player.getAllSkills(); + final Skill[] skills = player.getAllSkills().toArray(new Skill[0]); for (Skill skill : skills) { player.removeSkill(skill); } - for (int i = 0; i < activeChar.getAllSkills().length; i++) + final Skill[] skills2 = activeChar.getAllSkills().toArray(new Skill[0]); + for (Skill skill : skills2) { - player.addSkill(activeChar.getAllSkills()[i], true); + player.addSkill(skill, true); } for (Skill skill : skills) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java index 1163cfe264..5589c5d08e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Potions.java @@ -740,19 +740,13 @@ public class Potions implements IItemHandler private boolean isEffectReplaceable(Playable activeChar, Enum effectType, int itemId) { - final Effect[] effects = activeChar.getAllEffects(); - if (effects == null) + for (Effect effect : activeChar.getAllEffects()) { - return true; - } - - for (Effect e : effects) - { - if ((e.getEffectType() == effectType) && e.getSkill().isPotion()) + if ((effect.getEffectType() == effectType) && effect.getSkill().isPotion()) { // One can reuse pots after 2/3 of their duration is over. // It would be faster to check if its > 10 but that would screw custom pot durations... - if (e.getTaskTime() > ((e.getSkill().getBuffDuration() * 67) / 100000)) + if (effect.getTaskTime() > ((effect.getSkill().getBuffDuration() * 67) / 100000)) { return true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java index da7c67c385..e864e10f3d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Remedy.java @@ -63,12 +63,11 @@ public class Remedy implements IItemHandler final int itemId = item.getItemId(); if (itemId == 1831) // antidote { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.POISON) && (e.getSkill().getLevel() <= 3)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.POISON) && (effect.getSkill().getLevel() <= 3)) { - e.exit(true); + effect.exit(true); break; } } @@ -79,12 +78,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1832) // advanced antidote { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.POISON) && (e.getSkill().getLevel() <= 7)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.POISON) && (effect.getSkill().getLevel() <= 7)) { - e.exit(true); + effect.exit(true); break; } } @@ -95,12 +93,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1833) // bandage { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.BLEED) && (e.getSkill().getLevel() <= 3)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.BLEED) && (effect.getSkill().getLevel() <= 3)) { - e.exit(true); + effect.exit(true); break; } } @@ -111,12 +108,11 @@ public class Remedy implements IItemHandler } else if (itemId == 1834) // emergency dressing { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if ((e.getSkill().getSkillType() == Skill.SkillType.BLEED) && (e.getSkill().getLevel() <= 7)) + if ((effect.getSkill().getSkillType() == Skill.SkillType.BLEED) && (effect.getSkill().getLevel() <= 7)) { - e.exit(true); + effect.exit(true); break; } } @@ -127,12 +123,11 @@ public class Remedy implements IItemHandler } else if (itemId == 3889) // potion of recovery { - final Effect[] effects = player.getAllEffects(); - for (Effect e : effects) + for (Effect effect : player.getAllEffects()) { - if (e.getSkill().getId() == 4082) + if (effect.getSkill().getId() == 4082) { - e.exit(true); + effect.exit(true); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java index f16e276035..5a9d968a37 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Continuous.java @@ -206,16 +206,12 @@ public class Continuous implements ISkillHandler { boolean stopped = false; - final Effect[] effects = target.getAllEffects(); - if (effects != null) + for (Effect e : target.getAllEffects()) { - for (Effect e : effects) + if ((e != null) && (e.getSkill().getId() == skill.getId())) { - if ((e != null) && (e.getSkill().getId() == skill.getId())) - { - e.exit(false); - stopped = true; - } + e.exit(false); + stopped = true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java index 75b773625f..2b5d6af36c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Disablers.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.handler.skillhandlers; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Logger; @@ -201,12 +202,11 @@ public class Disablers implements ISkillHandler // do nothing if not on mob if (Formulas.getInstance().calcSkillSuccess(creature, target, skill, ss, sps, bss)) { - final Effect[] effects = target.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target.getAllEffects()) { - if (e.getSkill().getSkillType() == type) + if (effect.getSkill().getSkillType() == type) { - e.exit(false); + effect.exit(false); } } skill.applyEffects(creature, target, ss, sps, bss); @@ -364,12 +364,11 @@ public class Disablers implements ISkillHandler { continue; } - final Effect[] effects = target1.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target1.getAllEffects()) { - if (e.getStackType().equals("mAtkSpeedUp") || e.getStackType().equals("mAtk") || (e.getSkill().getId() == 1059) || (e.getSkill().getId() == 1085) || (e.getSkill().getId() == 4356) || (e.getSkill().getId() == 4355)) + if (effect.getStackType().equals("mAtkSpeedUp") || effect.getStackType().equals("mAtk") || (effect.getSkill().getId() == 1059) || (effect.getSkill().getId() == 1085) || (effect.getSkill().getId() == 4356) || (effect.getSkill().getId() == 4355)) { - e.exit(); + effect.exit(); } } } @@ -388,12 +387,11 @@ public class Disablers implements ISkillHandler { continue; } - final Effect[] effects = target1.getAllEffects(); - for (Effect e : effects) + for (Effect effect : target1.getAllEffects()) { - if (e.getStackType().equals("SpeedUp") || e.getStackType().equals("pAtkSpeedUp") || (e.getSkill().getId() == 1204) || (e.getSkill().getId() == 1086) || (e.getSkill().getId() == 4342) || (e.getSkill().getId() == 4357)) + if (effect.getStackType().equals("SpeedUp") || effect.getStackType().equals("pAtkSpeedUp") || (effect.getSkill().getId() == 1204) || (effect.getSkill().getId() == 1086) || (effect.getSkill().getId() == 4342) || (effect.getSkill().getId() == 4357)) { - e.exit(); + effect.exit(); } } } @@ -445,7 +443,7 @@ public class Disablers implements ISkillHandler landrate = (int) target.calcStat(Stat.CANCEL_VULN, landrate, target, null); if (Rnd.get(100) < landrate) { - final Effect[] effects = target.getAllEffects(); + final Collection effects = target.getAllEffects(); int maxfive = 5; for (Effect e : effects) { @@ -523,15 +521,14 @@ public class Disablers implements ISkillHandler landrate = (int) target.calcStat(Stat.CANCEL_VULN, landrate, target, null); if (Rnd.get(100) < landrate) { - final Effect[] effects = target.getAllEffects(); int maxdisp = (int) skill.getNegatePower(); if (maxdisp == 0) { maxdisp = Config.BUFFS_MAX_AMOUNT + Config.DEBUFFS_MAX_AMOUNT + 6; } - for (Effect e : effects) + for (Effect effect : target.getAllEffects()) { - switch (e.getEffectType()) + switch (effect.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: @@ -540,10 +537,10 @@ public class Disablers implements ISkillHandler } } - if ((e.getSkill().getId() != 4082) && (e.getSkill().getId() != 4215) && (e.getSkill().getId() != 5182) && (e.getSkill().getId() != 4515) && (e.getSkill().getId() != 110) && (e.getSkill().getId() != 111) && (e.getSkill().getId() != 1323) && (e.getSkill().getId() != 1325) && (e.getSkill().getSkillType() == SkillType.BUFF)) + if ((effect.getSkill().getId() != 4082) && (effect.getSkill().getId() != 4215) && (effect.getSkill().getId() != 5182) && (effect.getSkill().getId() != 4515) && (effect.getSkill().getId() != 110) && (effect.getSkill().getId() != 111) && (effect.getSkill().getId() != 1323) && (effect.getSkill().getId() != 1325) && (effect.getSkill().getSkillType() == SkillType.BUFF)) { int rate = 100; - final int level = e.getLevel(); + final int level = effect.getLevel(); if (level > 0) { rate = 150 / (1 + level); @@ -560,7 +557,7 @@ public class Disablers implements ISkillHandler if (Rnd.get(100) < rate) { - e.exit(true); + effect.exit(true); maxdisp--; if (maxdisp == 0) { @@ -764,8 +761,7 @@ public class Disablers implements ISkillHandler private void negateEffect(Creature target, SkillType type, double power, int skillId) { - final Effect[] effects = target.getAllEffects(); - for (Effect e : effects) + for (Effect e : target.getAllEffects()) { if (((e.getSkill() != null) && (e.getSkill().getId() == 4215)) || (e.getSkill().getId() == 4515)) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Augmentation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Augmentation.java index 003b474a1b..af1ec1c88d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Augmentation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Augmentation.java @@ -222,8 +222,7 @@ public class Augmentation if ((_skill.isPassive() && Config.DELETE_AUGM_PASSIVE_ON_CHANGE) || (_skill.isActive() && Config.DELETE_AUGM_ACTIVE_ON_CHANGE)) { // Iterate through all effects currently on the character. - final Effect[] effects = player.getAllEffects(); - for (Effect currenteffect : effects) + for (Effect currenteffect : player.getAllEffects()) { final Skill effectSkill = currenteffect.getSkill(); if (effectSkill.getId() == _skill.getId()) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 851fca4eb0..1882570941 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -3011,9 +3011,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder private int _AbnormalEffects; /** - * FastTable containing all active skills effects in progress of a Creature. + * Set containing all active skills effects in progress of a Creature. */ - private final List _effects = new ArrayList<>(); + private final Set _effects = ConcurrentHashMap.newKeySet(); /** The table containing the List of all stacked effect in progress for each Stack group Identifier. */ protected Map> _stackedEffects = new HashMap<>(); @@ -3069,20 +3069,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return; } - final Effect[] effects = getAllEffects(); - // Make sure there's no same effect previously - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if ((effect.getSkill().getId() == newEffect.getSkill().getId()) && (effect.getEffectType() == newEffect.getEffectType()) && (effect.getStackType().equals(newEffect.getStackType()))) { if (this instanceof PlayerInstance) @@ -3125,41 +3114,31 @@ public abstract class Creature extends WorldObject implements ISkillsHolder removeFirstDeBuff(tempskill.getId()); } - synchronized (_effects) - { - // Add the Effect to all effect in progress on the Creature - if (!newEffect.getSkill().isToggle()) - { - int pos = 0; - for (int i = 0; i < _effects.size(); i++) - { - if (_effects.get(i) == null) - { - _effects.remove(i); - i--; - continue; - } - - if (_effects.get(i) != null) - { - final int skillId = _effects.get(i).getSkill().getId(); - if (!_effects.get(i).getSkill().isToggle() && ((skillId <= 4360) || (skillId >= 4367))) - { - pos++; - } - } - else - { - break; - } - } - _effects.add(pos, newEffect); - } - else - { - _effects.add(newEffect); - } - } + // Add the Effect to all effect in progress on the Creature + // if (!newEffect.getSkill().isToggle()) + // { + // int pos = 0; + // for (int i = 0; i < _effects.size(); i++) + // { + // if (_effects.get(i) != null) + // { + // final int skillId = _effects.get(i).getSkill().getId(); + // if (!_effects.get(i).getSkill().isToggle() && ((skillId <= 4360) || (skillId >= 4367))) + // { + // pos++; + // } + // } + // else + // { + // break; + // } + // } + // _effects.add(pos, newEffect); + // } + // else + // { + _effects.add(newEffect); + // } // Check if a stack group is defined for this effect if (newEffect.getStackType().equals("none")) @@ -3249,11 +3228,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder // skill.exit() could be used, if the users don't wish to see "effect removed" always when a timer goes off, even if the buff isn't active any more (has been replaced). but then check e.g. npc hold and raid petrify. if (Config.EFFECT_CANCELING && !newStackedEffect.isHerbEffect() && (stackQueue.size() > 1)) { - synchronized (_effects) - { - _effects.remove(stackQueue.get(1)); - } - + _effects.remove(stackQueue.get(1)); stackQueue.remove(1); } @@ -3336,11 +3311,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } - synchronized (_effects) - { - // Remove the active skill L2effect from _effects of the Creature - _effects.remove(effect); - } + // Remove the active skill L2effect from _effects of the Creature + _effects.remove(effect); // Update active skills in progress (In Use and Not In Use because stacked) icones on client updateEffectIcons(); @@ -3510,20 +3482,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopAllEffects() { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect != null) - { - effect.exit(true); - } - else - { - synchronized (_effects) - { - _effects.remove(effect); - } - } + effect.exit(true); } if (this instanceof PlayerInstance) @@ -3595,15 +3556,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopSkillEffects(int skillId) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if ((effect == null) || (effect.getSkill() == null)) + if (effect.getSkill() == null) { - synchronized (_effects) - { - _effects.remove(effect); - } + _effects.remove(effect); continue; } @@ -3629,18 +3586,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopEffects(Effect.EffectType type) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getEffectType() == type) { effect.exit(true); @@ -3659,15 +3606,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void stopSkillEffects(SkillType skillType, double power) { - final Effect[] effects = getAllEffects(); - for (Effect effect : effects) + for (Effect effect : _effects) { - if ((effect == null) || (effect.getSkill() == null)) + if (effect.getSkill() == null) { - synchronized (_effects) - { - _effects.remove(effect); - } + _effects.remove(effect); continue; } @@ -3949,38 +3892,34 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } // Go through all effects if any - synchronized (_effects) + for (Effect effect : _effects) { - for (int i = 0; i < _effects.size(); i++) + if (effect.getSkill() == null) { - if ((_effects.get(i) == null) || (_effects.get(i).getSkill() == null)) + _effects.remove(effect); + continue; + } + + if ((effect.getEffectType() == Effect.EffectType.CHARGE) && (player != null)) + { + // handled by EtcStatusUpdate + continue; + } + + if (effect.getInUse()) + { + if (mi != null) { - _effects.remove(i); - i--; - continue; + effect.addIcon(mi); } - - if ((_effects.get(i).getEffectType() == Effect.EffectType.CHARGE) && (player != null)) + // Like L2OFF toggle and healing potions must not be showed on party buff list + if ((ps != null) && !effect.getSkill().isToggle() && (effect.getSkill().getId() != 2031) && (effect.getSkill().getId() != 2037) && (effect.getSkill().getId() != 2032)) { - // handled by EtcStatusUpdate - continue; + effect.addPartySpelledIcon(ps); } - - if (_effects.get(i).getInUse()) + if (os != null) { - if (mi != null) - { - _effects.get(i).addIcon(mi); - } - // Like L2OFF toggle and healing potions must not be showed on party buff list - if ((ps != null) && !_effects.get(i).getSkill().isToggle() && (_effects.get(i).getSkill().getId() != 2031) && (_effects.get(i).getSkill().getId() != 2037) && (_effects.get(i).getSkill().getId() != 2032)) - { - _effects.get(i).addPartySpelledIcon(ps); - } - if (os != null) - { - _effects.get(i).addOlympiadSpelledIcon(os); - } + effect.addOlympiadSpelledIcon(os); } } } @@ -4072,12 +4011,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder * All active skills effects in progress on the Creature are identified in _effects. The Integer key of _effects is the Skill Identifier that has created the effect. * @return A table containing all active skills effect in progress on the Creature */ - public Effect[] getAllEffects() + public Collection getAllEffects() { - synchronized (_effects) - { - return _effects.toArray(new Effect[_effects.size()]); - } + return _effects; } /** @@ -4091,19 +4027,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(int index) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill().getId() == index) { if (effect.getInUse()) @@ -4128,19 +4054,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(SkillType type) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill().getSkillType() == type) { if (effect.getInUse()) @@ -4154,7 +4070,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } } - return effNotInUse; } @@ -4169,19 +4084,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(Skill skill) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getSkill() == skill) { if (effect.getInUse()) @@ -4210,19 +4115,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public Effect getFirstEffect(Effect.EffectType tp) { - final Effect[] effects = getAllEffects(); Effect effNotInUse = null; - for (Effect effect : effects) + for (Effect effect : _effects) { - if (effect == null) - { - synchronized (_effects) - { - _effects.remove(effect); - } - continue; - } - if (effect.getEffectType() == tp) { if (effect.getInUse()) @@ -6884,9 +6779,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder * All skills own by a Creature are identified in _skills the Creature * @return the all skills */ - public Skill[] getAllSkills() + public Collection getAllSkills() { - return _skills.values().toArray(new Skill[_skills.values().size()]); + return _skills.values(); } /** @@ -6936,25 +6831,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public int getBuffCount() { - final Effect[] effects = getAllEffects(); int numBuffs = 0; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (((e.getSkill().getSkillType() == SkillType.BUFF) || (e.getSkill().getId() == 1416) || (e.getSkill().getSkillType() == SkillType.REFLECT) || (e.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (e.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((e.getSkill().getId() <= 4360) || (e.getSkill().getId() >= 4367))) // 7s + if (((effect.getSkill().getSkillType() == SkillType.BUFF) || (effect.getSkill().getId() == 1416) || (effect.getSkill().getSkillType() == SkillType.REFLECT) || (effect.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (effect.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((effect.getSkill().getId() <= 4360) || (effect.getSkill().getId() >= 4367))) // 7s { numBuffs++; } } - return numBuffs; } @@ -6964,26 +6848,15 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public int getDeBuffCount() { - final Effect[] effects = getAllEffects(); int numDeBuffs = 0; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - // Check for all debuff skills - if (e.getSkill().isDebuff()) + if (effect.getSkill().isDebuff()) { numDeBuffs++; } } - return numDeBuffs; } @@ -7002,34 +6875,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void removeFirstBuff(int preferSkill) { - final Effect[] effects = getAllEffects(); Effect removeMe = null; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (((e.getSkill().getSkillType() == SkillType.BUFF) || (e.getSkill().getSkillType() == SkillType.REFLECT) || (e.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (e.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((e.getSkill().getId() <= 4360) || (e.getSkill().getId() >= 4367))) + if (((effect.getSkill().getSkillType() == SkillType.BUFF) || (effect.getSkill().getSkillType() == SkillType.REFLECT) || (effect.getSkill().getSkillType() == SkillType.HEAL_PERCENT) || (effect.getSkill().getSkillType() == SkillType.MANAHEAL_PERCENT)) && ((effect.getSkill().getId() <= 4360) || (effect.getSkill().getId() >= 4367))) { if (preferSkill == 0) { - removeMe = e; + removeMe = effect; break; } - else if (e.getSkill().getId() == preferSkill) + else if (effect.getSkill().getId() == preferSkill) { - removeMe = e; + removeMe = effect; break; } else if (removeMe == null) { - removeMe = e; + removeMe = effect; } } } @@ -7046,34 +6909,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder */ public void removeFirstDeBuff(int preferSkill) { - final Effect[] effects = getAllEffects(); Effect removeMe = null; - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (e.getSkill().isDebuff()) + if (effect.getSkill().isDebuff()) { if (preferSkill == 0) { - removeMe = e; + removeMe = effect; break; } - else if (e.getSkill().getId() == preferSkill) + else if (effect.getSkill().getId() == preferSkill) { - removeMe = e; + removeMe = effect; break; } else if (removeMe == null) { - removeMe = e; + removeMe = effect; } } } @@ -7091,25 +6944,13 @@ public abstract class Creature extends WorldObject implements ISkillsHolder public int getDanceCount() { int danceCount = 0; - - final Effect[] effects = getAllEffects(); - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if (e.getSkill().isDance() && e.getInUse()) + if (effect.getSkill().isDance() && effect.getInUse()) { danceCount++; } } - return danceCount; } @@ -7131,19 +6972,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return false; } - final Effect[] effects = getAllEffects(); - for (Effect e : effects) + for (Effect effect : _effects) { - if (e == null) - { - synchronized (_effects) - { - _effects.remove(e); - } - continue; - } - - if ((e.getStackType() != null) && e.getStackType().equals(stackType)) + if ((effect.getStackType() != null) && effect.getStackType().equals(stackType)) { return true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 27206b137c..72b4af5629 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.model.actor.instance; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.Future; import java.util.logging.Logger; @@ -600,13 +601,12 @@ public class CubicInstance Skill skill = null; if ((_id >= SMART_CUBIC_EVATEMPLAR) && (_id <= SMART_CUBIC_SPECTRALMASTER)) { - final Effect[] effects = owner.getAllEffects(); - for (Effect e : effects) + for (Effect effect : owner.getAllEffects()) { - if ((e != null) && e.getSkill().isOffensive()) + if (effect.getSkill().isOffensive()) { useCubicCure = true; - e.exit(true); + effect.exit(true); } } } @@ -846,8 +846,8 @@ public class CubicInstance } case CANCEL: { - final Effect[] effects = target.getAllEffects(); - if ((effects == null) || (effects.length == 0)) + final Collection effects = target.getAllEffects(); + if (effects.isEmpty()) { break; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index f94ede4fda..2e6c565411 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -8813,7 +8813,7 @@ public class PlayerInstance extends Playable statement.close(); // Store all effect data along with calulated remaining reuse delays for matching skills. 'restore_type'= 0. - final Effect[] effects = getAllEffects(); + final Collection effects = getAllEffects(); statement = con.prepareStatement(ADD_SKILL_SAVE); int buffIndex = 0; final List storedSkills = new ArrayList<>(); @@ -14464,7 +14464,7 @@ public class PlayerInstance extends Playable private int getRandomFishLvl() { - final Effect[] effects = getAllEffects(); + final Collection effects = getAllEffects(); int skillLevel = getSkillLevel(1315); for (Effect e : effects) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java index 0d8bfb68ed..7537edbeb6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectCancel.java @@ -44,15 +44,14 @@ final class EffectCancel extends Effect final int landrate = (int) getEffector().calcStat(Stat.CANCEL_VULN, 90, getEffected(), null); if (Rnd.get(100) < landrate) { - final Effect[] effects = getEffected().getAllEffects(); int maxdisp = (int) getSkill().getNegatePower(); if (maxdisp == 0) { maxdisp = 5; } - for (Effect e : effects) + for (Effect effect : getEffected().getAllEffects()) { - switch (e.getEffectType()) + switch (effect.getEffectType()) { case SIGNET_GROUND: case SIGNET_EFFECT: @@ -61,13 +60,13 @@ final class EffectCancel extends Effect } } - if ((e.getSkill().getId() != 4082) && (e.getSkill().getId() != 4215) && (e.getSkill().getId() != 5182) && (e.getSkill().getId() != 4515) && (e.getSkill().getId() != 110) && (e.getSkill().getId() != 111) && (e.getSkill().getId() != 1323) && (e.getSkill().getId() != 1325) && (e.getSkill().getSkillType() == SkillType.BUFF)) + if ((effect.getSkill().getId() != 4082) && (effect.getSkill().getId() != 4215) && (effect.getSkill().getId() != 5182) && (effect.getSkill().getId() != 4515) && (effect.getSkill().getId() != 110) && (effect.getSkill().getId() != 111) && (effect.getSkill().getId() != 1323) && (effect.getSkill().getId() != 1325) && (effect.getSkill().getSkillType() == SkillType.BUFF)) { // TODO Fix cancel debuffs - if (e.getSkill().getSkillType() != SkillType.DEBUFF) + if (effect.getSkill().getSkillType() != SkillType.DEBUFF) { int rate = 100; - final int level = e.getLevel(); + final int level = effect.getLevel(); if (level > 0) { rate = 150 / (1 + level); @@ -84,7 +83,7 @@ final class EffectCancel extends Effect if (Rnd.get(100) < rate) { - e.exit(true); + effect.exit(true); maxdisp--; if (maxdisp == 0) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java index 0ca7fa4377..5e2efa0383 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/effects/EffectSignetNoise.java @@ -57,17 +57,12 @@ public class EffectSignetNoise extends Effect continue; } - final Effect[] effects = target.getAllEffects(); - if (effects != null) + for (Effect effect : target.getAllEffects()) { - for (Effect effect : effects) + if (effect.getSkill().isDance()) { - if (effect.getSkill().isDance()) - { - effect.exit(true); - } + effect.exit(true); } - // there doesn't seem to be a visible effect? } } return true; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java index 2ac5e2dedc..131a18c00d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/handlers/SkillSeed.java @@ -59,8 +59,7 @@ public class SkillSeed extends Skill oldEffect.increasePower(); } - final Effect[] effects = target.getAllEffects(); - for (Effect effect : effects) + for (Effect effect : target.getAllEffects()) { if (effect.getEffectType() == Effect.EffectType.SEED) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 9b71717d73..ebdce68807 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -195,21 +195,17 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new EtcStatusUpdate(player)); - final Effect[] effects = player.getAllEffects(); - if (effects != null) + for (Effect effect : player.getAllEffects()) { - for (Effect e : effects) + if (effect.getEffectType() == Effect.EffectType.HEAL_OVER_TIME) { - if (e.getEffectType() == Effect.EffectType.HEAL_OVER_TIME) - { - player.stopEffects(Effect.EffectType.HEAL_OVER_TIME); - player.removeEffect(e); - } - if (e.getEffectType() == Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME) - { - player.stopEffects(Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME); - player.removeEffect(e); - } + player.stopEffects(Effect.EffectType.HEAL_OVER_TIME); + player.removeEffect(effect); + } + if (effect.getEffectType() == Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME) + { + player.stopEffects(Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME); + player.removeEffect(effect); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java index 2231ef80e7..6f834c93f1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java @@ -16,6 +16,8 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -24,16 +26,12 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; public class GMViewSkillInfo implements IClientOutgoingPacket { private final PlayerInstance _player; - private Skill[] _skills; + private final Collection _skills; public GMViewSkillInfo(PlayerInstance player) { _player = player; _skills = _player.getAllSkills(); - if (_skills.length == 0) - { - _skills = new Skill[0]; - } } @Override @@ -41,8 +39,7 @@ public class GMViewSkillInfo implements IClientOutgoingPacket { OutgoingPackets.GM_VIEW_SKILL_INFO.writeId(packet); packet.writeS(_player.getName()); - packet.writeD(_skills.length); - + packet.writeD(_skills.size()); for (Skill skill : _skills) { packet.writeD(skill.isPassive() ? 1 : 0);
SkillAction