/*
* This file is part of aion-unique <aion-unique.org>.
*
* aion-unique 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.
*
* aion-unique 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 aion-unique. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aionemu.gameserver.services;
import java.util.Arrays;
import com.aionemu.gameserver.configs.main.CustomConfig;
import com.aionemu.gameserver.model.PlayerClass;
import com.aionemu.gameserver.model.Race;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
import com.aionemu.gameserver.network.aion.serverpackets.SM_QUEST_ACCEPTED;
import com.aionemu.gameserver.network.aion.serverpackets.SM_QUEST_STEP;
import com.aionemu.gameserver.questEngine.model.QuestState;
import com.aionemu.gameserver.questEngine.model.QuestStatus;
import com.aionemu.gameserver.utils.PacketSendUtility;
/**
* @author ATracer, sweetkr
*
*/
public class ClassChangeService
{
/**
* TODO remove after class change quest is done
*
* @param player
*/
public static void showClassChangeDialog(Player player)
{
if(CustomConfig.ENABLE_SIMPLE_2NDCLASS)
{
PlayerClass playerClass = player.getPlayerClass();
Race playerRace = player.getCommonData().getRace();
if(player.getLevel() >= 9 && Arrays.asList(0, 3, 6, 9).contains(playerClass.ordinal()))
{
if(playerRace.ordinal() == 0)
{
switch(playerClass.ordinal())
{
case 0:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 2375, 1006));
break;
case 3:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 2716, 1006));
break;
case 6:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 3057, 1006));
break;
case 9:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 3398, 1006));
break;
}
}
else if(playerRace.ordinal() == 1)
{
switch(playerClass.ordinal())
{
case 0:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 3057, 2008));
break;
case 3:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 3398, 2008));
break;
case 6:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 3739, 2008));
break;
case 9:
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 4080, 2008));
break;
}
}
}
}
}
/**
*
* @param player
* @param dialogId
*/
public static void changeClassToSelection(final Player player, final int dialogId)
{
if(CustomConfig.ENABLE_SIMPLE_2NDCLASS)
{
Race playerRace = player.getCommonData().getRace();
if(playerRace.ordinal() == 0)
{
switch(dialogId)
{
case 2376:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("1")));
break;
case 2461:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("2")));
break;
case 2717:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("4")));
break;
case 2802:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("5")));
break;
case 3058:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("7")));
break;
case 3143:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("8")));
break;
case 3399:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("10")));
break;
case 3484:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("11")));
break;
}
addCompliteQuest(player, 1006);
addCompliteQuest(player, 1007);
}
else if(playerRace.ordinal() == 1)
{
switch(dialogId)
{
case 3058:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("1")));
break;
case 3143:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("2")));
break;
case 3399:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("4")));
break;
case 3484:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("5")));
break;
case 3740:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("7")));
break;
case 3825:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("8")));
break;
case 4081:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("10")));
break;
case 4166:
setClass(player, PlayerClass.getPlayerClassById(Byte.parseByte("11")));
break;
}
addCompliteQuest(player, 2008);
addCompliteQuest(player, 2009);
}
}
}
private static void addCompliteQuest(Player player, int questId)
{
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null)
{
player.getQuestStateList().addQuest(questId, new QuestState(questId, QuestStatus.COMPLITE, 0, 0));
PacketSendUtility.sendPacket(player, new SM_QUEST_ACCEPTED(questId, QuestStatus.COMPLITE.value(), 0));
}
else
{
qs.setStatus(QuestStatus.COMPLITE);
PacketSendUtility.sendPacket(player, new SM_QUEST_STEP(questId, qs.getStatus(), qs.getQuestVars()
.getQuestVars()));
}
}
private static void setClass(Player player, PlayerClass playerClass)
{
player.getCommonData().setPlayerClass(playerClass);
player.getCommonData().upgradePlayer();
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(0, 0, 0));
}
}