mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Update to Trinity 863.
--HG-- branch : trunk
This commit is contained in:
@@ -653,6 +653,38 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask
|
||||
else
|
||||
*data << (m_uint32Values[ index ] & ~UNIT_DYNFLAG_OTHER_TAGGER);
|
||||
}
|
||||
// FG: pretend that OTHER players in own group are friendly ("blue")
|
||||
else if(index == UNIT_FIELD_BYTES_2 || index == UNIT_FIELD_FACTIONTEMPLATE)
|
||||
{
|
||||
bool ch = false;
|
||||
if(target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER && target != this)
|
||||
{
|
||||
if(target->IsInSameGroupWith((Player*)this) || target->IsInSameRaidWith((Player*)this))
|
||||
{
|
||||
if(index == UNIT_FIELD_BYTES_2)
|
||||
{
|
||||
DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (flag)", target->GetName(), ((Player*)this)->GetName());
|
||||
*data << ( m_uint32Values[ index ] & (UNIT_BYTE2_FLAG_SANCTUARY << 8) ); // this flag is at uint8 offset 1 !!
|
||||
ch = true;
|
||||
}
|
||||
else if(index == UNIT_FIELD_FACTIONTEMPLATE)
|
||||
{
|
||||
FactionTemplateEntry const *ft1, *ft2;
|
||||
ft1 = ((Player*)this)->getFactionTemplateEntry();
|
||||
ft2 = ((Player*)target)->getFactionTemplateEntry();
|
||||
if(ft1 && ft2 && !ft1->IsFriendlyTo(*ft2))
|
||||
{
|
||||
uint32 faction = ((Player*)target)->getFaction(); // pretend that all other HOSTILE players have own faction, to allow follow, heal, rezz (trade wont work)
|
||||
DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (faction %u)", target->GetName(), ((Player*)this)->GetName(), faction);
|
||||
*data << uint32(faction);
|
||||
ch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!ch)
|
||||
*data << m_uint32Values[ index ];
|
||||
}
|
||||
else
|
||||
{
|
||||
// send in current format (float as float, uint32 as uint32)
|
||||
@@ -1324,6 +1356,19 @@ void WorldObject::SendPlaySound(uint32 Sound, bool OnlySelf)
|
||||
SendMessageToSet( &data, true ); // ToSelf ignored in this case
|
||||
}
|
||||
|
||||
void Object::ForceValuesUpdateAtIndex(uint32 i)
|
||||
{
|
||||
m_uint32Values_mirror[i] = GetUInt32Value(i) + 1; // makes server think the field changed
|
||||
if(m_inWorld)
|
||||
{
|
||||
if(!m_objectUpdated)
|
||||
{
|
||||
ObjectAccessor::Instance().AddUpdateObject(this);
|
||||
m_objectUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Trinity
|
||||
{
|
||||
class MessageChatLocaleCacheDo
|
||||
|
||||
Reference in New Issue
Block a user