Commit Graph
710 Commits
Author SHA1 Message Date
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
Shauren 4fb3b19844 Core/AreaTriggers: Fixed crashes caused by areatrigger OnUnitEnter/OnUnitExit scripts teleporting players to other maps
Signed-off-by: luis <[email protected]>
2026-02-25 21:29:31 -03:00
Shauren b561055a1a Core/Spells: Update CAST_FLAG_NO_GCD flag implementation
Signed-off-by: luis <[email protected]>
2026-02-25 21:28:51 -03:00
Jeremy 56377e3cab Scripts/Spells: Implement Execute damage and Improved Execute (arms) (#31658)
Signed-off-by: luis <[email protected]>
2026-02-25 21:28:27 -03:00
Aqua Deus 8c6e61f697 Scripts/Spells: Implement dh talent "Shift" (#31656)
Signed-off-by: luis <[email protected]>
2026-02-25 21:27:52 -03:00
Aqua Deus 22174b73a3 Scripts/Spells: Implement dh talent "Voidblade" (#31654)
Signed-off-by: luis <[email protected]>
2026-02-25 21:27:29 -03:00
Aqua Deus 543979c0e0 Scripts/Spells: Fix power gain for dh talent "Consume" (#31653)
Signed-off-by: luis <[email protected]>
2026-02-25 21:26:54 -03:00
luis f3fcbd4a15 feat(warband): alt XP bonus for leveling characters 2026-02-25 21:02:37 -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 864cd83195 Currency: Implement warband currency transfer handlers
Add full handler implementations in CurrencyHandler.cpp:
- HandleRequestCurrencyDataForAccountCharacters: queries all same-account
  characters' transferable currencies and sends to client
- HandleTransferCurrencyFromAccountCharacter: validates source character
  ownership, currency transferability, balance checks, applies transfer
  percentage, updates source via DB and destination via ModifyCurrency,
  logs transfer to warband_currency_transfer_log
- HandleGetCharacterCurrencyTransferLog: queries and returns recent
  transfer history for the bnet account
2026-02-25 20:54:52 -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 b9f324b0e9 Implement account-wide reputation load/save in ReputationMgr
Add ReputationMgr methods for warband-wide reputation sharing:
- LoadAccountWideFromDB: merges account highest standings into character
  reputation on login, syncing both regular and renown factions
- SaveAccountWideToDB: upserts warband_reputation when character's
  standing exceeds the stored account-wide maximum
- Login query for account reputation via LoginQueryHolder
- Renown factions compare level first, then standing as tiebreaker
- Regular factions compare standing delta directly
2026-02-25 19:54:02 -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 fcac505c8a Pet Battles: Fix pet level/stats/XP persistence and capture saving
Fix several bugs causing battle pet progression to not persist:

- Reorder logout cleanup so battle resolution (FinishBattle + XP award)
  happens before journal lock release, ensuring XP is applied on disconnect
- Add captured wild pets to player journal via AddPet() on successful trap
- Keep slot pet data in sync with _pets map after level-up, health sync,
  quality change, and healing to fix stale criteria/display data
- Change mid-level-up GameTable miss from hard return to break so partial
  XP is still saved
- Add diagnostic logging (battlepet category) for save/load/XP operations
2026-02-25 19:26:10 -03:00
luis 6e7843831b update still not build 2026-02-25 19:17:45 -03:00
Céfiro_Caecias 27a13f5ebf Update README.md 2026-02-25 18:40:09 -03:00
luis 75265487e9 Housing update part 1 at night i fix build 2026-02-25 13:30:00 -03:00
luis e2c633975e AddSC_npc_garrison_bodyguard 2026-02-25 13:10:24 -03:00
luis 20e77f6117 Garrison: Complete 100% Blizzlike implementation
Implements all remaining garrison subsystems for full Blizzlike coverage:

- 17 garrison spell effects (upgrade, add mission, follower XP/quality/abilities,
  building construction, shipments, talents, item level upgrades)
- Building swap between same-type plots
- Follower item level upgrade system with GarrItemLevelUpgradeData support
- Building-specific mechanics: Barracks extra follower slots (+5/+10),
  Salvage Yard crate drops from missions, Inn/Tavern treasure missions
- Bodyguard companion system (follows player in Draenor, assists in combat)
- Party garrison (visit group leader's garrison)
- Invasion wave system with 3 invasion types and GM commands
- Stub handler completions (monument revert, pet name, talent unlocks)
- Targeted event packets replacing heavy GetGarrisonInfoResult sends
- Auto-combat simulator for adventure missions
2026-02-24 22:38:52 -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 ccd87a786a Pet Battles: Fix battle end rewards and flow ordering from sniff comparison
Fix 5 data correctness issues and 1 flow ordering issue found by comparing
against a retail 12.0 NPC trainer battle sniff:

- AwardedXP: set true for all pets (both teams) via CanAwardXP(), not just
  the winner team
- NpcCreatureID: use trainer NPC entry (via GetNpcTrainerGUID) instead of
  pet species CreatureID
- SeenAction: set false for all pets (matches sniff)
- Remove HealBattlePetsPct(50) auto-heal — sniff shows dead pets stay at 0
- Split end flow: FinalRound packet sent immediately, but Finished packet,
  health sync, and journal update deferred until client sends FinalNotify
  (player must click OK on results screen)
- Add logout cleanup in WorldSession::LogoutPlayer for disconnect safety

CompleteBattle() centralizes the FINISHED transition, Finished packet,
health sync, and journal send — used by FinalNotify handler, forfeit
handler, and logout cleanup.
2026-02-24 21:04:57 -03:00
luis 38d39582fa db playerhousing data 2026-02-24 20:40:30 -03:00
luis ee426ecb0a buildfix 2026-02-24 20:28:36 -03:00
luis 6975a848c5 Housing: Extract real NeighborhoodPlot DB2 data, fix neighborhood naming 2026-02-24 20:12:28 -03:00
luis bd132e93f2 Housing: Add periodic neighborhood expansion check in World::Update 2026-02-24 20:09:11 -03:00
luis d5bb0004b2 Housing: Sniff cross-reference fixes, complete MIRROR_VARS, neighborhood naming 2026-02-24 20:07:28 -03:00
luis c13274e770 Housing: Add missing MIRROR_VARS float game rules, note version caveats 2026-02-24 19:59:59 -03:00
luis edd9012430 Housing: Fix MeshObject sync on reposition/type change, add door interior entry 2026-02-24 19:58:11 -03:00
luis 08408e8727 Housing: Add per-player initiative contribution tracking and fix DB2 metadata 2026-02-24 19:53:13 -03:00
luis 1aac2fe903 Add new housing tables part 1 2026-02-24 19:47:01 -03:00
luis 1583ffb31d Pet Battles: Implement quest/achievement criteria for wins, losses, and captures 2026-02-24 13:46:43 -03:00
luis 12dbb360d9 Pet Battles: Fix EffectType field and pet swap communication 2026-02-24 13:43:08 -03:00
luis 65196b1b28 Pet Battles: Fix wire format from IDA analysis, improve battle flow and stats 2026-02-24 13:41:26 -03:00
luis 1ca8589621 Pet Battles: Set RoundTimeSecs=0 for PvE/NPC round results per retail sniff 2026-02-23 21:04:39 -03:00
luis 1a4054521d Pet Battles: Fix round result wire order and wild pet data for 12.0 client 2026-02-23 21:04:01 -03:00
luis 134d3febf7 Pet Battles: Send FIRST_ROUND instead of REPLACEMENTS_MADE at battle start 2026-02-23 21:01:58 -03:00
luis 0f968f04df Pet Battles: Fix client crash on battle start from packet format mismatches 2026-02-23 21:01:16 -03:00
luis d46305a8c8 Housing: Wire remaining CMSG handlers, add debug logging, validate DB2 stores
Wire 3 unhandled CMSG opcodes (GetAllLicensedDecorQuantities,
GetDecorRefundList, InitiativeUpdateActiveNeighborhood) with full handler
implementations and SMSG responses. Add extensive TC_LOG_DEBUG logging to
all ~120 housing packet Read()/Write() methods for runtime tracing.
Validate ExteriorComponent, ExteriorComponentHook, and ExteriorComponentType
DB2 lookups in fixture handlers before passing IDs to the housing backend.
2026-02-23 20:57:51 -03:00
luis b8c0472e61 merge new fixes 2026-02-23 20:16:07 -03:00
luis 7913293b9a rework 2026-02-23 20:15:01 -03:00
luis c5f26820d1 Housing: Add ExteriorComponent DB2 tables and missing SMSG packet classes
Add 7 ExteriorComponent DB2 tables (structs, LoadInfo, stores, hotfix
enums, prepared statements, SQL DDL) for the exterior fixture system.

Add 8 new SMSG packet classes (3 decor licensing, 5 initiative) with
Write() implementations, enhance 2 existing initiative packets with
data arrays, and fix 5 initiative opcodes from STATUS_UNHANDLED to
STATUS_NEVER.
2026-02-23 20:06:24 -03:00
luis 6bc323ee41 Housing: Log house position and rotation in plot loading diagnostics 2026-02-23 19:58:04 -03:00
luis 39b3235e99 Housing: Add MeshObject rendering, fix edit mode packet, remove brown rectangle, add door GO
- Create MeshObject class (WorldObject + GridObject + MapObject) for housing
  fixture rendering with FMeshObjectData_C, FMirroredPositionData_C, and
  FHousingFixture_C entity fragments
- Spawn 10 structural MeshObjects per house (base, door assembly, walls,
  corners, chimney, windows) with parent-child hierarchy and local-space
  positioning
- Fix child MeshObject grid placement: use parent's world position for
  server-side grid cell so child pieces are visible to nearby players,
  while storing local-space offset in FMirroredPositionData_C for client
  rendering
- Fix SMSG_HOUSING_DECOR_SET_EDIT_MODE_RESPONSE wire format to match retail:
  PackedGUID HouseGuid + PackedGUID HouseGuid2 + uint8 IsInEditMode +
  uint32 Result + PackedGUID DecorGuid (conditional)
- Remove duplicate GO 574432 dynamic spawn that caused brown rectangle on
  plot floor (DB already has 23 properly-rotated pre-spawned instances)
- Add front door GO spawn (entry 602702, type Goober, displayId 116971)
- Add MeshObject to Map type list, grid infrastructure, and object store
- Implement MeshObject movement block in BaseEntity::BuildCreateUpdateBlockMovement
- Add post-purchase initialization in plot reserve handler
- Add per-player plot ownership WorldState values
2026-02-23 19:54:52 -03:00
StorM 1e8a867e15 Fix incorrectly closed brackets HousingMap.cpp 2026-02-23 17:38:03 +01:00
luis bb626a8f0b Housing: Add comprehensive diagnostic logging for house GO spawning 2026-02-22 21:26:13 -03:00
luis 50bd25df55 Phase 3: Implement warband bank (account-wide shared storage) 2026-02-22 19:53:06 -03:00
luis e6bb9bbc58 warband bank dbs soon system 2026-02-22 19:38:09 -03:00
luis ea971af53c Add proper handling for Bind to Warband (types 7/8) and Bind to Warband
until Equipped (type 9) items. Previously only binding types 1-4 were
handled, so warbound items never bound on pickup and bypassed all
trade/mail restrictions.

- Rename ITEM_FIELD_FLAG_UNK2 to ITEM_FIELD_FLAG_CONVERTED_WARBOUND to
  persist BtWuE-to-soulbound conversion across sessions
- Add IsWarbandBound(), IsAccountBound(), ConvertToSoulbound() helpers
- Bind warbound items on pickup in _StoreItem (new + stack merge)
- Convert BtWuE items to permanent soulbound on equip in VisualizeItem
- Allow warbound items to be mailed cross-faction and within bnet account
- Block warbound items from player-to-player trade window
2026-02-22 19:30:54 -03:00
luis c7cccd4081 warbands part 2 2026-02-22 19:03:12 -03:00