public bool Promote(SubClasses sClass) { ISubclass iClass; if (!Professions.TryGetValue(sClass, out iClass) || iClass.Promotion >= iClass.Level) { return(false); } if (iClass.Promotion + 1 > 9) { return(false); // max level } iClass.Promotion += 1; if (!Save(iClass)) { return(false); } var sPacket = new MsgSubPro(); sPacket.Action = SubClassActions.MARTIAL_PROMOTED; sPacket.Subclass = sClass; sPacket.WriteByte(iClass.Promotion, 7); m_pOwner.Send(sPacket); m_pOwner.RecalculateAttributes(); return(true); }
public void SendStudy() { var pMsg = new MsgSubPro { Action = SubClassActions.UPDATE_STUDY, StudyPoints = m_pOwner.StudyPoints }; m_pOwner.Send(pMsg); }
public void LearnAll() { foreach (var prof in Professions.Values) { var pMsg = new MsgSubPro { Action = SubClassActions.MARTIAL_PROMOTED, Subclass = prof.Class }; pMsg.WriteByte(prof.Promotion, 7); m_pOwner.Send(pMsg); } }
public void SendAll() { var pMsg = new MsgSubPro { Action = SubClassActions.SHOW_GUI, StudyPoints = m_pOwner.StudyPoints }; foreach (var prof in Professions.Values) { pMsg.Append(prof.Class, prof.Promotion, prof.Level); } m_pOwner.Send(pMsg); }
public bool Create(SubClasses pType) { if (Professions.ContainsKey(pType)) { return(false); } var dbClass = new DbSubclass { Class = (byte)pType, Level = 1, Promotion = 1, Userid = m_pOwner.Identity }; if (!Database.SubclassRepository.SaveOrUpdate(dbClass)) { return(false); } var pClass = new ISubclass { Database = dbClass, Class = pType, Level = 1, Promotion = 1 }; if (!Professions.TryAdd(pClass.Class, pClass)) { return(false); } var pMsg = new MsgSubPro { Action = SubClassActions.LEARN, Subclass = pType }; m_pOwner.Send(pMsg); return(true); }
public static void HandleSubPro(Character pUser, MsgSubPro pMsg) { if (pUser.SubClass == null) { return; } switch (pMsg.Action) { case SubClassActions.SWITCH: { pUser.SubClass.Active(pMsg.Subclass); break; } case SubClassActions.REQUEST_UPLEV: { pUser.SubClass.Uplev(pMsg.Subclass); break; } case SubClassActions.MARTIAL_PROMOTED: { pUser.SubClass.Promote(pMsg.Subclass); break; } case SubClassActions.INFO: { pUser.SubClass.SendAll(); break; } default: ServerKernel.Log.SaveLog(string.Format("Not handled [2320:{0}]", pMsg.Action), true, "sys"); break; } }
public bool Active(SubClasses sClass) { if (sClass == SubClasses.NONE) { var nsPacket = new MsgSubPro(); nsPacket.Action = SubClassActions.ACTIVATE; nsPacket.Subclass = 0; m_pOwner.Send(nsPacket); return(true); } if (!Professions.ContainsKey(sClass)) { return(false); } m_pOwner.ActiveSubclass = sClass; var sPacket = new MsgSubPro(); sPacket.Action = SubClassActions.ACTIVATE; sPacket.Subclass = sClass; m_pOwner.Send(sPacket); return(true); }
public bool Uplev(SubClasses sClass) { ISubclass iclass; if (!Professions.TryGetValue(sClass, out iclass)) { return(false); } if (iclass.Level + 1 > 10) { return(false); // max level } switch (sClass) { case SubClasses.APOTHECARY: { if (!SpendStudy(LEVEL_STUDY_APOTHECARY[iclass.Level])) { return(false); } break; } case SubClasses.CHI_MASTER: { if (!SpendStudy(LEVEL_STUDY_CHI_MASTER[iclass.Level])) { return(false); } break; } case SubClasses.MARTIAL_ARTIST: { if (!SpendStudy(LEVEL_STUDY_MARTIAL_ARTIST[iclass.Level])) { return(false); } break; } case SubClasses.PERFORMER: { if (!SpendStudy(LEVEL_STUDY_PERFORMER[iclass.Level])) { return(false); } break; } case SubClasses.SAGE: { if (!SpendStudy(LEVEL_STUDY_SAGE[iclass.Level])) { return(false); } break; } case SubClasses.WARLOCK: { if (!SpendStudy(LEVEL_STUDY_WARLOCK[iclass.Level])) { return(false); } break; } case SubClasses.WRANGLER: { if (!SpendStudy(LEVEL_STUDY_WRANGLER[iclass.Level])) { return(false); } break; } default: return(false); } iclass.Level += 1; if (!Save(iclass)) { return(false); } var sPacket = new MsgSubPro(); sPacket.Action = SubClassActions.MARTIAL_UPLEV; sPacket.Subclass = sClass; m_pOwner.Send(sPacket); return(true); }