diff options
-rw-r--r-- | src/server/game/Chat/HyperlinkTags.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Chat/Hyperlinks.h | 7 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 4fa14dc7b1b..a13a3348dd4 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -135,13 +135,9 @@ bool Trinity::Hyperlinks::LinkTags::trade::StoreTo(TradeskillLinkData& val, char { HyperlinkDataTokenizer t(pos, len); uint32 spellId; - uint64 guid; if (!t.TryConsumeTo(spellId)) return false; val.Spell = sSpellMgr->GetSpellInfo(spellId); - if (!(val.Spell && val.Spell->Effects[0].Effect == SPELL_EFFECT_TRADE_SKILL && t.TryConsumeTo(val.CurValue) && - t.TryConsumeTo(val.MaxValue) && t.TryConsumeTo(guid) && t.TryConsumeTo(val.KnownRecipes) && t.IsEmpty())) - return false; - val.Owner.Set(guid); - return true; + return (val.Spell && val.Spell->Effects[0].Effect == SPELL_EFFECT_TRADE_SKILL && t.TryConsumeTo(val.CurValue) && + t.TryConsumeTo(val.MaxValue) && t.TryConsumeTo(val.Owner) && t.TryConsumeTo(val.KnownRecipes) && t.IsEmpty()); } diff --git a/src/server/game/Chat/Hyperlinks.h b/src/server/game/Chat/Hyperlinks.h index 6b5aa4b0d86..5808cbe9447 100644 --- a/src/server/game/Chat/Hyperlinks.h +++ b/src/server/game/Chat/Hyperlinks.h @@ -121,6 +121,13 @@ namespace LinkTags { catch (...) { return false; } return true; } + + static bool StoreTo(ObjectGuid& val, char const* pos, size_t len) + { + try { val.Set(std::stoul(std::string(pos, len), nullptr, 16)); } + catch (...) { return false; } + return true; + } }; #define make_base_tag(ltag, type) struct ltag : public base_tag { using value_type = type; static constexpr char const* tag() { return #ltag; } } |