new housing

This commit is contained in:
luis
2026-03-15 18:16:17 -03:00
parent 2f5144077e
commit cf8d0f8b00
4 changed files with 21 additions and 2 deletions
@@ -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;
+2 -1
View File
@@ -5515,9 +5515,10 @@ struct ExteriorComponentGroupXHookEntry
struct ExteriorComponentHookEntry struct ExteriorComponentHookEntry
{ {
uint32 ID; // Field order must match LoadInfo: Position, Rotation, ID, TypeID, CompID
std::array<float, 3> Position; std::array<float, 3> Position;
std::array<float, 3> Rotation; std::array<float, 3> Rotation;
uint32 ID;
int32 ExteriorComponentTypeID; int32 ExteriorComponentTypeID;
uint32 ExteriorComponentID; // ParentIndexField - must be unsigned uint32 ExteriorComponentID; // ParentIndexField - must be unsigned
}; };
@@ -705,6 +705,7 @@ namespace
{ {
case 1: case 1:
case 4: case 4:
case 5:
ctx.advance_to(AppendComponent<no_padding, dec>(ctx, subType)); ctx.advance_to(AppendComponent<no_padding, dec>(ctx, subType));
ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1) >> 32) & 0xFFFF)); ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1) >> 32) & 0xFFFF));
ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1)) & 0xFFFFFFFF)); ctx.advance_to(AppendComponent<no_padding, dec>(ctx, uint32(guid.GetRawValue(1)) & 0xFFFFFFFF));
@@ -742,6 +743,7 @@ namespace
{ {
case 1: case 1:
case 4: case 4:
case 5:
if (!ParseComponent<dec>(guidString, &arg1) if (!ParseComponent<dec>(guidString, &arg1)
|| !ParseComponent<dec>(guidString, &arg2) || !ParseComponent<dec>(guidString, &arg2)
|| !ParseComponent<hex>(guidString, &arg3) || !ParseComponent<hex>(guidString, &arg3)
@@ -1055,6 +1057,7 @@ ObjectGuid ObjectGuidFactory::CreateHousing(uint32 subType, uint32 arg1, uint32
{ {
case 1: case 1:
case 4: case 4:
case 5: // Fixture GUIDs: same format as neighborhood/house GUIDs
return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58) return ObjectGuid(uint64((uint64(HighGuid::Housing) << 58)
| (uint64(subType & 0x1F) << 53) | (uint64(subType & 0x1F) << 53)
| (uint64(arg1 & 0xFFFF) << 32) | (uint64(arg1 & 0xFFFF) << 32)
+1 -1
View File
@@ -299,7 +299,7 @@ void HousingMap::SpawnPlotGameObjects()
// fragment, SpellForVisuals, SpellXSpellVisualID) BEFORE the CREATE_OBJECT // fragment, SpellForVisuals, SpellXSpellVisualID) BEFORE the CREATE_OBJECT
// packet is sent. The client needs FHousingPlotAreaTrigger_C and // packet is sent. The client needs FHousingPlotAreaTrigger_C and
// DecalPropertiesId=621 in the initial create to render the plot border decal. // 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) if (plotAt)
{ {
PhasingHandler::InitDbPhaseShift(plotAt->GetPhaseShift(), PHASE_USE_FLAGS_ALWAYS_VISIBLE, 0, 0); PhasingHandler::InitDbPhaseShift(plotAt->GetPhaseShift(), PHASE_USE_FLAGS_ALWAYS_VISIBLE, 0, 0);