/// <summary> /// Makes this the pet of the given owner /// </summary> internal void MakePet(uint ownerId) { PetRecord = PetMgr.CreatePermanentPetRecord(Entry, ownerId); if (!HasTalents && IsHunterPet) { m_petTalents = new PetTalentCollection(this); } }
protected override void OnLevelChanged() { if (HasPlayerMaster) { // make sure to execute in context AddMessage(() => { // add/remove spell ranks UpdateSpellRanks(); // scale size, if necessary UpdateSize(); var level = Level; // update talents if (level >= PetMgr.MinPetTalentLevel) { // make sure, pet has talent collection if (m_petTalents == null) { m_petTalents = new PetTalentCollection(this); } // update talent points var freeTalentPoints = Talents.GetFreeTalentPointsForLevel(level); if (freeTalentPoints < 0) { // Level was reduced: Remove talent points if (!((Character)m_master).GodMode) { Talents.RemoveTalents(-freeTalentPoints); } freeTalentPoints = 0; } FreeTalentPoints = freeTalentPoints; } // update pet stats var levelStatInfo = m_entry.GetPetLevelStatInfo(level); if (levelStatInfo != null) { ModPetStatsPerLevel(levelStatInfo); m_auras.ReapplyAllAuras(); } }); } m_entry.NotifyLeveledChanged(this); }