1. 14dc6d929f226b86745d7dd0a134f9a866d7f790
  2. src/game/Player.cpp | 17 +++++++++++------
  3. 1 file changed, 11 insertions(+), 6 deletions(-)
  4. diff --git a/src/game/Player.cpp b/src/game/Player.cpp
  5. index 445a8ea..bd59146 100644
  6. --- a/src/game/Player.cpp
  7. +++ b/src/game/Player.cpp
  8. @@ -19909,6 +19909,12 @@ void Player::AddSpellMod(Aura* aura, bool apply)
  9. Modifier const* mod = aura->GetModifier();
  10. uint16 Opcode= (mod->m_auraname == SPELL_AURA_ADD_FLAT_MODIFIER) ? SMSG_SET_FLAT_SPELL_MODIFIER : SMSG_SET_PCT_SPELL_MODIFIER;
  11. + uint32 modTypeCount = 0; // count of mods per one mod->op
  12. + WorldPacket data(Opcode, 4 + 4 + 1 + 1 + 4);
  13. + data << uint32(1); // count of different mod->op's in packet
  14. + size_t writePos = data.wpos();
  15. + data << uint32(modTypeCount);
  16. + data << uint8(mod->m_miscvalue);
  17. for(int eff = 0; eff < 96; ++eff)
  18. {
  19. uint64 _mask = 0;
  20. @@ -19928,15 +19934,14 @@ void Player::AddSpellMod(Aura* aura, bool apply)
  21. val += (*itr)->GetModifier()->m_amount;
  22. }
  23. val += apply ? mod->m_amount : -(mod->m_amount);
  24. - WorldPacket data(Opcode, 4 + 4 + 1 + 1 + 4);
  25. - data << uint32(1);
  26. - data << uint32(1);
  27. - data << uint8(mod->m_miscvalue);
  28. +
  29. data << uint8(eff);
  30. - data << int32(val);
  31. - SendDirectMessage(&data);
  32. + data << float(val);
  33. + ++modTypeCount;
  34. }
  35. }
  36. + data.put<uint32>(writePos, modTypeCount);
  37. + SendDirectMessage(&data);
  38. if (apply)
  39. m_spellMods[mod->m_miscvalue].push_back(aura);