ClassChange effect using a small delay.
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -61,50 +62,54 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -63,93 +64,97 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -60,49 +61,53 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||||
import org.l2jmobius.gameserver.model.Shortcut;
|
import org.l2jmobius.gameserver.model.Shortcut;
|
||||||
@@ -62,91 +63,95 @@ public class ClassChange extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance player = effected.getActingPlayer();
|
// Executing later otherwise interrupted exception during storeCharBase.
|
||||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
ThreadPool.schedule(() ->
|
||||||
{
|
{
|
||||||
player.sendMessage("You cannot switch your class right now!");
|
final PlayerInstance player = effected.getActingPlayer();
|
||||||
return;
|
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||||
}
|
|
||||||
|
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
// And re-add
|
player.sendMessage("You cannot switch your class right now!");
|
||||||
if (member != player)
|
return;
|
||||||
{
|
|
||||||
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop auto use.
|
|
||||||
for (Shortcut shortcut : player.getAllShortCuts())
|
|
||||||
{
|
|
||||||
if (!shortcut.isAutoUse())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.removeAutoShortcut(shortcut.getSlot(), shortcut.getPage());
|
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||||
|
if (identityCrisis != null)
|
||||||
|
{
|
||||||
|
identityCrisis.applyEffects(player, player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getAutoUseSettings().isAutoSkill(shortcut.getId()))
|
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||||
{
|
{
|
||||||
final Skill knownSkill = player.getKnownSkill(shortcut.getId());
|
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||||
if (knownSkill != null)
|
}
|
||||||
|
|
||||||
|
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());
|
member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoUseTaskManager.getInstance().removeAutoBuff(player, shortcut.getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Stop auto use.
|
||||||
|
for (Shortcut shortcut : player.getAllShortCuts())
|
||||||
{
|
{
|
||||||
final ItemInstance knownItem = player.getInventory().getItemByObjectId(shortcut.getId());
|
if (!shortcut.isAutoUse())
|
||||||
if (knownItem != null)
|
|
||||||
{
|
{
|
||||||
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