PDA

Просмотр полной версии : [patch] Bestial Wrath


Den
26.08.2011, 19:41
Как работало в 3.3.5 на офе:
1) При использовании должно снимать весь контроль над охотником или петом.
2) На время действия дает полный иммунитет к контролю, для охотника и пета.
Описание бага есть вот тут:
http://getmangos.com/community/topic/13593/hunter-bm-bestial-wrath-bug/

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 92c5762..a9ab065 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -4912,6 +4912,27 @@ void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)
// in DBC wrong mechanic immune since 3.0.x
if (GetId() == 25771)
misc = MECHANIC_IMMUNE_SHIELD;
+ // Bestial Wrath
+ // in DBC empty mechanic immune
+ else if (GetId() == 19574 || GetId() == 34471)
+ {
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_FEAR, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_STUN, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_KNOCKOUT, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_DAZE, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_CHARM, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_PACIFY, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SAPPED, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_BANISH, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_DISORIENTED, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SHACKLE, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_ROOT, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SLEEP, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_HORROR, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_POLYMORPH, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SNARE, apply);
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_FREEZE, apply);
+ }

Unit *target = GetTarget();

@@ -4920,7 +4941,7 @@ void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)
uint32 mechanic = 1 << (misc-1);

// immune movement impairment and loss of control (spell data have special structure for mark this case)
- if (IsSpellRemoveAllMovementAndControlLossEffects(Get SpellProto()))
+ if (IsSpellRemoveAllMovementAndControlLossEffects(Get SpellProto()) || GetId() == 19574 || GetId() == 34471)
mechanic=IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CO NTROL_MASK;

target->RemoveAurasAtMechanicImmunity(mechanic, GetId());