Add complete blizzlike Chromie Time flow: NPC gossip opens expansion picker,
handler sets ConditionalFlags/FactionGroup for content tuning redirection,
selection persists via new characters.chromieTimeExpansionId column, state
restores on login, and auto-clears at max level. Implement SMSG_SET_CTR_OPTIONS
server packet for mid-session state pushes.
Fix teleport-to-plot using server-side plot resolution instead of trusting
client's PlotIndex (which is a roster index, not the DB2 PlotIndex). Resolve
correct plot via player's Housing object for self-teleport, or OwnerGuid
matching for visiting others.
Additional changes accumulated in this batch:
- Implement housing packet handlers for Phase 5-7-9 opcodes
- Fix neighborhood response wire format to match retail sniffs
- Add housing source tracking and platform cleanup SQL migrations
- Fix AreaTrigger/GameObject/MeshObject housing integration points
- Extend UpdateFields for housing-specific object data
- Add Neighborhood plot management and house finder support
- Fix door script and steward NPC interactions
- Add catalog persistence prepared statement
- Fix HouseInteriorMap Euler-to-quaternion conversion for room components
Register BattlePetNPCTeamMember.db2 in the hotfix pipeline so the
server can populate it at runtime. The client ships this DB2 empty
(0 records) — names resolve via CreatureID in packets instead, but
the infrastructure is now in place for future name overrides.
Add initial seed data for 19 NPC pet battle trainers (57 pets) from
Eastern Kingdoms through Pandaria Grand Masters. All creature IDs
verified against TDB creature_template with exact name matches.
Multi-turn abilities (Dig, Burrow, etc.) were invisible to the client:
- Handle effectCategory 17/18 (MULTI_TURN_BEGIN/END) in ProcessEffect
that were falling through to default handler producing no effects
- Fix off-by-one: multi-turn state now clears on last turn instead of
one round late (>= TotalTurns-1 instead of >= TotalTurns)
- Emit fallback STATUS_CHANGE for empty multi-turn turns so the client
still shows the ability animation
NPC trainer pet naming and model support:
- Add npcTeamMemberID column to battle_pet_npc_team (maps to
BattlePetNPCTeamMember.db2 for pet name display on client)
- Add creatureId column for optional model override (0=species default)
- Send NpcTeamMemberID in packet for all teams, not just wild
- Set EditorMode UpdateField via SetHousingEditorModeUpdateField() when
entering/exiting edit mode. The client reads this from
PlayerHouseInfoComponentData to enable ClickTarget (flag 16) for decor
selection. Without it, the housing editor stays in mode 0 and all click
flags are disabled.
- Set UNIT_FLAG_PACIFIED, UNIT_FLAG2_NO_ACTIONS and SilencedSchoolMask=127
during edit mode (sniff-verified retail behavior). Clear on exit.
- Revert ignoreNestedChangesMask from true to false in
HousingStorageData::WriteUpdate. The true flag forced full-map Create
format inside VALUES_UPDATE which crashes the client (BLZ_ALLOC 41GB)
on subsequent Decor map updates after placing decor. The original
partial-serialization issue was actually caused by ContentsChangedMask=0
which is already fixed by the Account::SendUpdateToPlayer override.
- Fix SMSG_HOUSING_UPDATE_HOUSE_INFO to send actual BnetAccountGuid
instead of ObjectGuid::Empty so house owner displays correctly in the
settings/permissions UI.
- Make character_housing position columns SQL update idempotent to avoid
duplicate column errors when schema already includes posX/posY/posZ.