159 Commits
Author SHA1 Message Date
luis a4f00f295c 67602 2026-05-16 03:55:55 -03:00
luis 75cec3552d Implement account bank money deposit/withdraw + coinage persistence 2026-05-15 23:46:46 -03:00
luis 0f42125b49 typo fix 2026-05-05 08:25:08 -03:00
luis 5189f27df6 fix garrison and playerbots 2026-05-03 07:51:18 -03:00
Sefrenia 2034a543b1 Limpieza Marzo 2026 2026-05-01 22:31:27 -03:00
luis 3025bb30a0 fix table 2026-04-28 08:28:30 -03:00
luis df7456a2d9 ++ 2026-04-28 08:08:17 -03:00
luis fee553bed0 typo 2026-04-28 08:05:39 -03:00
luis 43a3c2bfa9 still db not start need fix housing columns 2026-04-28 08:02:45 -03:00
luis 89835cb128 full table 2026-04-28 08:00:12 -03:00
luis 98f86ef801 typo 2026-04-27 21:36:12 -03:00
agatho e16cb5f0de Import housing system from agatho/TrinityCore feature/housing-system
Squash transplant of 433 commits from agatho/TrinityCore feature/housing-system
(c4775862d1d "Re-CREATE HousingPlayerHouseEntity on move so plot icon updates")
onto WowCommunityProject main. Source and target share no git ancestry — this
import is delivered as a single 3-way patch apply with --reject for residual
conflicts.

What's in this commit:
- Full housing subsystem: Housing/, Entities/Housing/, Entities/MeshObject/,
  HousingMap, HouseInteriorMap, HousingMgr, NeighborhoodMgr, NeighborhoodHandler.
- New SMSG/CMSG packet families (0x33xxxx, 0x39xxxx, 0x55xxxx, 0x5Cxxxx,
  0x5Bxxxx, plus 0x42xxxx initiative & decor opcodes) wired into Opcodes.cpp,
  HousingHandler, NeighborhoodHandler, WorldSession.
- DB2 stores for HouseDecor*, HouseRoom*, HouseTheme*, HouseLevel*,
  HouseExteriorWmoData, NeighborhoodPlot, NeighborhoodInitiative*, etc.
- Character DB schema for character_housing*, neighborhood_*, including
  decor/rooms/fixtures/catalog tables (sql/updates/characters/master/*).
- World DB updates for housing GO templates, AT scripts, NPCs.
- Spell scripts for housing-related spell effects (npc_housing_steward,
  spell_housing, at_housing_plot, go_housing_door).
- Project documentation and analysis dumps under docs/.

Files NOT in this commit (5 .rej files left in the working tree for manual
integration — the target's diverged versions of these list/enum files
prevented automatic apply):

  src/server/database/Database/Implementation/CharacterDatabase.cpp.rej
  src/server/database/Database/Implementation/CharacterDatabase.h.rej
  src/server/database/Database/Implementation/HotfixDatabase.h.rej
  src/server/game/DataStores/DB2Metadata.h.rej
  src/server/game/Server/Protocol/Opcodes.h.rej

Each .rej is a "list insertion" conflict where our patch wants to add new
enum/statement entries between target lines whose neighbours diverged.
Resolution is mechanical (paste the rejected hunks into the right slots in
the target version) but should be done with awareness of the target's local
ordering. Until those are resolved the build will fail on missing opcodes,
DB statements, and DB2 metadata for housing tables.
2026-04-27 16:59:04 +02:00
luis f1582cf61d typo 2026-04-25 08:01:00 -03:00
luis 24e9ee279c Core: Updated to 12.0.5 2026-04-25 07:59:12 -03:00
luis 037f9b7231 clean dbs 2026-04-14 08:27:29 -03:00
luis 5e2c5a929c update still crash 2026-04-11 12:30:26 -03:00
luis 8e587eb900 fix sql 2026-04-08 19:47:18 -03:00
luis 3253902483 Housing: Implement multi-floor interior system for staircases
Rooms now have FloorIndex (0=ground, 1+=upper floors) persisted to DB.
Room Z position is calculated from FloorIndex * RoomWmoData.Height
(typically 7 yards per floor). Stairwell rooms (HasStairs flag) are
placed on FloorIndex+1 of the source room.

Changes:
- Room struct: added FloorIndex field
- DB: added floorIndex column to character_housing_rooms
- SpawnRoomMeshObjects: Z = originZ + FloorIndex * ceilingHeight
- HousingRoomEntity: FloorIndex set from room data (was hardcoded 0)
- HandleHousingRoomAdd: stairwell rooms go to FloorIndex+1
- SELECT/INSERT/UPDATE queries updated for floorIndex column
- Client door filtering uses FloorIndex to show/hide stair connections:
  Floor 0: hides downward stairs, Floor >=100: hides upward stairs
2026-04-08 19:33:57 -03:00
Céfiro_Caecias f398b21ad9 Update 2026_04_08_00_characters.sql.sql 2026-04-08 10:40:25 -03:00
luis 772ef46f1c Housing: Add SQL migration for gridX/gridY columns
Testers need to run sql/housing/characters_housing_grid_migration.sql
on their characters database. Adds gridX/gridY columns and migrates
existing rooms from linear SlotIndex to 2D grid (gridX=slotIndex).
2026-04-08 08:33:19 -03:00
Sefrenia fd5575a998 Limpieza Marzo 2026 2026-04-01 02:23:32 -03:00
luis 8d5b8d3801 club finder part 1 2026-03-31 15:48:11 -03:00
luis 567847babf char perks 2026-03-31 14:17:41 -03:00
luis 6d98a1bfaa fix crash: guard missing hiddenAppearance and avoid ASSERT in LoadAccountItemAppearances 2026-03-27 21:21:07 -03:00
luis f11d801cef delves 2026-03-27 13:54:41 -03:00
luis a30688baab tmog sql 2026-03-22 19:29:02 -03:00
luis cf8d0f8b00 new housing 2026-03-15 18:16:17 -03:00
luis c67de7f095 world quest part 1 2026-03-14 13:10:10 -03:00
luis e9876286b9 initial trading post it have mem leak and dragonriding base 2026-03-14 07:08:14 -03:00
luis 8b80a9f7ad Housing: Complete initiative persistence — task progress, milestones, rewards
- Add neighborhood_initiative_task_progress table persisting per-task progress
  and status (NOT_STARTED/IN_PROGRESS/COMPLETE) across server restarts
- Add neighborhood_initiative_milestones table persisting milestone reached
  state with timestamps
- Add neighborhood_initiative_reward_claims table tracking per-player reward
  claims to prevent double-claiming
- Implement PersistSingleTaskProgress, PersistMilestoneReached, PersistRewardClaim
  with corresponding CHAR_REP/INS prepared statements
- LoadFromDB now restores task progress, milestone state, and reward claims
  from DB instead of defaulting to zero/recalculating
- Implement ClaimMilestoneReward with full DB2 reward chain: walks
  InitiativeRewardXMilestone → InitiativeReward to grant currency, items,
  or favor based on RewardType
- HasUnclaimedRewards now checks per-player claim state, not just milestone reached
- HandleGetInitiativeClaimRewardRequest and HandleGetInitiativeOpenChestRequest
  now use ClaimMilestoneReward for actual reward distribution
- PersistTaskProgress stub replaced with full implementation
2026-03-10 19:43:07 -03:00
Sefrenia 119a054085 Limpieza Febrero 2026 2026-03-07 09:00:51 -03:00
luis 2800ba06c4 Implement Chromie Time persistence, NPC UI, scaling flags, and level gating
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.
2026-03-06 22:16:39 -03:00
luis 44f26b335c Housing: Fix teleport plot resolution, packet wire format, and neighborhood responses
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
2026-03-06 22:05:59 -03:00
luis 6ac87fa874 missing sql 2026-03-06 20:43:31 -03:00
luis 5bd44a49d2 fix sql 2026-03-05 20:03:03 -03:00
luis 732f728f8f Housing: Implement initiative handlers, settings persistence, and Phase 5-7-9 polish
- Implement 8 new initiative CMSG handlers (AcceptMilestone, ReportProgress,
  ClaimReward, Leaderboard, OpenChest, TaskAccept, TaskAbandon, TaskProgress)
  with full InitiativeManager integration for neighborhood initiatives
- Upgrade 6 unknown initiative opcodes (0x38000B-0x380010) to STATUS_LOGGEDIN
- Register 5 unnamed housing opcodes (ConfirmPreviewPlacement, CompleteTutorialStep,
  QueryPendingInvites, SetTutorialState, SkipTutorial) as logged stubs
- Add photo sharing authorization state tracking (per-session volatile)
- Add HousingWarningFlag enum with expansion/level eligibility checks
- Wire warning gates into StartTutorial and ReservePlot handlers
- Fix TaggedPosition<XYZ> accessor calls (.Pos.GetPositionX() pattern)
- Fix HOUSING_RESULT_NOT_HOME_OWNER → HOUSING_RESULT_PERMISSION_DENIED
- All 17 initiative opcodes now STATUS_LOGGEDIN (zero UNHANDLED remaining)
- Add house name/description DB persistence (SQL schema + prepared statements)
- Add blizzlike implementation plan documentation
2026-03-05 19:45:56 -03:00
luis 600e055255 Housing: Fix decor click selection, owner display, and BLZ_ALLOC crash
- 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.
2026-03-03 19:52:07 -03:00
luis 771e03fa9c Housing: Implement Phase 7 opcode handlers for 27 CMSG opcodes 2026-03-02 20:23:34 -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 9edbba56a3 Housing: Populate RoomComponentOption DB2 and fix interior wall models 2026-02-28 18:53:52 -03:00
luis 2cdf4ecbb3 Fix character_garrison_talents 2026-02-26 23:19:00 -03:00
luis bcc1618159 Phase 7 - Account-wide achievements
Add warband_achievement and warband_achievement_progress tables for
account-level achievement storage. On login, merge account-wide
achievements and criteria progress from warband tables. Titles from
account-wide achievements are retroactively granted to all characters.
Existing per-character account-wide achievements are promoted to
warband tables on first login after migration.
2026-02-25 22:08:51 -03:00
luis 69903f1a33 feat(warband): account-wide flight path sharing
Discovered flight paths are now shared across all characters on the same
Battle.net account. On login, each character merges the account-wide taxi
mask into their own. When a new node is discovered, the account mask is
updated immediately. Nodes with TaxiNodeFlags::NotAccountWide are excluded.

- Add warband_taxi_mask table (one row per bnet account)
- Add PlayerTaxi::MergeAccountTaxiMask() and LoadTaxiMaskFromString()
- Merge account taxi mask during Player::LoadFromDB
- Save character's merged mask back to account on Player::SaveToDB
- Update account mask on SendLearnNewTaxiNode/SendDiscoverNewTaxiNode
2026-02-25 20:59:28 -03:00
luis 9087650fe4 Currency: Add schema, packets, opcodes and feature flag for warband currency transfer
Add infrastructure for account-wide currency transfer system:
- warband_currency_transfer_log table and prepared statements
- AccountCurrencyTransferResult enum in SharedDefines.h
- IsAccountWide/IsAccountTransferable helpers on CurrencyTypesEntry
- Remove NYI from CurrencyTypesFlags::AccountWide
- 6 packet classes (3 CMSG + 3 SMSG) in MiscPackets
- Wire 6 opcodes to real handlers
- Enable IsAccountCurrencyTransferEnabled feature flag
- Stub CurrencyHandler.cpp with placeholder implementations
2026-02-25 20:52:06 -03:00
luis 6e05280d1a Add warband reputation schema, statements, and faction config
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)
2026-02-25 19:34:08 -03:00
luis 3849b795db Initial char garrisons dont touch is work in progress will finish tomorrow 2026-02-24 21:23:48 -03:00
luis 49b0d7a5ec Garrison: Phase 1 - Complete WoD core systems and multi-garrison framework
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.
2026-02-24 21:19:27 -03:00
luis 1aac2fe903 Add new housing tables part 1 2026-02-24 19:47:01 -03:00
luis e6bb9bbc58 warband bank dbs soon system 2026-02-22 19:38:09 -03:00
luis c2b70be7c5 Core initial work on warbands 2026-02-22 18:36:33 -03:00