diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index a6ad0c3e9a..07e48b893f 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoShortcut; +import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager; public class RequestShortCutReg implements IClientIncomingPacket { @@ -69,6 +70,58 @@ public class RequestShortCutReg implements IClientIncomingPacket return; } + // Delete the shortcut. + final Shortcut oldShortcut = player.getShortCut(_slot, _page); + player.deleteShortCut(_slot, _page); + if (oldShortcut != null) + { + boolean removed = true; + // Keep other similar shortcuts activated. + if (oldShortcut.isAutoUse()) + { + player.removeAutoShortcut(_slot, _page); + for (Shortcut shortcut : player.getAllShortCuts()) + { + if ((oldShortcut.getId() == shortcut.getId()) && (oldShortcut.getType() == shortcut.getType())) + { + player.addAutoShortcut(shortcut.getSlot(), shortcut.getPage()); + removed = false; + } + } + } + // Remove auto used ids. + if (removed) + { + switch (oldShortcut.getType()) + { + case SKILL: + { + AutoUseTaskManager.getInstance().removeAutoBuff(player, oldShortcut.getId()); + AutoUseTaskManager.getInstance().removeAutoSkill(player, oldShortcut.getId()); + break; + } + case ITEM: + { + if (player.getInventory().getItemByObjectId(oldShortcut.getId()).isPotion()) + { + AutoUseTaskManager.getInstance().removeAutoPotionItem(player, oldShortcut.getId()); + } + else + { + AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, oldShortcut.getId()); + } + break; + } + case ACTION: + { + AutoUseTaskManager.getInstance().removeAutoAction(player, oldShortcut.getId()); + break; + } + } + } + } + player.restoreAutoShortcutVisual(); + final Shortcut sc = new Shortcut(_slot, _page, _type, _id, _level, _subLevel, _characterType); sc.setAutoUse(_active); player.registerShortCut(sc);