diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index f8a6fae18cd..2101d44ad6a 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -225,8 +225,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons if (auraData.Remaining) data << int32(*auraData.Remaining); - for (int32 amount : auraData.Points) - data << int32(amount); + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + if (auraData.Points[i].is_initialized()) + data << int32(*auraData.Points[i]); return data; } diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index d673fe9071a..34fce698cf1 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -188,7 +188,7 @@ namespace WorldPackets Optional CastUnit; Optional Duration; Optional Remaining; - std::vector Points; + std::array, 3 /*MAX_SPELL_EFFECTS*/> Points; }; struct AuraInfo diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 0892583fe01..1b484a89e39 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -221,7 +221,7 @@ void AuraApplication::BuildUpdatePacket(WorldPackets::Spells::AuraInfo& auraInfo for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) if (AuraEffect const* effect = aura->GetEffect(i)) if (HasEffect(i)) // Not all of aura's effects have to be applied on every target - auraData.Points.push_back(effect->GetAmount()); + auraData.Points[i] = effect->GetAmount(); } void AuraApplication::ClientUpdate(bool remove)