Add database tables and ObjectMgr infrastructure for account-wide
reputation sharing:
- warband_reputation_faction (world DB): eligible factions config
- warband_reputation (characters DB): per-account highest standings
- Prepared statements for both world and character databases
- ObjectMgr::LoadWarbandReputationFactions() called at startup
- Pre-populate with TWW renown factions (2570, 2590, 2594, 2600)
Load 12 new Garr* DB2 stores (GarrBuildingDoodadSet, GarrFollItemSetMember,
GarrFollowerLevelXP, GarrFollowerQuality, GarrFollowerType,
GarrItemLevelUpgradeData, GarrMissionSet, GarrMissionType,
GarrMissionXFollower, GarrMssnBonusAbility, GarrSpecialization, GarrType)
across the full loading pipeline.
Implement Garrison::Upgrade() for WoD level 1-3 progression with cinematic
playback, building persistence across level transitions, and plot respawning.
Replace hardcoded follower XP formula with DB2-driven progression using
GarrFollowerLevelXP and GarrFollowerQuality stores, including quality
upgrades with ability re-rolling at tier boundaries.
Add follower custom name persistence (customName column) and mission
required follower validation via GarrMissionXFollower index.
Refactor to multi-garrison framework: Player stores map of garrisons keyed
by GarrisonType, GetGarrison() defaults to WoD for backwards compatibility,
GetGarrisonInfo sends data for all garrison types to client.
Spawn the physical house structure GameObject when a player buys a plot,
using the DB2 PlotGameObjectID at the plot's HousePosition. Persist
player-chosen house positions to the database so they survive relogs.
Fix the SetHousePosition handler to actually store and apply the position
instead of being a no-op.
Spawn placed decor items as visible GameObjects with the FHousingDecor_C
entity fragment (InitHousingDecorData), following the cornerstone pattern.
Hook decor GO spawn/move/despawn into the Place/Move/Remove handlers so
furniture appears and updates in real time.
Fix outdoor decor budget enforcement: decor with roomGuid=0 now routes
to the exterior budget instead of always counting as interior.
Fix edit mode response wire format to match Fixture/Room pattern
(uint32 Result + Bit Active).
Set default _houseType to 32 (sniff-verified) instead of 0.
- Fix type effectiveness matrix (9/10 rows had wrong strong/weak, 0.67->0.66)
- Fix state machine enum to match client (add CREATED_FAILED, FINAL_ROUND)
- Add PetBattleEffectFlags (miss/crit/heal/immune/strong/weak) and populate them
- Add post-battle health sync back to journal with 50% auto-heal
- Add missing effect types (REPLACE_PET, OVERRIDE_ABILITY, WORLD_STATE_UPDATE)
- Implement GetTrapStatus() with full validation (species, health, journal)
- Add PetBattlePetStatusFlags and compute from pet state
- Add PetBattleInputFlags (ability/swap locked, waiting for pet)
- Add ability lockdown tracking alongside cooldowns
- Add critical hit system (5% base, 1.5x multiplier) via DamageResult struct
- Expand PetBattleRequestFailReason to 24 values matching client
- Add max game length warning (5 min before timeout)
- Implement NPC trainer battles (LoadNPCTeams from world DB, CreateNPCBattle,
InitNPCBattle, GenerateNPCTeamInput with enhanced AI)
- Add battle_pet_npc_team SQL schema
- Complete PvP flow: full validation, accept/decline, proper queue status codes
- Add PvP forfeit penalty (Pet Battle Deserter debuff)
- Add SMSG_BATTLE_PETS_HEALED and SMSG_BATTLE_PET_TRAP_LEVEL packets
- Register CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY handler
- Add boss pet handling (damage cap at 35% max HP, not capturable)
- Add aura state flags (JUST_APPLIED on creation, INFINITE for permanent)
- Add achievement criteria (WinPetBattle, LosePetBattle, capture)
Two fixes to enable Cornerstone click interaction:
1. Send SMSG_HOUSING_GET_CURRENT_HOUSE_INFO_RESPONSE proactively in
HousingMap::AddPlayerToMap() so the client can call
SetViewingNeighborhood() and populate its global housing context.
Without this, GetCornerstoneNeighborhoodInfo() returns empty data
and the Cornerstone purchase UI cannot display.
2. Add SQL migration for AreaTrigger entry 37358 (housing plot AT)
with ScriptName='at_housing_plot', Shape=Sphere, radius=40 yards.
Without this in the database, CreateStaticAreaTrigger() silently
fails and SMSG_NEIGHBORHOOD_PLAYER_ENTER_PLOT never fires.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
Adds exteriorLocked, houseSize, and houseType columns to existing
character_housing tables via ALTER TABLE (the schema file was updated
in the prior commit but existing databases need this migration).
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
Creature templates, spawns, models, gameobject templates, spawns,
gossip menus, vendor inventories, quest data, and trainer spells
for the Alliance housing neighborhood (The Aerie).
Column names adapted to current TrinityCore creature_template schema
(type/family/Classification, 64-bit npcflag).
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>