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 SpawnActivePet(IPetRecord record) { //AddPostUpdateMessage(() => AddMessage(() => { var petSettings = m_record as IActivePetSettings; var pet = SpawnPet(record, ref m_position, petSettings.PetDuration); pet.CreationSpellId = petSettings.PetSummonSpellId; pet.Health = petSettings.PetHealth; pet.Power = petSettings.PetPower; }); }
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); } }
public NPC SpawnPet(IPetRecord record, ref Vector3 position, int duration) { var pet = CreateMinion(record.Entry, duration); pet.PetRecord = record; pet.Position = position; if (record.PetNumber != 0) { //pet.PetNumber = record.PetNumber; pet.EntityId = new EntityId(NPCMgr.GenerateUniqueLowId(), record.PetNumber, HighId.UnitPet); } InitializeMinion(pet); if (IsPetActive) { m_Map.AddObject(pet); } return(pet); }
public NPC SpawnPet(IPetRecord record, int duration) { return(SpawnPet(record, ref m_position, duration)); }
public NPC SpawnPet(IPetRecord record) { return(SpawnPet(record, ref m_position, 0)); }