public void ChangeClass(ClassType characterClass)
{
JobLevel = 1;
JobLevelXp = 0;
Session.SendPacket("npinfo 0");
Session.SendPacket("p_clear");
if (characterClass == (byte)ClassType.Adventurer)
{
HairStyle = (byte)HairStyle > 1 ? 0 : HairStyle;
}
LoadSpeed();
Class = characterClass;
Hp = (int)HPLoad();
Mp = (int)MPLoad();
Session.SendPacket(GenerateTit());
Session.SendPacket(GenerateStat());
Session.CurrentMap?.Broadcast(Session, GenerateEq());
Session.CurrentMap?.Broadcast(GenerateEff(8), MapX, MapY);
Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("CLASS_CHANGED"), 0));
Session.CurrentMap?.Broadcast(GenerateEff(196), MapX, MapY);
int faction = 1 + _random.Next(0, 2);
Faction = faction;
Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey($"GET_PROTECTION_POWER_{faction}"), 0));
Session.SendPacket("scr 0 0 0 0 0 0");
Session.SendPacket(GenerateFaction());
Session.SendPacket(GenerateStatChar());
Session.SendPacket(GenerateEff(4799 + faction));
Session.SendPacket(GenerateCond());
Session.SendPacket(GenerateLev());
Session.CurrentMap?.Broadcast(Session, GenerateCMode());
Session.CurrentMap?.Broadcast(Session, GenerateIn(), ReceiverType.AllExceptMe);
Session.CurrentMap?.Broadcast(GenerateEff(6), MapX, MapY);
Session.CurrentMap?.Broadcast(GenerateEff(198), MapX, MapY);
foreach (CharacterSkill skill in Skills.GetAllItems())
{
if (skill.SkillVNum >= 200)
{
Skills.Remove(skill.SkillVNum);
}
}
Skills[(short)(200 + 20 * (byte)Class)] = new CharacterSkill { SkillVNum = (short)(200 + 20 * (byte)Class), CharacterId = CharacterId };
Skills[(short)(201 + 20 * (byte)Class)] = new CharacterSkill { SkillVNum = (short)(201 + 20 * (byte)Class), CharacterId = CharacterId };
Skills[236] = new CharacterSkill { SkillVNum = 236, CharacterId = CharacterId };
Session.SendPacket(GenerateSki());
foreach (QuicklistEntryDTO quicklists in DAOFactory.QuicklistEntryDAO.LoadByCharacterId(CharacterId).Where(quicklists => QuicklistEntries.Any(qle => qle.Id == quicklists.Id)))
{
DAOFactory.QuicklistEntryDAO.Delete(quicklists.Id);
}
QuicklistEntries = new List<QuicklistEntryDTO>
{
new QuicklistEntryDTO
{
CharacterId = CharacterId,
Q1 = 0,
Q2 = 9,
Type = 1,
Slot = 3,
Pos = 1
}
};
if (ServerManager.Instance.Groups.Any(s => s.IsMemberOfGroup(Session)))
{
Session.CurrentMap?.Broadcast(Session, $"pidx 1 1.{CharacterId}", ReceiverType.AllExceptMe);
}
}