Player Housing Interface API Strings
As initially found by Yuvalal in the Datamining Discord, Blizzard accidentally shipped a file with the 4.4.2 PTR that relates to the upcoming player housing system in Midnight. Note that this does not mean player housing is coming to WoW Classic, Blizzard shares interface files between versions and this file could just as well have accidentally shipped in a future 11.1.5 PTR build.
Also note that even though the file was accidentally added in today's build, its ID is older and implies initial creation during late DF/early TWW development. We don't know how recent its contents are.
The automatically generated Lua file describes various enumerated value types (enums) relating to the player housing system.
- Editing Modes: Layout and Decoration
- Layout Mode - Edit rooms, modifying components such as Wall, Floor, Ceiling, Stairs and Pillars.
- Components can have options such as being able to tag them as a doorway/doorway wall. Doors have 2 sizes, narrow and large.
- Exterior components are themed, with Human being the only theme mentioned in the file. Exterior components can be filtered by "Any", "Small", "Medium" and "Large".
- Decor Mode - Place decorations inside and outside of the house, with various models (large and small)
- There are currently 4 decor themes: "Folk", "Rugged", "Generic" and "Opulent".
- HousingDecorType mentions being able to decorate floors, walls, ceilings and tabletops
All in all, this file leaves a lot up to interpretation, so feel free to read it for yourself below.
Blizzard announced more details on player housing would be coming early this year, so hopefully we won't have to wait too long to see whether or not these interpretations are correct!
Code:
local PlayerHousingConstants =
{
Tables =
{
{
Name = "HousingDecorFlags",
Type = "Enumeration",
NumValues = 2,
MinValue = 1,
MaxValue = 2,
Fields =
{
{ Name = "Exterior", Type = "HousingDecorFlags", EnumValue = 1 },
{ Name = "Interior", Type = "HousingDecorFlags", EnumValue = 2 },
},
},
{
Name = "HousingDecorModelType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "None", Type = "HousingDecorModelType", EnumValue = 0 },
{ Name = "M2", Type = "HousingDecorModelType", EnumValue = 1 },
{ Name = "Wmo", Type = "HousingDecorModelType", EnumValue = 2 },
},
},
{
Name = "HousingDecorTheme",
Type = "Enumeration",
NumValues = 5,
MinValue = 0,
MaxValue = 4,
Fields =
{
{ Name = "None", Type = "HousingDecorTheme", EnumValue = 0 },
{ Name = "Folk", Type = "HousingDecorTheme", EnumValue = 1 },
{ Name = "Rugged", Type = "HousingDecorTheme", EnumValue = 2 },
{ Name = "Generic", Type = "HousingDecorTheme", EnumValue = 3 },
{ Name = "Opulent", Type = "HousingDecorTheme", EnumValue = 4 },
},
},
{
Name = "HousingDecorType",
Type = "Enumeration",
NumValues = 5,
MinValue = 0,
MaxValue = 4,
Fields =
{
{ Name = "None", Type = "HousingDecorType", EnumValue = 0 },
{ Name = "Floor", Type = "HousingDecorType", EnumValue = 1 },
{ Name = "Wall", Type = "HousingDecorType", EnumValue = 2 },
{ Name = "Ceiling", Type = "HousingDecorType", EnumValue = 3 },
{ Name = "Tabletop", Type = "HousingDecorType", EnumValue = 4 },
},
},
{
Name = "HousingExteriorComponentSize",
Type = "Enumeration",
NumValues = 4,
MinValue = 1,
MaxValue = 4,
Fields =
{
{ Name = "Any", Type = "HousingExteriorComponentSize", EnumValue = 1 },
{ Name = "Small", Type = "HousingExteriorComponentSize", EnumValue = 2 },
{ Name = "Medium", Type = "HousingExteriorComponentSize", EnumValue = 3 },
{ Name = "Large", Type = "HousingExteriorComponentSize", EnumValue = 4 },
},
},
{
Name = "HousingExteriorComponentTheme",
Type = "Enumeration",
NumValues = 1,
MinValue = 1,
MaxValue = 1,
Fields =
{
{ Name = "Human", Type = "HousingExteriorComponentTheme", EnumValue = 1 },
},
},
{
Name = "HousingPermission",
Type = "Enumeration",
NumValues = 8,
MinValue = 1,
MaxValue = 128,
Fields =
{
{ Name = "AddDecor", Type = "HousingPermission", EnumValue = 1 },
{ Name = "ChangeDecorParam", Type = "HousingPermission", EnumValue = 2 },
{ Name = "EnterDecorEditMode", Type = "HousingPermission", EnumValue = 4 },
{ Name = "MoveDecor", Type = "HousingPermission", EnumValue = 8 },
{ Name = "RemoveDecor", Type = "HousingPermission", EnumValue = 16 },
{ Name = "SaveHouse", Type = "HousingPermission", EnumValue = 32 },
{ Name = "SelectDecor", Type = "HousingPermission", EnumValue = 64 },
{ Name = "EditLayout", Type = "HousingPermission", EnumValue = 128 },
},
},
{
Name = "HousingResult",
Type = "Enumeration",
NumValues = 18,
MinValue = 0,
MaxValue = 17,
Fields =
{
{ Name = "Success", Type = "HousingResult", EnumValue = 0 },
{ Name = "DbError", Type = "HousingResult", EnumValue = 1 },
{ Name = "RpcFailure", Type = "HousingResult", EnumValue = 2 },
{ Name = "GenericFailure", Type = "HousingResult", EnumValue = 3 },
{ Name = "LockOperationFailed", Type = "HousingResult", EnumValue = 4 },
{ Name = "UnlockOperationFailed", Type = "HousingResult", EnumValue = 5 },
{ Name = "LockedByOtherPlayer", Type = "HousingResult", EnumValue = 6 },
{ Name = "DecorNotFound", Type = "HousingResult", EnumValue = 7 },
{ Name = "HouseNotFound", Type = "HousingResult", EnumValue = 8 },
{ Name = "PermissionDenied", Type = "HousingResult", EnumValue = 9 },
{ Name = "NotInDecorEditMode", Type = "HousingResult", EnumValue = 10 },
{ Name = "NotInsideHouse", Type = "HousingResult", EnumValue = 11 },
{ Name = "ServiceNotAvailable", Type = "HousingResult", EnumValue = 12 },
{ Name = "RoomNotFound", Type = "HousingResult", EnumValue = 13 },
{ Name = "RoomUpdateFailed", Type = "HousingResult", EnumValue = 14 },
{ Name = "NotInLayoutEditMode", Type = "HousingResult", EnumValue = 15 },
{ Name = "PlotNotFound", Type = "HousingResult", EnumValue = 16 },
{ Name = "MaxDecorReached", Type = "HousingResult", EnumValue = 17 },
},
},
{
Name = "HousingRoomComponentDoorType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "None", Type = "HousingRoomComponentDoorType", EnumValue = 0 },
{ Name = "NarrowDoor", Type = "HousingRoomComponentDoorType", EnumValue = 1 },
{ Name = "LargeDoor", Type = "HousingRoomComponentDoorType", EnumValue = 2 },
},
},
{
Name = "HousingRoomComponentOptionType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "Cosmetic", Type = "HousingRoomComponentOptionType", EnumValue = 0 },
{ Name = "DoorwayWall", Type = "HousingRoomComponentOptionType", EnumValue = 1 },
{ Name = "Doorway", Type = "HousingRoomComponentOptionType", EnumValue = 2 },
},
},
{
Name = "HousingRoomComponentType",
Type = "Enumeration",
NumValues = 6,
MinValue = 0,
MaxValue = 5,
Fields =
{
{ Name = "None", Type = "HousingRoomComponentType", EnumValue = 0 },
{ Name = "Wall", Type = "HousingRoomComponentType", EnumValue = 1 },
{ Name = "Floor", Type = "HousingRoomComponentType", EnumValue = 2 },
{ Name = "Ceiling", Type = "HousingRoomComponentType", EnumValue = 3 },
{ Name = "Stairs", Type = "HousingRoomComponentType", EnumValue = 4 },
{ Name = "Pillar", Type = "HousingRoomComponentType", EnumValue = 5 },
},
},
{
Name = "HousingRoomFlags",
Type = "Enumeration",
NumValues = 2,
MinValue = 0,
MaxValue = 1,
Fields =
{
{ Name = "None", Type = "HousingRoomFlags", EnumValue = 0 },
{ Name = "BaseRoom", Type = "HousingRoomFlags", EnumValue = 1 },
},
},
},
};
APIDocumentation:AddDocumentationTable(PlayerHousingConstants);
Continue reading...