Esempio n. 1
0
        static bool DeleteCharAccessories(uint charId)
        {
            try
            {
                SpellRecord.DeleteAll("OwnerId = " + charId);
                AuraRecord.DeleteAll("OwnerId = " + charId);
                ItemRecord.DeleteAll("OwnerId = " + charId);
                SkillRecord.DeleteAll("OwnerId = " + charId);
                SpecProfile.DeleteAll("CharacterId = " + charId);
                ReputationRecord.DeleteAll("OwnerId = " + charId);
                QuestRecord.DeleteAll("OwnerId = " + charId);
                SummonedPetRecord.DeleteAll("OwnerLowId = " + charId);
                PermanentPetRecord.DeleteAll("OwnerLowId = " + charId);

                MailMgr.ReturnValueMailFor(charId);
                MailMessage.DeleteAll("ReceiverId = " + charId);

                RelationMgr.Instance.RemoveRelations(charId);
                InstanceMgr.RemoveLog(charId);
                GroupMgr.Instance.RemoveOfflineCharacter(charId);
                AchievementRecord.DeleteAll("CharacterId = " + charId);
                AchievementProgressRecord.DeleteAll("CharacterId = " + charId);

                return(true);
            }
            catch (Exception ex)
            {
                LogUtil.ErrorException(ex, "Failed to delete character with Id: " + charId);

                return(false);
            }
        }
Esempio n. 2
0
        private void LoadPets()
        {
            IPetRecord activePetRecord = null;

            // load info for summoned pets
            if (m_record.PetSummonedCount > 0)
            {
                var pets = SummonedPetRecord.LoadSummonedPetRecords(m_record.EntityLowId);
                foreach (var pet in pets)
                {
                    if (pet.IsActivePet)
                    {
                        activePetRecord = pet;
                    }
                    SummonedPetRecords.Add(pet);
                }
            }

            // load info for permanent pets
            if (m_record.PetCount > 0)
            {
                var pets = PermanentPetRecord.LoadPermanentPetRecords(m_record.EntityLowId);
                foreach (var pet in pets)
                {
                    if (pet.IsActivePet)
                    {
                        activePetRecord = pet;
                    }
                    StabledPetRecords.Add(pet);
                }
            }


            // load active pet
            if (m_record.PetEntryId != 0 && IsPetActive)
            {
                if (activePetRecord != null)
                {
                    var entry = activePetRecord.Entry;
                    if (entry == null)
                    {
                        log.Warn("{0} has invalid PetEntryId: {1} ({2})", this, m_record.PetEntryId, (uint)m_record.PetEntryId);

                        // put back for later (maybe NPCs were not loaded or loaded incorrectly):
                        AddPetRecord(activePetRecord);
                    }
                    else
                    {
                        SpawnActivePet(activePetRecord);
                    }
                }
                else
                {
                    // active Pet does not exist in DB
                    m_record.PetEntryId  = 0;
                    m_record.IsPetActive = false;
                }
            }
        }