mod-paragon: bypass talent DependsOn check for Paragon class

Player::LearnTalent enforces the column-arrow prereq (talentInfo->DependsOn)
even when called with command=true, so Character Advancement's commit path
was silently dropping any talent whose Talent.dbc row points to an unrelated
sibling -- e.g. Deep Wounds (depends on Improved Heroic Strike), Bloody
Vengeance (depends on Dark Conviction), Expose Weakness (depends on Lethal
Shots). Players spent points in the panel, hit Learn All, and the talent
silently never reached addTalent / OnPlayerLearnTalents -- the snapshot came
back without it and the client repainted the points as "unspent."

The Character Advancement panel gates progression via AE/TE essence cost,
not via the spec-tree column arrows, so the DependsOn rule doesn't apply to
class 12. Skip it for Paragon, mirroring the existing class-mask bypass a
few lines above.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Docker Build
2026-05-09 15:16:30 -04:00
parent 8363b1b6c8
commit 8a0da95ed2
+6 -1
View File
@@ -14084,7 +14084,12 @@ void Player::LearnTalent(uint32 talentId, uint32 talentRank, bool command /*= fa
} }
// xinef: check if talent deponds on another talent // xinef: check if talent deponds on another talent
if (talentInfo->DependsOn > 0) // mod-paragon: Character Advancement gates talents by AE/TE essence cost,
// not by the column-arrow prereq from Blizzard's spec UI. For class 12
// (Paragon) we skip the DependsOn check so e.g. Deep Wounds, Bloody
// Vengeance and Expose Weakness can be picked without first speccing into
// their unrelated prereq sibling.
if (talentInfo->DependsOn > 0 && getClass() != CLASS_PARAGON)
if (TalentEntry const* depTalentInfo = sTalentStore.LookupEntry(talentInfo->DependsOn)) if (TalentEntry const* depTalentInfo = sTalentStore.LookupEntry(talentInfo->DependsOn))
{ {
bool hasEnoughRank = false; bool hasEnoughRank = false;