Цитата:
Сообщение от 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);