diff options
Diffstat (limited to 'src/game/Player.cpp')
| -rw-r--r-- | src/game/Player.cpp | 59 | 
1 files changed, 31 insertions, 28 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 082e4bc41a7..8a2a9982d4e 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -328,7 +328,7 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this)      // group is initialized in the reference constructor      SetGroupInvite(NULL);      m_groupUpdateMask = 0; -    m_auraUpdateMask = 0; +    m_auraRaidUpdateMask = 0;      duel = NULL; @@ -4020,8 +4020,7 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness)              {                  if(Aura* Aur = GetAura(SPELL_ID_PASSIVE_RESURRECTION_SICKNESS,i))                  { -                    Aur->SetAuraDuration(delta*1000); -                    Aur->SendAuraUpdate(false); +                    Aur->SetAuraDurationAndUpdate(delta*1000);                  }              }          } @@ -18699,9 +18698,9 @@ void Player::SendUpdateToOutOfRangeGroupMembers()          group->UpdatePlayerOutOfRange(this);      m_groupUpdateMask = GROUP_UPDATE_FLAG_NONE; -    m_auraUpdateMask = 0; +    m_auraRaidUpdateMask = 0;      if(Pet *pet = GetPet()) -        pet->ResetAuraUpdateMask(); +        pet->ResetAuraUpdateMaskForRaid();  }  void Player::SendTransferAborted(uint32 mapid, uint8 reason, uint8 arg) @@ -18926,35 +18925,39 @@ void Player::SendAurasForTarget(Unit *target)      Unit::VisibleAuraMap const *visibleAuras = target->GetVisibleAuras();      for(Unit::VisibleAuraMap::const_iterator itr = visibleAuras->begin(); itr != visibleAuras->end(); ++itr)      { -        for(uint32 j = 0; j < 3; ++j) +        Aura * aura=NULL; +        for (uint8 i=0 ; i<3; i++)          { -            if(Aura *aura = target->GetAura(itr->second, j)) +            if (itr->second.m_slotAuras[i])              { -                data << uint8(aura->GetAuraSlot()); -                data << uint32(aura->GetId()); +                aura=itr->second.m_slotAuras[i]; +                break; +            } +        } +        if(aura) +        { +            data << uint8(aura->GetAuraSlot()); +            data << uint32(aura->GetId()); -                if(aura->GetId()) +            if(aura->GetId()) +            { +                // flags +                data << itr->second.m_Flags; +                // level +                data << itr->second.m_Level; +                // charges +                data << uint8(aura->GetAuraCharges()); + +                if(!(itr->second.m_Flags & AFLAG_NOT_CASTER))                  { -                    uint8 auraFlags = aura->GetAuraFlags(); -                    // flags -                    data << uint8(auraFlags); -                    // level -                    data << uint8(aura->GetAuraLevel()); -                    // charges -                    data << uint8(aura->GetAuraCharges()); - -                    if(!(auraFlags & AFLAG_NOT_CASTER)) -                    { -                        data << uint8(0);                   // packed GUID of someone (caster?) -                    } +                    data << uint8(0);                   // packed GUID of someone (caster?) +                } -                    if(auraFlags & AFLAG_DURATION)          // include aura duration -                    { -                        data << uint32(aura->GetAuraMaxDuration()); -                        data << uint32(aura->GetAuraDuration()); -                    } +                if(itr->second.m_Flags & AFLAG_DURATION)          // include aura duration +                { +                    data << uint32(aura->GetAuraMaxDuration()); +                    data << uint32(aura->GetAuraDuration());                  } -                break;              }          }      }  | 
