ClassChange effect using a small delay.
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.updateSymbolSealSkills();
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.Shortcut;
|
||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
// Executing later otherwise interrupted exception during storeCharBase.
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
continue;
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
// Delete party window for other party members
|
||||
player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||
for (PlayerInstance member : player.getParty().getMembers())
|
||||
{
|
||||
if (knownSkill.isBad())
|
||||
// And re-add
|
||||
if (member != player)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
// Stop auto use.
|
||||
for (Shortcut shortcut : player.getAllShortCuts())
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
if (!shortcut.isAutoUse())
|
||||
{
|
||||
if (knownItem.isPotion())
|
||||
continue;
|
||||
}
|
||||
|
||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
||||
|
||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
||||
{
|
||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
||||
if (knownSkill != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
if (knownSkill.isBad())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSkill(player, shortcut.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
||||
if (knownItem != null)
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
if (knownItem.isPotion())
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoPotionItem(player, knownItem.getId());
|
||||
}
|
||||
else
|
||||
{
|
||||
AutoUseTaskManager.getInstance().removeAutoSupplyItem(player, knownItem.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user