Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Message(ClientMessage.CreateCharacter)]
- public static void OnCreateCharacter(CreateCharacter createCharacter, CharacterSession session)
- {
- var createChar = new CreateChar { Code = CharCreateCode.InProgress };
- if (!ClientDB.ChrRaces.Any(c => c.Id == createCharacter.RaceID) || !ClientDB.ChrClasses.Any(c => c.Id == createCharacter.ClassID))
- createChar.Code = CharCreateCode.Failed;
- else if (!ClientDB.CharBaseInfo.Any(c => c.RaceId == createCharacter.RaceID && c.ClassId == createCharacter.ClassID))
- createChar.Code = CharCreateCode.Failed;
- else if (DB.Character.Any<Character>(c => c.Name == createCharacter.Name))
- createChar.Code = CharCreateCode.NameInUse;
- else if (createChar.Code == CharCreateCode.InProgress)
- {
- if (createCharacter.TemplateSetID != 0)
- {
- var accTemplate = session.GameAccount.GameAccountCharacterTemplates.Any(t => t.SetId == createCharacter.TemplateSetID);
- var realmTemplate = session.Realm.RealmCharacterTemplates.Any(t => t.SetId == createCharacter.TemplateSetID);
- if (accTemplate || realmTemplate)
- {
- var template = DB.Character.Single<CharacterTemplateSet>(s => s.Id == createCharacter.TemplateSetID);
- // Not implemented = creation failed
- createChar.Code = CharCreateCode.Failed;
- }
- else
- createChar.Code = CharCreateCode.Failed;
- }
- else
- {
- var creationData = DB.Character.Single<CharacterCreationData>(d => d.Race == createCharacter.RaceID && d.Class == createCharacter.ClassID);
- if (creationData != null)
- {
- var newChar = new Character
- {
- Name = createCharacter.Name,
- GameAccountId = session.GameAccount.Id,
- RealmId = session.Realm.Id,
- Race = createCharacter.RaceID,
- Class = createCharacter.ClassID,
- Sex = createCharacter.SexID,
- Skin = createCharacter.SkinID,
- Face = createCharacter.FaceID,
- HairStyle = createCharacter.HairStyleID,
- HairColor = createCharacter.HairColorID,
- FacialHairStyle = createCharacter.FacialHairStyleID,
- Level = 1,
- Map = creationData.Map,
- X = creationData.X,
- Y = creationData.Y,
- Z = creationData.Z,
- O = creationData.O,
- CharacterFlags = CharacterFlags.Decline,
- FirstLogin = true
- };
- if (DB.Character.Add(newChar))
- {
- createChar.Code = CharCreateCode.Success;
- Manager.Character.LearnStartAbilities(newChar);
- }
- else
- createChar.Code = CharCreateCode.Success;
- }
- else
- createChar.Code = CharCreateCode.Success;
- }
- }
- session.Send(createChar);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement