Beispiel #1
0
		/// <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);
			}
		}
Beispiel #2
0
		protected override void OnLevelChanged()
		{
			// scale size, if necessary
			UpdateSize();

			// add/remove spell ranks
			UpdateSpellRanks();

			if (HasPlayerMaster)
			{
				var level = Level;
				if (level >= PetMgr.MinPetTalentLevel)
				{
					// make sure, pet has talent collection
					if (m_petTalents == null)
					{
						m_petTalents = new PetTalentCollection(this);
					}
				}

				if (m_petTalents != null)
				{
					// 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;
				}

				var levelStatInfo = m_entry.GetPetLevelStatInfo(level);
				if (levelStatInfo != null)
				{
					// update pet stats
					ModPetStatsPerLevel(levelStatInfo);
					m_auras.ReapplyAllAuras();
				}
				m_entry.NotifyLeveledChanged(this);
			}
		}