aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Chat/HyperlinkTags.cpp8
-rw-r--r--src/server/game/Chat/Hyperlinks.cpp2
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;
}