AutoUseTaskManager should take in consideration attach skills.
Thanks to Index.
This commit is contained in:
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
import org.l2jmobius.gameserver.model.actor.instance.Guard;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.AttachSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||||
@@ -215,9 +216,17 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
if (canCastBuff(player, target, skill))
|
if (canCastBuff(player, target, skill))
|
||||||
{
|
{
|
||||||
final Playable caster = pet != null ? pet : player;
|
ATTACH_SEARCH: for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()))
|
||||||
|
{
|
||||||
|
skill = holder.getSkill();
|
||||||
|
break ATTACH_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
|
final Playable caster = pet != null ? pet : player;
|
||||||
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0))
|
||||||
{
|
{
|
||||||
caster.doCast(skill);
|
caster.doCast(skill);
|
||||||
@@ -380,9 +389,15 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
|
|
||||||
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
final BuffInfo buffInfo = playableTarget.getEffectList().getBuffInfoBySkillId(skill.getId());
|
||||||
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
final BuffInfo abnormalBuffInfo = playableTarget.getEffectList().getFirstBuffInfoByAbnormalType(skill.getAbnormalType());
|
||||||
return ((buffInfo == null) && (abnormalBuffInfo == null)) //
|
if (abnormalBuffInfo != null)
|
||||||
|| ((buffInfo != null) && (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()))) //
|
{
|
||||||
|| (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel());
|
if (buffInfo != null)
|
||||||
|
{
|
||||||
|
return (abnormalBuffInfo.getSkill().getId() == buffInfo.getSkill().getId()) && ((buffInfo.getTime() <= REUSE_MARGIN_TIME) || (buffInfo.getSkill().getLevel() < skill.getLevel()));
|
||||||
|
}
|
||||||
|
return (abnormalBuffInfo.getSkill().getAbnormalLevel() < skill.getAbnormalLevel()) || abnormalBuffInfo.isAbnormalType(AbnormalType.NONE);
|
||||||
|
}
|
||||||
|
return buffInfo == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
private boolean canUseMagic(Player player, WorldObject target, Skill skill)
|
||||||
@@ -391,6 +406,16 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (AttachSkillHolder holder : skill.getAttachSkills())
|
||||||
|
{
|
||||||
|
if (player.isAffectedBySkill(holder.getRequiredSkillId()) //
|
||||||
|
&& (player.hasSkillReuse(holder.getSkill().getReuseHashCode()) || player.isAffectedBySkill(holder)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
return !player.isSkillDisabled(skill) && skill.checkCondition(player, target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user