Esempio n. 1
0
        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);
        }