Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Ты уволен - Страница 2

Упомянутые в теме пользователи:

Страница 2 из 2 ПерваяПервая 12
Показано с 13 по 15 из 15

Тема: Ты уволен

  1. #13
    Повелитель клыкарров Аватар для aa_talanin
    Регистрация
    08.05.2014
    Адрес
    Нижний Новгород
    Сообщений
    2,678
    Поблагодарил(а)
    574
    Получено благодарностей: 352 (сообщений: 231).
    Репутация: 768
    Цитата Сообщение от Ничоси Посмотреть сообщение
    шя выучусь на программиста, подамся в разрабы
    Если ты собрался циркуль чинить, то расскажи пожалуйста, как отсюда выразить формулу рассчета спелл-дамага.

    Скрытый текст

    Код:
    void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage *damageInfo, int32 damage, SpellEntry const *spellInfo, WeaponAttackType attackType, bool crit)
    {
        if (damage < 0)
            return;
    
        Unit *pVictim = damageInfo->target;
        if (!pVictim || !pVictim->isAlive())
            return;
    
        SpellSchoolMask damageSchoolMask = SpellSchoolMask(damageInfo->schoolMask);
        uint32 crTypeMask = pVictim->GetCreatureTypeMask();
        // Check spell crit chance
        //bool crit = isSpellCrit(pVictim, spellInfo, damageSchoolMask, attackType);
        bool blocked = false;
        // Per-school calc
        switch (spellInfo->DmgClass)
        {
            // Melee and Ranged Spells
            case SPELL_DAMAGE_CLASS_RANGED:
            case SPELL_DAMAGE_CLASS_MELEE:
            {
                // Physical Damage
                if (damageSchoolMask & SPELL_SCHOOL_MASK_NORMAL)
                {
                    // Get blocked status
                    blocked = isSpellBlocked(pVictim, spellInfo, attackType);
                }
    
                if (crit)
                {
                    damageInfo->HitInfo |= SPELL_HIT_TYPE_CRIT;
    
                    // Calculate crit bonus
                    uint32 crit_bonus = damage;
                    // Apply crit_damage bonus for melee spells
                    if (Player* modOwner = GetSpellModOwner())
                        modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_CRIT_DAMAGE_BONUS, crit_bonus);
                    damage += crit_bonus;
    
                    // Apply SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE or SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE
                    int32 critPctDamageMod = 0;
                    if (attackType == RANGED_ATTACK)
                        critPctDamageMod += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE);
                    else
                    {
                        critPctDamageMod += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE);
                        critPctDamageMod += GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_DAMAGE_BONUS_MELEE);
                    }
                    // Increase crit damage from SPELL_AURA_MOD_CRIT_PERCENT_VERSUS
                    critPctDamageMod += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_CRIT_PERCENT_VERSUS, crTypeMask);
    
                    if (critPctDamageMod != 0)
                        damage = int32(damage * float((100.0f + critPctDamageMod)/100.0f));
    
                    // Resilience - reduce crit damage
                    if (pVictim->GetTypeId() == TYPEID_PLAYER)
                        damage -= pVictim->ToPlayer()->GetMeleeCritDamageReduction(damage);
                }
                // Spell weapon based damage CAN BE crit & blocked at same time
                if (blocked)
                {
                    damageInfo->blocked = uint32(pVictim->GetShieldBlockValue());
                    if (damage < damageInfo->blocked)
                        damageInfo->blocked = damage;
                    damage -= damageInfo->blocked;
                }
            }
            break;
            // Magical Attacks
            case SPELL_DAMAGE_CLASS_NONE:
            case SPELL_DAMAGE_CLASS_MAGIC:
            {
                // If crit add critical bonus
                if (crit)
                {
                    damageInfo->HitInfo |= SPELL_HIT_TYPE_CRIT;
                    damage = SpellCriticalBonus(spellInfo, damage, pVictim);
                    // Resilience - reduce crit damage
                    if (pVictim->GetTypeId() == TYPEID_PLAYER)
                        damage -= pVictim->ToPlayer()->GetSpellCritDamageReduction(damage);
                }
            }
            break;
        }
    
    
        // damage before absorb/resist calculation
        damageInfo->cleanDamage = damage;
    
        if (damageSchoolMask & SPELL_SCHOOL_MASK_NORMAL  && (spellmgr.GetSpellCustomAttr(spellInfo->Id) & SPELL_ATTR_CU_IGNORE_ARMOR) == 0)
            damage = CalcArmorReducedDamage(pVictim, damage);
    
        // Calculate absorb resist
        if (damage > 0)
        {
            CalcAbsorbResist(pVictim, damageSchoolMask, SPELL_DIRECT_DAMAGE, damage, &damageInfo->absorb, &damageInfo->resist);
            damage-= damageInfo->absorb + damageInfo->resist;
        }
        else
            damage = 0;
        damageInfo->damage = damage;
    }
    [свернуть]

  2. #14
    Заблокирован
    Регистрация
    31.12.2012
    Адрес
    Donetsk
    Сообщений
    220
    Поблагодарил(а)
    51
    Получено благодарностей: 29 (сообщений: 26).
    Репутация: 29
    о, пришел он блять

  3. #15
    Куратор проекта
    Регистрация
    03.01.2012
    Адрес
    Москва
    Сообщений
    28,021
    Поблагодарил(а)
    26
    Получено благодарностей: 53,463 (сообщений: 7,161).
    Репутация: 58807
    Игровые аккаунты автора безвозвратно удалены, форумный профиль отправился в перманент.

  4. 7 пользователей сказали cпасибо n0n4m3 за это полезное сообщение:

    arinoki (10.10.2015),Burrize (10.10.2015),Dargos (12.10.2015),TchalØlmixe (10.10.2015),Царьголд (10.10.2015),Чегевар (12.10.2015),киви (10.10.2015)

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Спет хак уводет рара !
    от vovo13 в разделе Заявки на бан
    Ответов: 4
    Последнее сообщение: 19.08.2012, 22:12
  2. Забыли уволить.
    от нет, это не Аскелл =( в разделе Отклонено
    Ответов: 24
    Последнее сообщение: 12.06.2012, 14:21

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •