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; } } }
void AddPetRecord(IPetRecord record) { if (record is SummonedPetRecord) { SummonedPetRecords.Add((SummonedPetRecord)record); } else if (record is PermanentPetRecord) { StabledPetRecords.Add((PermanentPetRecord)record); } else { log.Warn("Unclassified PetRecord: " + record); } }