Removed packet locks and relative improvements.

This commit is contained in:
MobiusDevelopment
2019-11-07 14:55:39 +00:00
parent 3f1cf5d1a7
commit b764d444df
128 changed files with 775 additions and 2146 deletions

View File

@@ -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));

View File

@@ -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));
}
}