aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Chat/Hyperlinks.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp
index 08d1bd37ea3..dec3da491be 100644
--- a/src/server/game/Chat/Hyperlinks.cpp
+++ b/src/server/game/Chat/Hyperlinks.cpp
@@ -248,24 +248,29 @@ struct LinkValidator<LinkTags::enchant>
{
static bool IsTextValid(SpellInfo const* info, char const* pos, size_t len)
{
+ if (LinkValidator<LinkTags::spell>::IsTextValid(info, pos, len))
+ return true;
SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(info->Id);
if (bounds.first == bounds.second)
- return LinkValidator<LinkTags::spell>::IsTextValid(info, pos, len);
-
- SkillLineEntry const* skill = sSkillLineStore.LookupEntry(bounds.first->second->SkillupSkillLineID
- ? bounds.first->second->SkillupSkillLineID
- : bounds.first->second->SkillLine);
- if (!skill)
return false;
- for (LocaleConstant i = LOCALE_enUS; i < TOTAL_LOCALES; i = LocaleConstant(i + 1))
+ for (auto pair = bounds.first; pair != bounds.second; ++pair)
{
- char const* skillName = skill->DisplayName[i];
- size_t skillLen = strlen(skillName);
- if (len > skillLen + 2 && // or of form [Skill Name: Spell Name]
- !strncmp(pos, skillName, skillLen) && !strncmp(pos + skillLen, ": ", 2) &&
- equal_with_len((*info->SpellName)[i], pos + (skillLen + 2), len - (skillLen + 2)))
- return true;
+ SkillLineEntry const* skill = sSkillLineStore.LookupEntry(pair->second->SkillupSkillLineID
+ ? pair->second->SkillupSkillLineID
+ : pair->second->SkillLine);
+ if (!skill)
+ return false;
+
+ for (LocaleConstant i = LOCALE_enUS; i < TOTAL_LOCALES; i = LocaleConstant(i + 1))
+ {
+ char const* skillName = skill->DisplayName[i];
+ size_t skillLen = strlen(skillName);
+ if (len > skillLen + 2 && // or of form [Skill Name: Spell Name]
+ !strncmp(pos, skillName, skillLen) && !strncmp(pos + skillLen, ": ", 2) &&
+ equal_with_len((*info->SpellName)[i], pos + (skillLen + 2), len - (skillLen + 2)))
+ return true;
+ }
}
return false;
}