mirror of
https://github.com/mangosfour/server.git
synced 2026-01-01 16:37:12 +00:00
[0179] Use aura holder plts in visible aura structures instead of uint32's.
Signed-off-by: Yaki Khadafi <ElSolDolLo@gmail.com>
This commit is contained in:
parent
5bb39bc73a
commit
8d93e79e29
6 changed files with 16 additions and 17 deletions
|
|
@ -25,6 +25,7 @@
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "SpellAuras.h"
|
||||||
#include "Group.h"
|
#include "Group.h"
|
||||||
#include "SocialMgr.h"
|
#include "SocialMgr.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
|
@ -736,7 +737,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
|
||||||
{
|
{
|
||||||
if (auramask & (uint64(1) << i))
|
if (auramask & (uint64(1) << i))
|
||||||
{
|
{
|
||||||
*data << uint32(player->GetVisibleAura(i));
|
*data << uint32(player->GetVisibleAura(i)->GetId());
|
||||||
*data << uint8(1);
|
*data << uint8(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -812,7 +813,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
|
||||||
{
|
{
|
||||||
if (auramask & (uint64(1) << i))
|
if (auramask & (uint64(1) << i))
|
||||||
{
|
{
|
||||||
*data << uint32(pet->GetVisibleAura(i));
|
*data << uint32(pet->GetVisibleAura(i)->GetId());
|
||||||
*data << uint8(1);
|
*data << uint8(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -893,7 +894,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recv_data)
|
||||||
data << uint64(auramask); // placeholder
|
data << uint64(auramask); // placeholder
|
||||||
for (uint8 i = 0; i < MAX_AURAS; ++i)
|
for (uint8 i = 0; i < MAX_AURAS; ++i)
|
||||||
{
|
{
|
||||||
if (uint32 aura = player->GetVisibleAura(i))
|
if (uint32 aura = player->GetVisibleAura(i)->GetId())
|
||||||
{
|
{
|
||||||
auramask |= (uint64(1) << i);
|
auramask |= (uint64(1) << i);
|
||||||
data << uint32(aura);
|
data << uint32(aura);
|
||||||
|
|
@ -919,7 +920,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recv_data)
|
||||||
data << uint64(petauramask); // placeholder
|
data << uint64(petauramask); // placeholder
|
||||||
for (uint8 i = 0; i < MAX_AURAS; ++i)
|
for (uint8 i = 0; i < MAX_AURAS; ++i)
|
||||||
{
|
{
|
||||||
if (uint32 petaura = pet->GetVisibleAura(i))
|
if (uint32 petaura = pet->GetVisibleAura(i)->GetId())
|
||||||
{
|
{
|
||||||
petauramask |= (uint64(1) << i);
|
petauramask |= (uint64(1) << i);
|
||||||
data << uint32(petaura);
|
data << uint32(petaura);
|
||||||
|
|
|
||||||
|
|
@ -20827,11 +20827,7 @@ void Player::SendAurasForTarget(Unit* target)
|
||||||
|
|
||||||
Unit::VisibleAuraMap const& visibleAuras = target->GetVisibleAuras();
|
Unit::VisibleAuraMap const& visibleAuras = target->GetVisibleAuras();
|
||||||
for (Unit::VisibleAuraMap::const_iterator itr = visibleAuras.begin(); itr != visibleAuras.end(); ++itr)
|
for (Unit::VisibleAuraMap::const_iterator itr = visibleAuras.begin(); itr != visibleAuras.end(); ++itr)
|
||||||
{
|
itr->second->BuildUpdatePacket(data);
|
||||||
SpellAuraHolderConstBounds bounds = target->GetSpellAuraHolderBounds(itr->second);
|
|
||||||
for (SpellAuraHolderMap::const_iterator iter = bounds.first; iter != bounds.second; ++iter)
|
|
||||||
iter->second->BuildUpdatePacket(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8984,7 +8984,7 @@ void SpellAuraHolder::_RemoveSpellAuraHolder()
|
||||||
if (slot >= MAX_AURAS) // slot not set
|
if (slot >= MAX_AURAS) // slot not set
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_target->GetVisibleAura(slot) == 0)
|
if (!m_target->GetVisibleAura(slot))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// unregister aura diminishing (and store last time)
|
// unregister aura diminishing (and store last time)
|
||||||
|
|
@ -9278,6 +9278,8 @@ void SpellAuraHolder::BuildUpdatePacket(WorldPacket& data) const
|
||||||
if (auraFlags & (1 << i))
|
if (auraFlags & (1 << i))
|
||||||
if (Aura const* aura = m_auras[i])
|
if (Aura const* aura = m_auras[i])
|
||||||
data << int32(aura->GetModifier()->m_amount);
|
data << int32(aura->GetModifier()->m_amount);
|
||||||
|
else
|
||||||
|
data << int32(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@ class MANGOS_DLL_SPEC SpellAuraHolder
|
||||||
|
|
||||||
time_t GetAuraApplyTime() const { return m_applyTime; }
|
time_t GetAuraApplyTime() const { return m_applyTime; }
|
||||||
|
|
||||||
void SetVisibleAura(bool remove) { m_target->SetVisibleAura(m_auraSlot, remove ? 0 : GetId()); }
|
void SetVisibleAura(bool remove) { m_target->SetVisibleAura(m_auraSlot, remove ? NULL : this); }
|
||||||
void SetRemoveMode(AuraRemoveMode mode) { m_removeMode = mode; }
|
void SetRemoveMode(AuraRemoveMode mode) { m_removeMode = mode; }
|
||||||
void SetLoadedState(ObjectGuid const& casterGUID, ObjectGuid const& itemGUID, uint32 stackAmount, uint32 charges, int32 maxduration, int32 duration)
|
void SetLoadedState(ObjectGuid const& casterGUID, ObjectGuid const& itemGUID, uint32 stackAmount, uint32 charges, int32 maxduration, int32 duration)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1128,7 +1128,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
typedef std::list<Aura*> AuraList;
|
typedef std::list<Aura*> AuraList;
|
||||||
typedef std::list<DiminishingReturn> Diminishing;
|
typedef std::list<DiminishingReturn> Diminishing;
|
||||||
typedef std::set<uint32> ComboPointHolderSet;
|
typedef std::set<uint32> ComboPointHolderSet;
|
||||||
typedef std::map<uint8, uint32> VisibleAuraMap;
|
typedef std::map<uint8, SpellAuraHolder*> VisibleAuraMap;
|
||||||
typedef std::map<SpellEntry const*, ObjectGuid> SingleCastSpellTargetMap;
|
typedef std::map<SpellEntry const*, ObjectGuid> SingleCastSpellTargetMap;
|
||||||
|
|
||||||
virtual ~Unit();
|
virtual ~Unit();
|
||||||
|
|
@ -1728,19 +1728,19 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
void removeHatedBy(HostileReference* /*pHostileReference*/) { /* nothing to do yet */ }
|
void removeHatedBy(HostileReference* /*pHostileReference*/) { /* nothing to do yet */ }
|
||||||
HostileRefManager& getHostileRefManager() { return m_HostileRefManager; }
|
HostileRefManager& getHostileRefManager() { return m_HostileRefManager; }
|
||||||
|
|
||||||
uint32 GetVisibleAura(uint8 slot) const
|
SpellAuraHolder* GetVisibleAura(uint8 slot) const
|
||||||
{
|
{
|
||||||
VisibleAuraMap::const_iterator itr = m_visibleAuras.find(slot);
|
VisibleAuraMap::const_iterator itr = m_visibleAuras.find(slot);
|
||||||
if (itr != m_visibleAuras.end())
|
if (itr != m_visibleAuras.end())
|
||||||
return itr->second;
|
return itr->second;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void SetVisibleAura(uint8 slot, uint32 spellid)
|
void SetVisibleAura(uint8 slot, SpellAuraHolder* holder)
|
||||||
{
|
{
|
||||||
if (spellid == 0)
|
if (!holder)
|
||||||
m_visibleAuras.erase(slot);
|
m_visibleAuras.erase(slot);
|
||||||
else
|
else
|
||||||
m_visibleAuras[slot] = spellid;
|
m_visibleAuras[slot] = holder;
|
||||||
}
|
}
|
||||||
VisibleAuraMap const& GetVisibleAuras() const { return m_visibleAuras; }
|
VisibleAuraMap const& GetVisibleAuras() const { return m_visibleAuras; }
|
||||||
uint8 GetVisibleAurasCount() const { return m_visibleAuras.size(); }
|
uint8 GetVisibleAurasCount() const { return m_visibleAuras.size(); }
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "0177"
|
#define REVISION_NR "0179"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue