Implemented the ExRequestClassChangeVerifying client packet.

This commit is contained in:
MobiusDevelopment
2021-09-20 23:15:23 +00:00
parent d6d45a0595
commit e91f6902dd
13 changed files with 814 additions and 6 deletions

View File

@@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCan
import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml;
import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse;
import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChange;
import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChangeVerifying;
import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo;
import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem;
import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel;
@@ -499,7 +500,7 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
// 228
EX_OPEN_HTML(0x164, ExOpenHtml::new, ConnectionState.IN_GAME),
EX_REQUEST_CLASS_CHANGE(0x165, ExRequestClassChange::new, ConnectionState.IN_GAME),
EX_REQUEST_CLASS_CHANGE_VERIFYING(0x166, null, ConnectionState.IN_GAME),
EX_REQUEST_CLASS_CHANGE_VERIFYING(0x166, ExRequestClassChangeVerifying::new, ConnectionState.IN_GAME),
EX_REQUEST_TELEPORT(0x167, ExRequestTeleport::new, ConnectionState.IN_GAME),
EX_COSTUME_USE_ITEM(0x168, null, ConnectionState.IN_GAME),
EX_COSTUME_LIST(0x169, null, ConnectionState.IN_GAME),

View File

@@ -0,0 +1,116 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.network.clientpackets.classchange;
import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.classchange.ExClassChangeSetAlarm;
/**
* @author Mobius
*/
public class ExRequestClassChangeVerifying implements IClientIncomingPacket
{
private int _classId;
@Override
public boolean read(GameClient client, PacketReader packet)
{
_classId = packet.readD();
return true;
}
@Override
public void run(GameClient client)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final PlayerInstance player = client.getPlayer();
if (player == null)
{
return;
}
if (_classId != player.getClassId().getId())
{
return;
}
if (player.isInCategory(CategoryType.FIRST_CLASS_GROUP))
{
if (!firstClassCheck(player))
{
return;
}
}
else if (player.isInCategory(CategoryType.SECOND_CLASS_GROUP))
{
if (!firstClassCheck(player) || !secondClassCheck(player))
{
return;
}
}
else if (player.isInCategory(CategoryType.THIRD_CLASS_GROUP))
{
if (!firstClassCheck(player) || !secondClassCheck(player) || !thirdClassCheck(player))
{
return;
}
}
else if (player.isInCategory(CategoryType.FOURTH_CLASS_GROUP))
{
if (!firstClassCheck(player) || !secondClassCheck(player) || !thirdClassCheck(player) || !fourthClassCheck(player))
{
return;
}
}
player.sendPacket(ExClassChangeSetAlarm.STATIC_PACKET);
}
private boolean firstClassCheck(PlayerInstance player)
{
final QuestState qs = player.getQuestState("Q11024_PathOfDestinyBeginning");
return (qs != null) && qs.isCompleted();
}
private boolean secondClassCheck(PlayerInstance player)
{
final QuestState qs = player.getQuestState("Q11025_PathOfDestinyProving");
return (qs != null) && qs.isCompleted();
}
private boolean thirdClassCheck(PlayerInstance player)
{
final QuestState qs = player.getQuestState("Q11026_PathOfDestinyConviction");
return (qs != null) && qs.isCompleted();
}
private boolean fourthClassCheck(PlayerInstance player)
{
final QuestState qs = player.getQuestState("Q11027_PathOfDestinyOvercome");
return (qs != null) && qs.isCompleted();
}
}