Stop auto skill use when using Hardin or Eraton.

Contributed by Enryu.
This commit is contained in:
MobiusDevelopment
2022-06-07 11:49:32 +00:00
parent 342511df5c
commit d389cd45d7
8 changed files with 352 additions and 0 deletions

View File

@@ -26,14 +26,17 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -141,6 +144,47 @@ public class Hardin extends AbstractNpcAI
{
player.getAppearance().setFemale();
}
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
// Change class
player.setClassId(newClass.getId());
if (player.isDualClassActive())

View File

@@ -26,14 +26,17 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -141,6 +144,47 @@ public class Hardin extends AbstractNpcAI
{
player.getAppearance().setFemale();
}
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
// Change class
player.setClassId(newClass.getId());
if (player.isDualClassActive())

View File

@@ -26,14 +26,17 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -141,6 +144,47 @@ public class Hardin extends AbstractNpcAI
{
player.getAppearance().setFemale();
}
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
// Change class
player.setClassId(newClass.getId());
if (player.isDualClassActive())

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -35,12 +36,14 @@ import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -290,6 +293,47 @@ public class Eraton extends AbstractNpcAI
}
takeItem(player, STONE_OF_DESTINY);
takeItem(player, getCloakItemId(player));
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
player.abortCast();
player.stopAllEffectsExceptThoseThatLastThroughDeath();
player.stopAllEffects();

View File

@@ -26,14 +26,17 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -141,6 +144,47 @@ public class Hardin extends AbstractNpcAI
{
player.getAppearance().setFemale();
}
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
// Change class
player.setClassId(newClass.getId());
if (player.isDualClassActive())

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -35,12 +36,14 @@ import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -295,6 +298,47 @@ public class Eraton extends AbstractNpcAI
}
takeItem(player, STONE_OF_DESTINY);
takeItem(player, getCloakItemId(player));
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
player.abortCast();
player.stopAllEffectsExceptThoseThatLastThroughDeath();
player.stopAllEffects();

View File

@@ -26,14 +26,17 @@ import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -141,6 +144,47 @@ public class Hardin extends AbstractNpcAI
{
player.getAppearance().setFemale();
}
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
// Change class
player.setClassId(newClass.getId());
if (player.isDualClassActive())

View File

@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.ClassId;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -35,12 +36,14 @@ import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import ai.AbstractNpcAI;
@@ -295,6 +298,47 @@ public class Eraton extends AbstractNpcAI
}
takeItem(player, STONE_OF_DESTINY);
takeItem(player, getCloakItemId(player));
// Stop Auto Use Skills
for (Shortcut shortcut : player.getAllShortCuts())
{
if (!shortcut.isAutoUse())
{
continue;
}
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
{
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
if (knownSkill != null)
{
if (knownSkill.isBad())
{
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
}
}
}
else
{
final Item knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if (knownItem != null)
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
player.abortCast();
player.stopAllEffectsExceptThoseThatLastThroughDeath();
player.stopAllEffects();