Check non bad skill target.

This commit is contained in:
MobiusDevelopment
2020-10-09 14:50:54 +00:00
parent fb74736c54
commit 525240bd2c
2 changed files with 38 additions and 4 deletions

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.handler.IItemHandler; import org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.handler.ItemHandler; import org.l2jmobius.gameserver.handler.ItemHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
@@ -129,10 +130,14 @@ public class AutoUseTaskManager
player.getAutoUseSettings().getAutoSkills().remove(skillId); player.getAutoUseSettings().getAutoSkills().remove(skillId);
continue BUFFS; // TODO: break? continue BUFFS; // TODO: break?
} }
if ((skill.isBad() && (player.getTarget() == null)) || (player.getTarget() == player))
// Check bad skill target.
final WorldObject target = player.getTarget();
if ((skill.isBad() && (target == null)) || (target == player))
{ {
continue BUFFS; continue BUFFS;
} }
if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, player, false)) if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, player, false))
{ {
// Summon check. // Summon check.
@@ -155,7 +160,19 @@ public class AutoUseTaskManager
continue BUFFS; continue BUFFS;
} }
} }
player.doCast(skill);
// Check non bad skill target.
if (!skill.isBad() && ((target == null) || !target.isPlayable()))
{
final WorldObject savedTarget = target;
player.setTarget(player);
player.doCast(skill);
player.setTarget(savedTarget);
}
else
{
player.doCast(skill);
}
} }
} }
} }

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.handler.IItemHandler; import org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.handler.ItemHandler; import org.l2jmobius.gameserver.handler.ItemHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
@@ -129,10 +130,14 @@ public class AutoUseTaskManager
player.getAutoUseSettings().getAutoSkills().remove(skillId); player.getAutoUseSettings().getAutoSkills().remove(skillId);
continue BUFFS; // TODO: break? continue BUFFS; // TODO: break?
} }
if ((skill.isBad() && (player.getTarget() == null)) || (player.getTarget() == player))
// Check bad skill target.
final WorldObject target = player.getTarget();
if ((skill.isBad() && (target == null)) || (target == player))
{ {
continue BUFFS; continue BUFFS;
} }
if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, player, false)) if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, player, false))
{ {
// Summon check. // Summon check.
@@ -155,7 +160,19 @@ public class AutoUseTaskManager
continue BUFFS; continue BUFFS;
} }
} }
player.doCast(skill);
// Check non bad skill target.
if (!skill.isBad() && ((target == null) || !target.isPlayable()))
{
final WorldObject savedTarget = target;
player.setTarget(player);
player.doCast(skill);
player.setTarget(savedTarget);
}
else
{
player.doCast(skill);
}
} }
} }
} }