diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Chat/HyperlinkTags.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Chat/Hyperlinks.cpp | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index a13a3348dd4..0832b03f2e9 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -122,11 +122,15 @@ bool Trinity::Hyperlinks::LinkTags::talent::StoreTo(TalentLinkData& val, char co { HyperlinkDataTokenizer t(pos, len); uint32 talentId; - if (!(t.TryConsumeTo(talentId) && t.TryConsumeTo(val.Rank) && t.IsEmpty())) + int8 rank; // talent links contain <learned rank>-1, we store <learned rank> + if (!(t.TryConsumeTo(talentId) && t.TryConsumeTo(rank) && t.IsEmpty())) return false; + if (rank < -1 || rank > 4) + return false; + val.Rank = rank+1; if (!(val.Talent = sTalentStore.LookupEntry(talentId))) return false; - if (!val.Talent->RankID[val.Rank-1]) + if (val.Rank > 0 && !val.Talent->RankID[val.Rank - 1]) return false; return true; } diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp index 9822254f3fd..218650af7aa 100644 --- a/src/server/game/Chat/Hyperlinks.cpp +++ b/src/server/game/Chat/Hyperlinks.cpp @@ -271,7 +271,7 @@ struct LinkValidator<LinkTags::talent> { static bool IsTextValid(TalentLinkData const& data, char const* pos, size_t len) { - if (SpellInfo const* info = sSpellMgr->GetSpellInfo(data.Talent->RankID[data.Rank-1])) + if (SpellInfo const* info = sSpellMgr->GetSpellInfo(data.Talent->RankID[0])) return LinkValidator<LinkTags::spell>::IsTextValid(info, pos, len); return false; } |