diff options
Diffstat (limited to 'src/game/Object.cpp')
-rw-r--r-- | src/game/Object.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 56d52f5e49f..7adc7d306bb 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -526,9 +526,16 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask { if( updateMask->GetBit( index ) ) { - // remove custom flag before send if( index == UNIT_NPC_FLAGS ) - *data << uint32(m_uint32Values[ index ] & ~(UNIT_NPC_FLAG_GUARD + UNIT_NPC_FLAG_OUTDOORPVP)); + { + // remove custom flag before sending + uint32 appendValue = m_uint32Values[ index ] & ~(UNIT_NPC_FLAG_GUARD + UNIT_NPC_FLAG_OUTDOORPVP); + + if (GetTypeId() == TYPEID_UNIT && !target->canSeeSpellClickOn((Creature*)this)) + appendValue &= ~UNIT_NPC_FLAG_SPELLCLICK; + + *data << uint32(appendValue); + } // FIXME: Some values at server stored in float format but must be sent to client in uint32 format else if(index >= UNIT_FIELD_BASEATTACKTIME && index <= UNIT_FIELD_RANGEDATTACKTIME) { |