Esempio n. 1
0
        internal static void UpdateRangedAttackPower(this Unit unit)
        {
            if (!(unit is Character))
            {
                return;
            }
            Character character = (Character)unit;
            BaseClass baseClass = character.Archetype.Class;
            int       level     = character.Level;
            int       agility   = character.Agility;
            int       strength  = unit.Strength;
            int       rangedAp  = baseClass.CalculateRangedAP(level, strength, agility);

            if (character.m_MeleeAPModByStat != null)
            {
                for (StatType stat = StatType.Strength; stat < StatType.End; ++stat)
                {
                    rangedAp += (character.GetRangedAPModByStat(stat) * character.GetTotalStatValue(stat) + 50) / 100;
                }
            }

            character.RangedAttackPower = rangedAp;
            NPC activePet = character.ActivePet;

            if (activePet != null && activePet.IsHunterPet)
            {
                activePet.UpdateMeleeAttackPower();
            }
            unit.UpdateRangedDamage();
        }