Цитата:
Сообщение от wk23
- // only if in front
- if (pVictim->HasInArc(M_PI_F,this))
- {
- int32 deflect_chance = pVictim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS)*1 00;
- tmp+=deflect_chance;
- if (roll < tmp)
- return SPELL_MISS_DEFLECT;
- }
return SPELL_MISS_NONE;
- }
// Check for attack from behind
if (!pVictim->HasInArc(M_PI_F,this))
|
Вы хоть читали что обозначено под п.5. (Пункт 5)?
Я имею ввиду, что не получается заставить парировать атаки со спины (хотя это противоречит самому понятию парирования, но... близы...). Раньше (мой патч для 3.2.2 мангоса) с этим справлялся
Код:
- canParry = false;
+ if (!pVictim->HasAura(19263))
+ canParry = false;
Но в данный момент не помагает.
Добавлено:
Судя по всему проблема в MeleeHitOutcome Unit::RollMeleeOutcomeAgainst
Код:
// check if attack comes from behind, nobody can parry or block if attacker is behind
if (!pVictim->HasInArc(M_PI_F,this))
{
DEBUG_LOG ("RollMeleeOutcomeAgainst: attack came from behind.");
}
else
{
....
Исправляется так:
Код:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index dbb8f3e..1b4ede0 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -2579,7 +2579,7 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttack
// parry & block chances
// check if attack comes from behind, nobody can parry or block if attacker is behind
- if (!pVictim->HasInArc(M_PI_F,this))
+ if (!pVictim->HasInArc(M_PI_F,this) && !pVictim->HasAura(19263))
{
DEBUG_LOG ("RollMeleeOutcomeAgainst: attack came from behind.");
}
Но, это немного нарушает логику работы. Т.е. мы позволяем также и блокировать атаки если имеем ауру 19263, но ведь этот спелл доступен только охотникам, у которых нет блока, собственно не критично.
Обновлен первый пост, теперь парироваться будут атаки со всех сторон