Removal of Creature effect and skill getter conversions to arrays.
This commit is contained in:
@@ -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<Skill> 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;
|
||||
|
@@ -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<Skill> 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)
|
||||
{
|
||||
|
@@ -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<Skill> 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;
|
||||
|
@@ -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<Skill> 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;
|
||||
|
@@ -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<EnchantSkillLearn> 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()]);
|
||||
|
@@ -178,7 +178,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
html.append("<table>");
|
||||
html.append("<tr><td width=200>Skill</td><td width=70>Action</td></tr>");
|
||||
|
||||
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))
|
||||
|
@@ -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)
|
||||
|
@@ -740,19 +740,13 @@ public class Potions implements IItemHandler
|
||||
|
||||
private boolean isEffectReplaceable(Playable activeChar, Enum<EffectType> 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;
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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<Effect> 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))
|
||||
{
|
||||
|
@@ -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<Effect> _effects = new ArrayList<>();
|
||||
private final Set<Effect> _effects = ConcurrentHashMap.newKeySet();
|
||||
|
||||
/** The table containing the List of all stacked effect in progress for each Stack group Identifier. */
|
||||
protected Map<String, List<Effect>> _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 <b>_effects</b>. 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<Effect> 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 <b>_skills</b> the Creature
|
||||
* @return the all skills
|
||||
*/
|
||||
public Skill[] getAllSkills()
|
||||
public Collection<Skill> 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;
|
||||
}
|
||||
|
@@ -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<Effect> effects = target.getAllEffects();
|
||||
if (effects.isEmpty())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@@ -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<Effect> effects = getAllEffects();
|
||||
statement = con.prepareStatement(ADD_SKILL_SAVE);
|
||||
int buffIndex = 0;
|
||||
final List<Integer> storedSkills = new ArrayList<>();
|
||||
@@ -14139,7 +14139,7 @@ public class PlayerInstance extends Playable
|
||||
|
||||
private int getRandomFishLvl()
|
||||
{
|
||||
final Effect[] effects = getAllEffects();
|
||||
final Collection<Effect> effects = getAllEffects();
|
||||
int skillLevel = getSkillLevel(1315);
|
||||
for (Effect e : effects)
|
||||
{
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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<Skill> _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);
|
||||
|
Reference in New Issue
Block a user