Commit Graph
3372 Commits
Author SHA1 Message Date
luis fdb4690d00 CMSG_GUILD_CHANGE_NAME_REQUEST 2026-07-06 14:15:11 -03:00
luis 9819886858 remove custom dm 2026-07-06 14:13:41 -03:00
stevebone 5a4fa4f1d6 Update battleground_warsong_gulch.cpp
fix include for gcc

Signed-off-by: luis <[email protected]>
2026-07-06 14:09:23 -03:00
luis 20ea05c360 Scripts/FSB: WSG improvements
- fix death issues for bot corpses moving and being attackable
- guard hired bots from receiving movement orders - this should not happen for hired bots as they should follow the player
- added BG role re-roll after flag capture
- fix npc flag being removed in BG for hired bots.
2026-07-06 14:06:57 -03:00
luis adba2d7f9c merge 2026-07-06 13:59:38 -03:00
luis 7074c43c07 Scripts/FSB: WSG movement and flag gameplay WIP 2026-07-06 13:44:18 -03:00
luis 6558135f5c GroupFinderActivity.db2 2026-07-06 13:43:20 -03:00
luis f1ebfc574e Core/Scripts: allow units to be used with the WSG like flags objects. 2026-07-06 13:27:22 -03:00
luis 1623d60911 Core/SpellEffects: allow bots to trigger flag drop on aura loss - death 2026-07-06 13:22:14 -03:00
stevebone 61a8ca56ce Scripts/FSB: skip AFK actions in BG for bots
Signed-off-by: luis <[email protected]>
2026-07-06 13:19:41 -03:00
luis 77f9cb6072 Core/Misc: fix crash when bot casts disarm 2026-07-06 13:18:55 -03:00
luis 3cd2233416 Scripts/Hunter: fix crash due to binding shot market spell trigger 2026-07-06 13:11:27 -03:00
stevebone ac2ad5aa25 Scripts/FSB: fix bug with chatter type being incorrect for category botBuffSelf
Signed-off-by: luis <[email protected]>
2026-07-06 13:10:29 -03:00
stevebone cd34b61924 Scripts/FSB: add storage for battleground data for bots to be used in the BG scripts
Signed-off-by: luis <[email protected]>
2026-07-06 13:09:26 -03:00
luis 2a10bff220 Scripts/FSB: skip ooc actions for bot in BG 2026-07-06 13:08:54 -03:00
stevebone 6ce5175a3a Scripts/FSB: added bot chatter after gossip change language
Signed-off-by: luis <[email protected]>
2026-07-06 13:06:53 -03:00
luis b94a5b8541 Scripts/FSB: implemented bot race specific language with selection via gossip as extra
- bot now uses their race specific language for SAY/YELL
- bot has a language menu in their gossip to pick from race specific language OR the Alliance Common or Horde Orchis languages.
2026-07-06 13:05:35 -03:00
luis bb26fbf0f5 - REQUEST_LFG_LIST_BLACKLIST -> UPDATE_BLACKLIST. Traced the real wire
({uint32 count; count x {uint32 activityId, uint32 reason}} - the layout
  extractor mislabeled it struct{u32,u32,u32}); returns the current empty
  set. Soft-blacklist model left for a sniff-confirmed follow-up.
- Listing expiry now notifies the leader (UPDATE_EXPIRATION + a final
  UPDATE_STATUS unlisted) before the ticker drops the listing.
- Config: LFGList.ListingExpiryMinutes (120), LFGList.MaxSearchResults (100).

Completes handler coverage for the whole LFG_LIST_* client protocol.
2026-07-05 16:39:48 -03:00
luis 156bce43af Full applicant lifecycle for premade listings, all keyed on a globally-unique
application id (both directions agree on which application a RideTicket names):

- APPLY_TO_GROUP: register applicant (role mask + live spec/item level),
  confirm with APPLY_TO_GROUP_RESULT, notify applicant (APPLICATION_STATUS
  = Applied) and push the refreshed APPLICANT_LIST_UPDATE to the leader.
- CANCEL_APPLICATION / DECLINE_APPLICANT: applicant- and leader-initiated
  removal with the appropriate status update and leader-list refresh.
- INVITE_APPLICANT -> INVITE_RESPONSE: leader invites; on accept the applicant
  joins (or forms) the leader's party via GroupMgr, mirroring LFGMgr's group
  creation; on decline the application is dropped.

LFGListMgr gains application storage + an application index with cleanup on
listing removal. Five opcodes registered (STATUS_LOGGEDIN).
2026-07-05 16:35:38 -03:00
luis 6fff4641d9 feat(lfg-list): P1 search — filter registry and return results
HandleLFGListSearch filters published listings by category + activity
group (0 = wildcard, capped by LFGList.MaxSearchResults) directly against
the stored listing descriptors, so no GroupFinder DB2 store is required for
basic filtering. Builds SMSG_LFG_LIST_SEARCH_RESULTS rows (id, activity,
leader, live member count from GroupMgr, echoed listing info) and follows
with SMSG_LFG_LIST_SEARCH_STATUS(complete). CMSG_LFG_LIST_SEARCH registered.
2026-07-05 13:32:32 -03:00
luis 6b403696ac Premade Group Finder 2026-07-05 12:17:03 -03:00
luis 9c4e47c43a --- 2026-07-05 12:07:34 -03:00
luis 73013ddb10 Mythic+: Phase 18 - Great Vault claim flow (reward options + collect) 2026-07-05 11:50:41 -03:00
Shauren e714c947c6 Core/PacketIO: Fix missing SMSG_QUERY_QUEST_INFO_RESPONSE field assignment
Signed-off-by: luis <[email protected]>
2026-07-04 19:11:07 -03:00
Céfiro_Caecias ee38a376a7 DB/World: DBErrors 2026-07-04 11:48:12 -03:00
Céfiro_Caecias 01baa012eb DB/Hotfixes: DBErrors 2026-07-04 10:27:20 -03:00
luis 514a92c24c Mythic+: Phase 17 - end-of-run gear reward at authentic item level 2026-07-04 04:19:21 -03:00
luis 06b0c47b61 Mythic+: Phase 16 - Great Vault DB2 store + progress packet 2026-07-04 04:11:23 -03:00
luis 86f2eb129d m+ phase 15 2026-07-04 03:30:25 -03:00
luis f430e5dc3b Mythic+: Phase 14 - end-of-run crest reward (deep-extract payoff)
On completion, award each player crests of the tier matching the keystone level.

Currency ids are EXTRACTED from CurrencyTypes.db2 @68275 (Midnight Season 1
Dawncrests: Veteran 3341, Champion 3343, Hero 3345, Myth 3347) - real values, not
guessed. Tier breakpoints (<=3 / <=6 / <=9 / 10+) and the per-run amount are season
tuning, so they are config-tunable (ChallengeMode.Crest.*). Granted via AddCurrency
with CurrencyGainSource::Loot, guarded on sCurrencyTypesStore.LookupEntry (safe no-op
if the currency is absent on this build).

Extraction also PROVED the RewardQuestID path is a dead end for modern M+: every
MapChallengeMode row from Legion onward has all-zero {First,}RewardQuestID arrays
(only legacy MoP/WoD challenge modes are populated) - so end-of-run rewards never
flowed through it. Details: c:\dumps\mplus_reward_extract_68275.md.

Builds clean (parallel 1, incremental).
2026-07-04 03:22:12 -03:00
luis 1b2d92452d Mythic+: Phase 13 - periodic spawn affixes (Incorporeal / Afflicted) 2026-07-04 03:19:23 -03:00
luis bc9484d7da Mythic+: Phase 12 - Spiteful affix (content layer, spawn affixes begin) 2026-07-04 03:16:37 -03:00
luis 90ee6ef314 remove 2026-07-04 03:12:13 -03:00
luis d19dcf5e73 Mythic+: Phase 11 - SMSG_CHALLENGE_MODE_COMPLETE (run result)
Broadcast SMSG_CHALLENGE_MODE_COMPLETE to the party on completion
(ChallengeMode::Complete), carrying the finished run (MapSummary: map/level/affixes
+ present players as members).

The full deserializer tree was ground out via idat to the bottom: outer
sub_7FF729090EE0 -> inner sub_7FF729090C10 -> 112-byte run element sub_7FF7291CBD40
-> sub_7FF7291CC010; the deepest calls (sub_7FF7291CE090 / sub_7FF729184E40) are
std::vector grow/resize and read no wire, so every byte is now accounted for. The
packet is byte-aligned (the "bit7" helper reads store whole bytes -> uint8, no
bitstream). Full spec: c:\dumps\COMPLETE_PACKET_WIRE_68275.md.

The three trailing DungeonScoreData lists (pairs / runs / names) are sent empty:
the server does not persist the full per-run score tree. The framing is exact so
this is display-only, never a desync. Factored a shared operator<< for the
map-summary struct (also used by ALL_MAP_STATS). Even upstream TC leaves this SMSG
STATUS_UNHANDLED.
2026-07-04 03:11:26 -03:00
luis 8859d232eb Mythic+: Phase 9 - SMSG_MYTHIC_PLUS_ALL_MAP_STATS (client dungeon-score list) 2026-07-04 03:04:39 -03:00
luis 66445ca43f Mythic+: Phase 5 - CMSG_RESET_CHALLENGE_MODE handler 2026-07-04 02:53:16 -03:00
luis 5b11c70859 Core/Garrison: Resolve CompleteMissionFollowerInfo.Unknown1 as HealingTimestamp 2026-07-04 00:17:34 -03:00
luis 884a7299ba combat spells and housing rework 2026-07-04 00:13:42 -03:00
luis 659cf34fcb Pet Battles: Migrate wire layer to 12.0.7 (build 68275) 2026-07-03 23:33:03 -03:00
luis 7498cfd6d0 fix realm 2026-07-03 22:34:57 -03:00
luis 8441498944 typo 2026-07-03 22:01:41 -03:00
luis 404c2e2255 Mythic+: Phase 4 - keystone upgrade reward on completion
On a completed run the activated keystone is upgraded in place: a timed clear
raises it by the earned amount (+1/+2/+3) and rerolls it to a random dungeon
from the active season pool with fresh affixes; an over-time clear depletes it
by one (floor +2). This closes the progression loop without depending on the
seasonal keystone item entry (not resolvable offline), by editing the existing
item's ITEM_MODIFIER_CHALLENGE_* modifiers.

End-of-run loot, the Great Vault M+ track and the SMSG_MYTHIC_PLUS_ALL_MAP_STATS
UI reply are tracked follow-ups (see MYTHICPLUS_IMPLEMENTATION_STATUS_68275.md).
Builds clean.
2026-07-03 21:53:28 -03:00
luis c68f9b6906 Mythic+: Phase 3 - death penalty, run scoring and best-run persistence 2026-07-03 21:29:27 -03:00
luis 98eadcf622 Mythic+: Phase 2 - Blizzlike creature keystone scaling 2026-07-03 21:13:23 -03:00
luis b894ea04ac Mythic+: Phase 1 - keystone-driven run lifecycle on the instance 2026-07-03 21:10:23 -03:00
luis c49cc7b49a Mythic+: fix ChallengeModePackets build 2026-07-03 20:57:49 -03:00
luis 9b8418b40f Mythic+: Phase 0 - season/affix query opcodes (binary-confirmed wire)
Wire the first two Challenge Mode client requests to real replies, replacing
Handle_NULL. Packet layouts are confirmed from the client deserializers
(sub_7FF729091240 / sub_7FF729091470->290 @68275), not guessed:

- SMSG_MYTHIC_PLUS_SEASON_DATA = { bool IsMythicPlusActive } (single bit).
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = { uint32 Count; N x {int32 KeystoneAffixID;
  int32 SeasonID} } (plain 4-byte LE; field 2 = SeasonID per
  C_MythicPlus.GetCurrentAffixes -> {id, seasonID}).

New ChallengeModePackets.{h,cpp} (registered in AllPackets.h), WorldSession
forward decls + handler decls, ChallengeModeHandler.cpp:
- HandleRequestMythicPlusSeasonData -> IsMythicPlusActive = season resolved.
- HandleRequestMythicPlusAffixes    -> the configured weekly affixes + season.
Both driven by sChallengeModeMgr. worldserver.conf.dist gains ChallengeMode.*.
CMSG_REQUEST_MYTHIC_PLUS_{SEASON_DATA,AFFIXES} flipped to STATUS_LOGGEDIN.
2026-07-03 20:56:33 -03:00
luis 9801e21eba Mythic+: Add ChallengeModeMgr with Blizzlike keystone scaling engine
New greenfield ChallengeMode module providing the static-data + scaling
foundation for Mythic Keystone dungeons:
- Per-level creature HP/damage multipliers via GlobalCurve
  ChallengeModeHealth(21)/ChallengeModeDamage(22) -> CurvePoint (reproduces the
  client GetPowerLevelDamageHealthMod curve, ~+10%/level). Fills the prior NYI gap.
- Dungeon pool, par times and +1/+2/+3 keystone-upgrade thresholds read from
  MapChallengeMode.CriteriaCount[0..2].
- Active-season resolution + weekly affix schedule, config-driven
  (ChallengeMode.SeasonId / AffixSchedule / AffixLevelBands) since the live
  season/rotation is a runtime pointer, not a static DB2 value.
Initialized from World::SetInitialWorldSettings
2026-07-03 20:31:39 -03:00
luis 1edb53a6e7 rollback build 2026-07-03 20:23:58 -03:00
stevebone 6ee87e3887 Scripts/FSB: missing include
Signed-off-by: luis <[email protected]>
2026-07-03 20:17:17 -03:00