aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Keresztes Schmidt <carbenium@outlook.com>2020-08-17 18:26:41 +0200
committerGitHub <noreply@github.com>2020-08-17 18:26:41 +0200
commit9df61fd111a39983d751ac0bed767137b330c547 (patch)
tree6117ea07a0b3c8acd31745696381f7ce9bf6201a /src
parentfa6a8e8f647705c4631b7ed5d2dbd41e3b1d6b6b (diff)
Core/ChatCommands: Parse SpellInfo also from enchant, glyph, talent and trade links (PR #25270)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp10
-rw-r--r--src/server/game/Chat/HyperlinkTags.cpp2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp
index fb94f6811b3..22eabb01613 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp
+++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp
@@ -54,12 +54,20 @@ char const* Trinity::ChatCommands::ArgInfo<GameTele const*>::TryConsume(GameTele
struct SpellInfoVisitor
{
using value_type = SpellInfo const*;
+ value_type operator()(Hyperlink<enchant> enchant) const { return enchant; };
+ value_type operator()(Hyperlink<glyph> glyph) const { return operator()(glyph->Glyph->SpellID); };
value_type operator()(Hyperlink<spell> spell) const { return *spell; }
+ value_type operator()(Hyperlink<talent> talent) const
+ {
+ return operator()(talent->Talent->SpellRank[talent->Rank - 1]);
+ };
+ value_type operator()(Hyperlink<trade> trade) const { return trade->Spell; };
+
value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId); }
};
char const* Trinity::ChatCommands::ArgInfo<SpellInfo const*>::TryConsume(SpellInfo const*& data, char const* args)
{
- Variant<Hyperlink<spell>, uint32> val;
+ Variant<Hyperlink<enchant>, Hyperlink<glyph>, Hyperlink<spell>, Hyperlink<talent>, Hyperlink<trade>, uint32> val;
if ((args = CommandArgsConsumerSingle<decltype(val)>::TryConsumeTo(val, args)))
data = val.visit(SpellInfoVisitor());
return args;
diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp
index 6276cd0cafb..a933504b866 100644
--- a/src/server/game/Chat/HyperlinkTags.cpp
+++ b/src/server/game/Chat/HyperlinkTags.cpp
@@ -125,7 +125,7 @@ bool Trinity::Hyperlinks::LinkTags::talent::StoreTo(TalentLinkData& val, char co
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)
+ if (rank < -1 || rank >= MAX_TALENT_RANK)
return false;
val.Rank = rank+1;
if (!(val.Talent = sTalentStore.LookupEntry(talentId)))