diff options
| author | Blaymoira <none@none> | 2008-12-11 21:32:08 +0100 |
|---|---|---|
| committer | Blaymoira <none@none> | 2008-12-11 21:32:08 +0100 |
| commit | 236553f40804c30d4ed8f1a29e01a76dd7be809a (patch) | |
| tree | 5b7e5d38aa0e1e002a932fb86d2c01e0289b1599 /src/game/SpellAuras.cpp | |
| parent | 5d003e3a6079388149473f0a3da6089b47404a29 (diff) | |
| parent | f2028e1583bf935fc3d096748d5b07428cdcaa00 (diff) | |
*Merged 459
--HG--
branch : trunk
Diffstat (limited to 'src/game/SpellAuras.cpp')
| -rw-r--r-- | src/game/SpellAuras.cpp | 109 |
1 files changed, 16 insertions, 93 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 794a54f6788..9f8323c735c 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2079,6 +2079,13 @@ void Aura::HandleAuraDummy(bool apply, bool Real) } return; } + + // electrical storm safe zone + if (GetId() == 44007) + { + m_target->ApplySpellImmune(44007, IMMUNITY_ID, 43657, apply); + return; + } break; } case SPELLFAMILY_MAGE: @@ -3040,7 +3047,8 @@ void Aura::HandleModConfuse(bool apply, bool Real) if(!Real) return; - m_target->SetConfused(apply, GetCasterGUID(), GetId()); + //m_target->SetConfused(apply, GetCasterGUID(), GetId()); + m_target->SetControlled(apply, UNIT_STAT_CONFUSED); } void Aura::HandleModFear(bool apply, bool Real) @@ -3048,7 +3056,8 @@ void Aura::HandleModFear(bool apply, bool Real) if (!Real) return; - m_target->SetFeared(apply, GetCasterGUID(), GetId()); + //m_target->SetFeared(apply, GetCasterGUID(), GetId()); + m_target->SetControlled(apply, UNIT_STAT_FLEEING); } void Aura::HandleFeignDeath(bool apply, bool Real) @@ -3146,46 +3155,7 @@ void Aura::HandleAuraModStun(bool apply, bool Real) if(!Real) return; - if (apply) - { - m_target->addUnitState(UNIT_STAT_STUNNED); - m_target->SetUInt64Value(UNIT_FIELD_TARGET, 0); - - m_target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_ROTATE); - m_target->CastStop(m_target->GetGUID() == GetCasterGUID() ? GetId() : 0); - - // Creature specific - if(m_target->GetTypeId() != TYPEID_PLAYER) - ((Creature*)m_target)->StopMoving(); - else - m_target->SetUnitMovementFlags(0); //Clear movement flags - - WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8); - - data.append(m_target->GetPackGUID()); - data << uint32(0); - m_target->SendMessageToSet(&data,true); - } - else - { - // Real remove called after current aura remove from lists, check if other similar auras active - if(m_target->HasAuraType(SPELL_AURA_MOD_STUN)) - return; - - m_target->clearUnitState(UNIT_STAT_STUNNED); - m_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_ROTATE); - - if(!m_target->hasUnitState(UNIT_STAT_ROOT)) // prevent allow move if have also root effect - { - if(m_target->getVictim() && m_target->isAlive()) - m_target->SetUInt64Value(UNIT_FIELD_TARGET,m_target->getVictim()->GetGUID() ); - - WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 8+4); - data.append(m_target->GetPackGUID()); - data << uint32(0); - m_target->SendMessageToSet(&data,true); - } - } + m_target->SetControlled(apply, UNIT_STAT_STUNNED); } void Aura::HandleModStealth(bool apply, bool Real) @@ -3355,55 +3325,7 @@ void Aura::HandleAuraModRoot(bool apply, bool Real) if(!Real) return; - uint32 apply_stat = UNIT_STAT_ROOT; - if (apply) - { - m_target->addUnitState(UNIT_STAT_ROOT); - m_target->SetUInt64Value (UNIT_FIELD_TARGET, 0); - // probably wrong - m_target->SetFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); - - //Save last orientation - if( m_target->getVictim() ) - m_target->SetOrientation(m_target->GetAngle(m_target->getVictim())); - - if(m_target->GetTypeId() == TYPEID_PLAYER) - { - WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10); - data.append(m_target->GetPackGUID()); - data << (uint32)2; - m_target->SendMessageToSet(&data,true); - - //Clear unit movement flags - m_target->SetUnitMovementFlags(0); - } - else - ((Creature *)m_target)->StopMoving(); - } - else - { - // Real remove called after current aura remove from lists, check if other similar auras active - if(m_target->HasAuraType(SPELL_AURA_MOD_ROOT)) - return; - - m_target->clearUnitState(UNIT_STAT_ROOT); - // probably wrong - m_target->RemoveFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); - - if(!m_target->hasUnitState(UNIT_STAT_STUNNED)) // prevent allow move if have also stun effect - { - if(m_target->getVictim() && m_target->isAlive()) - m_target->SetUInt64Value (UNIT_FIELD_TARGET,m_target->getVictim()->GetGUID() ); - - if(m_target->GetTypeId() == TYPEID_PLAYER) - { - WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 10); - data.append(m_target->GetPackGUID()); - data << (uint32)2; - m_target->SendMessageToSet(&data,true); - } - } - } + m_target->SetControlled(apply, UNIT_STAT_ROOT); } void Aura::HandleAuraModSilence(bool apply, bool Real) @@ -6231,10 +6153,11 @@ void Aura::HandlePreventFleeing(bool apply, bool Real) Unit::AuraList const& fearAuras = m_target->GetAurasByType(SPELL_AURA_MOD_FEAR); if( !fearAuras.empty() ) { - if (apply) + m_target->SetControlled(!apply, UNIT_STAT_FLEEING); + /*if (apply) m_target->SetFeared(false, fearAuras.front()->GetCasterGUID()); else - m_target->SetFeared(true); + m_target->SetFeared(true);*/ } } |
