Removed packet locks and relative improvements.
This commit is contained in:
@@ -43,7 +43,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExChangeToAwakenedClass;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import quests.Q10472_WindsOfFateEncroachingShadows.Q10472_WindsOfFateEncroachingShadows;
|
||||
@@ -327,10 +326,7 @@ public class AwakeningMaster extends AbstractNpcAI
|
||||
player.setBaseClass(player.getActiveClass());
|
||||
}
|
||||
player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_A_CLASS_TRANSFER);
|
||||
final UserInfo ui = new UserInfo(player, false);
|
||||
ui.addComponentType(UserInfoType.BASIC_INFO);
|
||||
ui.addComponentType(UserInfoType.MAX_HPCPMP);
|
||||
player.sendPacket(ui);
|
||||
player.broadcastUserInfo(UserInfoType.BASIC_INFO, UserInfoType.MAX_HPCPMP);
|
||||
player.broadcastInfo();
|
||||
|
||||
player.broadcastPacket(new SocialAction(player.getObjectId(), 20));
|
||||
|
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import org.l2jmobius.commons.concurrent.ThreadPool;
|
||||
import org.l2jmobius.gameserver.data.xml.impl.SkillData;
|
||||
import org.l2jmobius.gameserver.enums.SubclassInfoType;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
@@ -28,6 +27,7 @@ import org.l2jmobius.gameserver.model.olympiad.OlympiadManager;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExStorageMaxCount;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ability.ExAcquireAPSkillList;
|
||||
@@ -54,41 +54,41 @@ public class ClassChange extends AbstractEffect
|
||||
@Override
|
||||
public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||
{
|
||||
if (effected.isPlayer())
|
||||
if (!effected.isPlayer())
|
||||
{
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
// TODO: FIX ME - Executing 100 ms later otherwise interupted exception during storeCharBase()
|
||||
ThreadPool.schedule(() ->
|
||||
{
|
||||
final int activeClass = player.getClassId().getId();
|
||||
|
||||
if (!player.setActiveClass(_index))
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final Skill identifyCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identifyCrisis != null)
|
||||
{
|
||||
identifyCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
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 AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
}, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = effected.getActingPlayer();
|
||||
if (player.isTransformed() || player.isSubclassLocked() || player.isAffectedBySkill(IDENTITY_CRISIS_SKILL_ID))
|
||||
{
|
||||
player.sendMessage("You cannot switch your class right now!");
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill identityCrisis = SkillData.getInstance().getSkill(IDENTITY_CRISIS_SKILL_ID, 1);
|
||||
if (identityCrisis != null)
|
||||
{
|
||||
identityCrisis.applyEffects(player, player);
|
||||
}
|
||||
|
||||
if (OlympiadManager.getInstance().isRegisteredInComp(player))
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(player);
|
||||
}
|
||||
|
||||
final int activeClass = player.getClassId().getId();
|
||||
player.setActiveClass(_index);
|
||||
|
||||
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_SUCCESSFULLY_SWITCHED_S1_TO_S2);
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new ExStorageMaxCount(player));
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
player.sendPacket(new ExAcquireAPSkillList(player));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user