Commit Graph
795 Commits
Author SHA1 Message Date
luis 188b2d88af Housing: Fix empty VALUES_UPDATE by building ContentsChangedMask before send
BaseEntity::SendUpdateToPlayer() is const and never calls
BuildUpdateChangesMask(), leaving ContentsChangedMask at 0. This means
BuildValuesUpdateBlockForPlayer() skips all fragment data — the
VALUES_UPDATE packet is sent empty with no FHousingStorage_C content.

The map's periodic update cycle (Account::BuildUpdate) does call
BuildUpdateChangesMask() and sends data correctly, but our explicit
handler calls to SendUpdateToPlayer were producing empty packets.

Override SendUpdateToPlayer on Account to call BuildUpdateChangesMask()
before serializing and ClearUpdateMask() after. This ensures
FHousingStorage_C Decor map data populated by
PopulateCatalogStorageEntries() is actually included in the packet.
2026-03-03 19:48:46 -03:00
luis 7e28074385 Housing: Fix decor selection by serializing full Decor map in VALUES_UPDATE
The client correlates FHousingStorage_C Decor entries with MeshObject
FHousingDecor_C.DecorGUID for targeting/selection. VALUES_UPDATE packets
with partial change masks (ignoreNestedChangesMask=false) only sent
individual field bits, missing the complete Decor map structure the
client needs. Fix by forcing ignoreNestedChangesMask=true in
HousingStorageData::WriteUpdate so the Decor map is always serialized
in full-create format (WriteMapFieldCreate) inside VALUES_UPDATE.

Also fix SetHousingDecorStorageEntry to set SourceValue (empty string)
so all 3 fields have their change bits set for per-entry serialization.
2026-03-03 19:47:24 -03:00
luis 8f72fc820f Housing: Fix BLZ_ALLOC crash by tracking Account entity in m_clientGUIDs
The Account entity's GUID was never added to m_clientGUIDs after its
initial CREATE (embedded in the player's own create block). This caused
SendUpdateToPlayer() to always send a duplicate full CREATE instead of
a VALUES_UPDATE. When the Decor map was populated during edit mode, the
duplicate CREATE crashed the client with a 41GB BLZ_ALLOC allocation.
2026-03-03 19:43:56 -03:00
luis e615ac2f9e Core/Misc: Update CURRENT_EXPANSION to Midnight 2026-03-03 19:41:05 -03:00
luis af61bad399 DB/Spells: Fix Executioner's Precision procs 2026-03-03 19:38:57 -03:00
Shauren d67801df7f Core/Spells: Fixed autoattack timer being reset by almost every spell cast
Signed-off-by: luis <[email protected]>
2026-03-03 19:37:55 -03:00
Céfiro_Caecias 2fdb0b4233 DB/World: DBErrors Clean 2026-03-03 10:10:30 -03:00
Céfiro_Caecias 7983ce6c68 DB/Hotfixes: DBErrors item_sparse 2026-03-03 10:09:44 -03:00
luis e47bcc48d6 +++ 2026-03-02 21:15:50 -03:00
luis 354fb4b154 66198 2026-03-02 20:42:53 -03:00
luis fa21740681 merge latest 2026-03-02 20:42:11 -03:00
Jeremy e2d85b360c Scripts/Spells: Implement Rampaging Ruin (Fury Warrior Talent) (#31681)
Signed-off-by: luis <[email protected]>
2026-03-02 20:42:03 -03:00
Jeremy 176b10767c Scripts/Spells: Implement Kill or Be Killed (Fury Warrior Talent) (#31680)
Signed-off-by: luis <[email protected]>
2026-03-02 20:41:30 -03:00
Shauren 5cf43f4d72 Core/Achievements: Reduce differences between branches
Signed-off-by: luis <[email protected]>
2026-03-02 20:40:24 -03:00
Shauren e406aae2cf Scripts/Spells: Fix wrong hook being used for Evangelism script
Closes #31699

Signed-off-by: luis <[email protected]>
2026-03-02 20:37:30 -03:00
Shauren f941c2a241 Core/Items: Move selling items to separate function
Signed-off-by: luis <[email protected]>
2026-03-02 20:36:52 -03:00
luis 45430324fb merge housing 2026-03-02 20:34:40 -03:00
luis 140c043c8c Housing: Add tutorial flags, entry hall room, MeshObject EntryID and misc fixes 2026-03-02 20:31:24 -03:00
luis 771e03fa9c Housing: Implement Phase 7 opcode handlers for 27 CMSG opcodes 2026-03-02 20:23:34 -03:00
luis d564b75509 Housing: Fix neighborhood faction display and plot purchase issues 2026-03-02 20:00:36 -03:00
luis 117fdb7490 AreaTrigger: Fix null template crash in HandleUnitEnter/Exit 2026-03-02 19:56:23 -03:00
luis 2d28465873 Housing: Fix DB2 struct field ordering for ExteriorComponent entries 2026-03-02 19:54:12 -03:00
luis 9ba9dfd718 Housing: Fix null string crash in diagnostic dump functions
DumpExteriorComponentDiagnostics and DumpRoomComponentTextureDiagnostics
passed Name[locale] directly to fmt without SafeStr() guard, causing
ACCESS_VIOLATION when LocalizedString data is null.
2026-03-02 19:49:44 -03:00
Céfiro_Caecias b067c73dea Update README.md 2026-03-01 09:59:19 -03:00
Céfiro_Caecias 5e667514b1 Update README.md 2026-03-01 09:58:29 -03:00
luis 884d9b585a fix crash and db2 load 2026-03-01 08:45:42 -03:00
Céfiro_Caecias 8fb786fe5e DB/World: DBErrors Clean 2026-03-01 02:30:39 -03:00
luis 60fe9f18aa typo 2026-02-28 19:32:41 -03:00
luis 4323d61765 Housing: Visual respawning, room updates, collection notifications, and decor refunds
Add instant visual feedback for fixture/room changes, populate licensed
decor quantities from catalog, and implement the decor refund window.

- Fixture handlers (SetCore, Create, Delete) now despawn+respawn house
  MeshObjects so changes are visible without relog
- All 8 room handlers refresh interior MeshObjects after success via
  shared RefreshInteriorRoomVisuals helper
- Send SMSG_ACCOUNT_*_COLLECTION_UPDATE for room add, theme set, and
  material apply operations
- HandleGetAllLicensedDecorQuantities returns catalog + starter decor
- HandleGetDecorRefundList returns recently placed decor within 2-hour
  refund window using new PlacementTime field persisted to DB
2026-02-28 19:30:49 -03:00
luis 8813046b06 new tables 2026-02-28 19:10:33 -03:00
luis 2724d62d91 Housing: Data-driven DB2 exterior houses, room textures, and indexed lookups
Replace hardcoded values across the housing system with DB2-driven data:

Phase 1 - Quick wins:
- Interior map origin from NeighborhoodMap DB2 instead of hardcoded (-1000,-1000,0.1)
- O(1) RoomComponentOption lookup via composite-key index (was O(n) per call)
- Dynamic plot count in house finder from DB2 PlotCount
- Warnings when RoomWmoData geobox falls back to defaults
- Base room entry from DB2 IsBaseRoom flag instead of hardcoded 18

Phase 2 - Data-driven exterior houses:
- ExteriorComponent diagnostic dump at startup (stores, hooks, exit points)
- 5 ExteriorComponent indexes for hook/group/exit point lookups
- Recursive SpawnExtCompTree() walks DB2 component-hook-child tree
- SpawnFullHouseMeshObjects tries data-driven first, falls back to hardcoded
- Door offset from ExteriorComponentExitPoint DB2 instead of hardcoded 5.5f

Phase 3 - Room system improvements:
- Room grid spacing changed to sniff-verified 15yd (was 24yd)
- RoomComponentTexture + RoomComponentOptionTexture DB2 infrastructure
  (structs, load info, stores, hotfix selectors, prepared statements)
- 3-tier texture resolution: per-option DB2, per-type DB2, hardcoded fallback
- Diagnostic dumps for texture DB2 data verification
2026-02-28 19:09:02 -03:00
Aqua Deus ebec03120e Scripts/Spells: Implement Shattered Souls of Devourer Spec (DH) (#31672)
Signed-off-by: luis <[email protected]>
2026-02-28 19:00:32 -03:00
Jeremy 5189349611 Scripts/Spells: Implement Meat Cleaver (Fury Warrior Talent) (#31671)
Signed-off-by: luis <[email protected]>
2026-02-28 18:59:59 -03:00
Jeremy 741cb95d1b Scripts/Spells: Implement Surge of Adrenaline (Fury Warrior Talent) (#31668)
Signed-off-by: luis <[email protected]>
2026-02-28 18:56:33 -03:00
Shauren 8df84a64c0 Core/Spells: Fixed proc phase order for spells with no travel time (CAST now happens before FINISH as intended)
Signed-off-by: luis <[email protected]>
2026-02-28 18:55:43 -03:00
Shauren 0dd1579a55 Core/Spells: Move duplicated code for proc flag selection to separate function
Signed-off-by: luis <[email protected]>
2026-02-28 18:54:53 -03:00
luis 9edbba56a3 Housing: Populate RoomComponentOption DB2 and fix interior wall models 2026-02-28 18:53:52 -03:00
luis 224b62a1f8 Housing: Data-driven interior rooms, decor persistence, and room type fix
- Rewrite SpawnRoomMeshObjects to iterate ALL components per room from DB2
  data, each getting InitHousingRoomComponentData with proper geobox
- Add faction-aware theme selection via GetFactionDefaultThemeID (Alliance=6,
  Horde=2) and FindRoomComponentOption per-component lookup
- Fix GetDefaultVisualRoomEntry to deterministically pick lowest-ID room
  (Room 1 = Square Small) instead of non-deterministic unordered_map pick
- Add runtime migration in LoadFromDB to replace wrong visual room entry
  (e.g., Octagon 9 → Square 1) on next login
- Fix interior decor not visible: PLACE/MOVE/REMOVE handlers now support
  HouseInteriorMap via SpawnSingleInteriorDecor and UpdateDecorPosition
- SpawnInteriorDecor runs on every interior entry (not gated by
  _roomsSpawned), with duplicate-spawn prevention
- Fix room GUID using subType=2 (was 0 which returned ObjectGuid::Empty)
- Fix DB2 OffsetRot degrees-to-radians conversion for component quaternions
- Teleport player to visual room center on interior entry
- Add MeshObject::InitHousingDecorData, InitHousingRoomData,
  InitHousingRoomComponentData, InitHousingFixtureData for entity fragments
- Add SpawnRoomForPlot to HousingMap for exterior room entities with geobox
- Add SQL migrations for base room and visual room auto-placement
- Enhanced diagnostic logging for exterior decor spawn success/failure
2026-02-28 18:50:58 -03:00
Céfiro_Caecias c6e7d589d4 DB/World: DBErrors Clean 2026-02-28 16:45:41 -03:00
luis 5555066646 Zones 2026-02-27 22:46:41 -03:00
luis a0ddb2c9ae Uldaman Legacy Of Tyr 2026-02-27 22:41:56 -03:00
luis 874efbdb32 The Nokhud Offensive 2026-02-27 22:36:41 -03:00
luis 6148b6e450 Neltharus 2026-02-27 22:30:18 -03:00
luis 12f4ab96c3 Halls Of Infusion 2026-02-27 22:25:55 -03:00
luis 84e69da02c merge 2026-02-27 22:22:35 -03:00
luis 0838a21a59 Amirdrassil 2026-02-27 22:17:41 -03:00
luis 77002ca1ab brackenhide full 2026-02-27 22:14:13 -03:00
luis 97fefa3340 Vault of the Inarnates 2026-02-27 21:49:51 -03:00
luis d14efc7023 merge dungeon and fix warnings 2026-02-27 21:45:52 -03:00
luis 7b6a678e61 Ruby life pools 2026-02-27 21:40:06 -03:00