From cf8d0f8b0072279c7f4282e8c9ed0d3d47fda509 Mon Sep 17 00:00:00 2001 From: luis Date: Sun, 15 Mar 2026 18:16:17 -0300 Subject: [PATCH] new housing --- .../master/2026_03_15_00_characters.sql | 15 +++++++++++++++ src/server/game/DataStores/DB2Structure.h | 3 ++- src/server/game/Entities/Object/ObjectGuid.cpp | 3 +++ src/server/game/Housing/HousingMap.cpp | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 sql/updates/characters/master/2026_03_15_00_characters.sql diff --git a/sql/updates/characters/master/2026_03_15_00_characters.sql b/sql/updates/characters/master/2026_03_15_00_characters.sql new file mode 100644 index 000000000..ce5171614 --- /dev/null +++ b/sql/updates/characters/master/2026_03_15_00_characters.sql @@ -0,0 +1,15 @@ +-- Migrate existing houses to racial WMO styles. +-- Previously all Alliance houses got WMO=9 (Human) and Horde got WMO=87 (Orc). +-- Now: Night Elf → 55 (Woodland), Blood Elf → 56 (Engraved). + +-- Night Elf (race=4): Alliance default 9 → Woodland 55 +UPDATE character_housing ch +INNER JOIN characters c ON ch.guid = c.guid +SET ch.houseType = 55 +WHERE c.race = 4 AND ch.houseType = 9; + +-- Blood Elf (race=10): Horde default 87 → Engraved 56 +UPDATE character_housing ch +INNER JOIN characters c ON ch.guid = c.guid +SET ch.houseType = 56 +WHERE c.race = 10 AND ch.houseType = 87; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 9ae2716a8..8adb3e192 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -5515,9 +5515,10 @@ struct ExteriorComponentGroupXHookEntry struct ExteriorComponentHookEntry { - uint32 ID; + // Field order must match LoadInfo: Position, Rotation, ID, TypeID, CompID std::array Position; std::array Rotation; + uint32 ID; int32 ExteriorComponentTypeID; uint32 ExteriorComponentID; // ParentIndexField - must be unsigned }; diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 3c7454817..ef7ee9d91 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -705,6 +705,7 @@ namespace { case 1: case 4: + case 5: ctx.advance_to(AppendComponent(ctx, subType)); ctx.advance_to(AppendComponent(ctx, uint32(guid.GetRawValue(1) >> 32) & 0xFFFF)); ctx.advance_to(AppendComponent(ctx, uint32(guid.GetRawValue(1)) & 0xFFFFFFFF)); @@ -742,6 +743,7 @@ namespace { case 1: case 4: + case 5: if (!ParseComponent(guidString, &arg1) || !ParseComponent(guidString, &arg2) || !ParseComponent(guidString, &arg3) @@ -1055,6 +1057,7 @@ ObjectGuid ObjectGuidFactory::CreateHousing(uint32 subType, uint32 arg1, uint32 { case 1: case 4: + case 5: // Fixture GUIDs: same format as neighborhood/house GUIDs return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58) | (uint64(subType & 0x1F) << 53) | (uint64(arg1 & 0xFFFF) << 32) diff --git a/src/server/game/Housing/HousingMap.cpp b/src/server/game/Housing/HousingMap.cpp index d30e09b94..420ad90e6 100644 --- a/src/server/game/Housing/HousingMap.cpp +++ b/src/server/game/Housing/HousingMap.cpp @@ -299,7 +299,7 @@ void HousingMap::SpawnPlotGameObjects() // fragment, SpellForVisuals, SpellXSpellVisualID) BEFORE the CREATE_OBJECT // packet is sent. The client needs FHousingPlotAreaTrigger_C and // DecalPropertiesId=621 in the initial create to render the plot border decal. - AreaTrigger* plotAt = AreaTrigger::CreateStaticAreaTrigger({ .Id = 37358, .IsCustom = false }, this, atPos, -1, false); + AreaTrigger* plotAt = AreaTrigger::CreateStaticAreaTrigger({ .Id = 37358, .IsCustom = false }, this, atPos, -1); if (plotAt) { PhasingHandler::InitDbPhaseShift(plotAt->GetPhaseShift(), PHASE_USE_FLAGS_ALWAYS_VISIBLE, 0, 0);