aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-07-05 22:07:35 +0200
committerShauren <shauren.trinity@gmail.com>2016-07-05 22:07:35 +0200
commitf7883bd5251a759da1ca8be3ba6f6cead36723ec (patch)
treeaffce8f9ad4b343ba936ad6effa2127ab7d831b1 /src/server/game/Entities/Object
parentbc81ae70bc350a3decead610f1b17452bd44eec4 (diff)
Core/Transmog: Implemented transmog collection and updated transmog handling
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index b1a915e474e..028f954744f 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -813,7 +813,7 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player
arrayMask.SetCount(values.size());
for (std::size_t v = 0; v < values.size(); ++v)
{
- if (updateType != UPDATETYPE_VALUES || _dynamicChangesArrayMask[index].GetBit(v))
+ if (updateType == UPDATETYPE_VALUES ? _dynamicChangesArrayMask[index].GetBit(v) : values[v])
{
arrayMask.SetBit(v);
buffer << uint32(values[v]);
@@ -1382,10 +1382,23 @@ void Object::AddDynamicValue(uint16 index, uint32 value)
AddToObjectUpdateIfNeeded();
}
-void Object::RemoveDynamicValue(uint16 index, uint32 /*value*/)
+void Object::RemoveDynamicValue(uint16 index, uint32 value)
{
ASSERT(index < _dynamicValuesCount || PrintIndexError(index, false));
- /// TODO: Research if this is actually needed
+
+ // TODO: Research if this is blizzlike to just set value to 0
+ std::vector<uint32>& values = _dynamicValues[index];
+ for (std::size_t i = 0; i < values.size(); ++i)
+ {
+ if (values[i] == value)
+ {
+ values[i] = 0;
+ _dynamicChangesMask.SetBit(index);
+ _dynamicChangesArrayMask[index].SetBit(i);
+
+ AddToObjectUpdateIfNeeded();
+ }
+ }
}
void Object::ClearDynamicValue(uint16 index)