Показать сообщение отдельно
Старый 30.05.2010, 13:08   #7
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от PSZ Посмотреть сообщение
Еще причина в том, что сейчас при бое с мобами учитывается ресайленс. Ресайленс должен учитываться только при бое с игроками. Точно так же, как дефенс должен учитываться только при бое с мобами, но не при бое с игроками.
Хотел как раз написать такой патч...
В каком месте он учитывается-то?

При мили/рендж атаке вот этот код вызывается для босса на pVictim - игрока. Проверка есть.
Код:
void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *damageInfo, WeaponAttackType attackType)
{
...
    // only from players
    if (GetTypeId() == TYPEID_PLAYER)
    {
        uint32 redunction_affected_damage = CalcNotIgnoreDamageRedunction(damageInfo->damage,damageInfo->damageSchoolMask);
        uint32 resilienceReduction;
        if (attackType != RANGED_ATTACK)
            resilienceReduction = pVictim->GetMeleeDamageReduction(redunction_affected_damage);
        else
            resilienceReduction = pVictim->GetRangedDamageReduction(redunction_affected_damage);
        damageInfo->damage      -= resilienceReduction;
        damageInfo->cleanDamage += resilienceReduction;
    }
А вот этот код для спеллов. Проверка есть.
Код:
void Unit::CalculateSpellDamage(SpellNonMeleeDamage *damageInfo, int32 damage, SpellEntry const *spellInfo, WeaponAttackType attackType)
{
...
    // only from players
    if (GetTypeId() == TYPEID_PLAYER)
    {
        uint32 redunction_affected_damage = CalcNotIgnoreDamageRedunction(damage,damageSchoolMask);
        damage -= pVictim->GetSpellDamageReduction(redunction_affected_damage);
    }
Далее для дотов и лич эффектов, с проверками.
Код:
void Aura::PeriodicTick()
...
        case SPELL_AURA_PERIODIC_DAMAGE:
        case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
...
            // only from players
            // FIXME: need use SpellDamageBonus instead?
            if (IS_PLAYER_GUID(m_caster_guid))
                pdamage -= m_target->GetSpellDamageReduction(pdamage);
...
        case SPELL_AURA_PERIODIC_LEECH:
            // only from players
            // FIXME: need use SpellDamageBonus instead?
            if (IS_PLAYER_GUID(m_caster_guid))
                pdamage -= m_target->GetSpellDamageReduction(pdamage);
LordJZ вне форума   Ответить с цитированием