narrow-television-26593
12/21/2025, 1:37 AMcpp
void GameObject::SetDye(int32 dyeId1, int32 dyeId2, int32 dyeId3)
{
if (!m_housingDecorData.has_value())
m_entityFragments.Add(WowCS::EntityFragment::FHousingDecor_C, IsInWorld());
auto gameObjectGuid = GetGUID();
auto decorGuid = m_housingDecorData ? m_housingDecorData->DecorGUID : ObjectGuid::Empty;
if (decorGuid == ObjectGuid::Empty)
decorGuid = ObjectGuid::Create<HighGuid::Housing>(HousingSubType::Decor, gameObjectGuid.GetRealmId(), 378, 0, gameObjectGuid.GetCounter());
SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_housingDecorData, 0).ModifyValue(&UF::HousingDecorData::DecorGUID), decorGuid);
SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_housingDecorData, 0).ModifyValue(&UF::HousingDecorData::AttachParentGUID), ObjectGuid::Empty);
SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_housingDecorData, 0).ModifyValue(&UF::HousingDecorData::Flags), 0);
SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_housingDecorData, 0).ModifyValue(&UF::HousingDecorData::Field_68), ObjectGuid::Empty);
SetUpdateFieldValue(
m_values
.ModifyValue(&GameObject::m_housingDecorData, 0)
.ModifyValue(&UF::HousingDecorData::PersistedData, 0)
.ModifyValue(&UF::DecorStoragePersistedData::HouseGUID),
ObjectGuid::Empty);
SetUpdateFieldValue(
m_values
.ModifyValue(&GameObject::m_housingDecorData, 0)
.ModifyValue(&UF::HousingDecorData::PersistedData, 0)
.ModifyValue(&UF::DecorStoragePersistedData::Field_20),
0);
SetUpdateFieldValue(
m_values
.ModifyValue(&GameObject::m_housingDecorData, 0)
.ModifyValue(&UF::HousingDecorData::PersistedData, 0)
.ModifyValue(&UF::DecorStoragePersistedData::Dyes, 0)
.ModifyValue(&UF::DecorStoragePersistedDataDyes::DyeColorID, 0),
dyeId1);
SetUpdateFieldValue(
m_values
.ModifyValue(&GameObject::m_housingDecorData, 0)
.ModifyValue(&UF::HousingDecorData::PersistedData, 0)
.ModifyValue(&UF::DecorStoragePersistedData::Dyes, 0)
.ModifyValue(&UF::DecorStoragePersistedDataDyes::DyeColorID, 1),
dyeId1);
SetUpdateFieldValue(
m_values
.ModifyValue(&GameObject::m_housingDecorData, 0)
.ModifyValue(&UF::HousingDecorData::PersistedData, 0)
.ModifyValue(&UF::DecorStoragePersistedData::Dyes, 0)
.ModifyValue(&UF::DecorStoragePersistedDataDyes::DyeColorID, 2),
dyeId1);
}
Currently the ChangesMask get correcly set for DecorGUID, AttachParentGUID and Field_68 (Everything on the Toplevel of HousingDecorData)
Anything else nested inside PersistedData has a ChangesMask of 0
https://cdn.discordapp.com/attachments/376457124726702080/1452112817514877049/image.png?ex=6948a0f2&is=69474f72&hm=be4f115206190eec19d797cfb2a4e765fc5a0c957e0e6c17cc036700e1e58b9b&