diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-09-02 12:42:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-02 12:42:02 +0200 |
| commit | 470f45db7af8a9976c89f9d69f1637085ebb0fcc (patch) | |
| tree | 84f809fee0df1c5592fb967f60f1b3d9c4003d83 /src/server/game/Chat | |
| parent | d0b91f69279a823be159590c09945bc426f50d3e (diff) | |
UnitTests: |Hspell and |Htalent unit testing
Diffstat (limited to 'src/server/game/Chat')
| -rw-r--r-- | src/server/game/Chat/HyperlinkTags.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/Chat/Hyperlinks.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Chat/Hyperlinks.h | 1 |
3 files changed, 22 insertions, 6 deletions
diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 35c47c04c0d..f34053360d6 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -183,11 +183,23 @@ bool Trinity::Hyperlinks::LinkTags::talent::StoreTo(TalentLinkData& val, std::st return false; if (rank < -1 || rank >= MAX_TALENT_RANK) return false; + val.Talent = sTalentStore.LookupEntry(talentId); val.Rank = rank+1; - if (!(val.Talent = sTalentStore.LookupEntry(talentId))) - return false; - if (val.Rank > 0 && !val.Talent->SpellRank[val.Rank - 1]) + if (!val.Talent) return false; + if (val.Rank > 0) + { + uint32 const spellId = val.Talent->SpellRank[val.Rank - 1]; + if (!spellId) + return false; + val.Spell = sSpellMgr->GetSpellInfo(spellId); + if (!val.Spell) + return false; + } + else + { + val.Spell = nullptr; + } return true; } diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp index 8b82cb1e38c..06fe42b1fb1 100644 --- a/src/server/game/Chat/Hyperlinks.cpp +++ b/src/server/game/Chat/Hyperlinks.cpp @@ -277,9 +277,12 @@ struct LinkValidator<LinkTags::talent> { static bool IsTextValid(TalentLinkData const& data, std::string_view text) { - if (SpellInfo const* info = sSpellMgr->GetSpellInfo(data.Talent->SpellRank[0])) - return LinkValidator<LinkTags::spell>::IsTextValid(info, text); - return false; + SpellInfo const* info = data.Spell; + if (!info) + info = sSpellMgr->GetSpellInfo(data.Talent->SpellRank[0]); + if (!info) + return false; + return LinkValidator<LinkTags::spell>::IsTextValid(info, text); } static bool IsColorValid(TalentLinkData const&, HyperlinkColor c) diff --git a/src/server/game/Chat/Hyperlinks.h b/src/server/game/Chat/Hyperlinks.h index 4a263df4a01..b9399d153e4 100644 --- a/src/server/game/Chat/Hyperlinks.h +++ b/src/server/game/Chat/Hyperlinks.h @@ -77,6 +77,7 @@ namespace Trinity::Hyperlinks { TalentEntry const* Talent; uint8 Rank; + SpellInfo const* Spell; }; struct TradeskillLinkData |
