Stop auto use when change class.

This commit is contained in:
MobiusDevelopment
2021-10-18 11:41:54 +00:00
parent 01b2eac98a
commit 84c3034ee9
6 changed files with 264 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ package handlers.effecthandlers;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.model.Shortcut;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -32,6 +33,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowAll;
import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowDeleteAll;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
/**
* @author Sdw
@@ -104,5 +106,47 @@ public class ClassChange extends AbstractEffect
}
}
}
// Stop auto use.
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 ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
if ((knownItem != null) && player.getAutoUseSettings().getAutoSupplyItems().contains(knownItem.getId()))
{
if (knownItem.isPotion())
{
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
}
else
{
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
}
}
}
}
}
}