Support for auto use summon skills.
This commit is contained in:
@@ -5477,7 +5477,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5479,7 +5479,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5481,7 +5481,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5477,7 +5477,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5493,7 +5493,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5493,7 +5493,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5494,7 +5494,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5459,7 +5459,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5503,7 +5503,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -5520,7 +5520,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5553,7 +5553,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5553,7 +5553,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5454,7 +5454,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5454,7 +5454,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5439,7 +5439,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
-1
@@ -5453,7 +5453,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
-1
@@ -5453,7 +5453,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
@@ -5408,7 +5408,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5435,7 +5435,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
-1
@@ -5492,7 +5492,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5533,7 +5533,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -5539,7 +5539,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5539,7 +5539,6 @@ public class Player extends Playable
|
|||||||
{
|
{
|
||||||
final List<Summon> summons = new ArrayList<>();
|
final List<Summon> summons = new ArrayList<>();
|
||||||
summons.addAll(getServitors().values());
|
summons.addAll(getServitors().values());
|
||||||
|
|
||||||
if (_pet != null)
|
if (_pet != null)
|
||||||
{
|
{
|
||||||
summons.add(_pet);
|
summons.add(_pet);
|
||||||
|
|||||||
+19
@@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType;
|
|||||||
import org.l2jmobius.gameserver.model.ShortCuts;
|
import org.l2jmobius.gameserver.model.ShortCuts;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket
|
|||||||
if (shortcut.getType() == ShortcutType.SKILL)
|
if (shortcut.getType() == ShortcutType.SKILL)
|
||||||
{
|
{
|
||||||
skill = player.getKnownSkill(shortcut.getId());
|
skill = player.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
skill = summon.getKnownSkill(shortcut.getId());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
skill = player.getPet().getKnownSkill(shortcut.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+51
-7
@@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break BUFFS;
|
break BUFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Playable pet = null;
|
||||||
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
player.getAutoUseSettings().getAutoBuffs().remove(skillId);
|
||||||
continue BUFFS;
|
continue BUFFS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
// Playable target cast.
|
// Playable target cast.
|
||||||
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))
|
||||||
{
|
{
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
}
|
}
|
||||||
else // Target self, cast and re-target.
|
else // Target self, cast and re-target.
|
||||||
{
|
{
|
||||||
final WorldObject savedTarget = target;
|
final WorldObject savedTarget = target;
|
||||||
player.setTarget(player);
|
caster.setTarget(caster);
|
||||||
player.doCast(skill);
|
caster.doCast(skill);
|
||||||
player.setTarget(savedTarget);
|
caster.setTarget(savedTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,14 +253,35 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Acquire next skill.
|
// Acquire next skill.
|
||||||
|
Playable pet = null;
|
||||||
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
final Integer skillId = player.getAutoUseSettings().getNextSkillId();
|
||||||
final Skill skill = player.getKnownSkill(skillId.intValue());
|
Skill skill = player.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill == null)
|
||||||
|
{
|
||||||
|
if (player.hasServitors())
|
||||||
|
{
|
||||||
|
SUMMON_SEARCH: for (Summon summon : player.getServitors().values())
|
||||||
|
{
|
||||||
|
pet = summon;
|
||||||
|
skill = summon.getKnownSkill(skillId.intValue());
|
||||||
|
if (skill != null)
|
||||||
|
{
|
||||||
|
break SUMMON_SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((skill == null) && player.hasPet())
|
||||||
|
{
|
||||||
|
pet = player.getPet();
|
||||||
|
skill = pet.getKnownSkill(skillId.intValue());
|
||||||
|
}
|
||||||
if (skill == null)
|
if (skill == null)
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
player.getAutoUseSettings().getAutoSkills().remove(skillId);
|
||||||
player.getAutoUseSettings().resetSkillOrder();
|
player.getAutoUseSettings().resetSkillOrder();
|
||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Casting on self stops movement.
|
// Casting on self stops movement.
|
||||||
final WorldObject target = player.getTarget();
|
final WorldObject target = player.getTarget();
|
||||||
@@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable
|
|||||||
break SKILLS;
|
break SKILLS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false))
|
if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false))
|
||||||
{
|
{
|
||||||
player.getAutoUseSettings().incrementSkillOrder();
|
player.getAutoUseSettings().incrementSkillOrder();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user