mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Chat: Correct Hyperlink validation for incomplete achievements.
This commit is contained in:
@@ -62,9 +62,23 @@ bool Trinity::Hyperlinks::LinkTags::achievement::StoreTo(AchievementLinkData& va
|
||||
if (!t.TryConsumeTo(achievementId))
|
||||
return false;
|
||||
val.Achievement = sAchievementMgr->GetAchievement(achievementId);
|
||||
return val.Achievement && t.TryConsumeTo(val.CharacterId) && t.TryConsumeTo(val.IsFinished) &&
|
||||
t.TryConsumeTo(val.Month) && t.TryConsumeTo(val.Day) && t.TryConsumeTo(val.Year) && t.TryConsumeTo(val.Criteria[0]) &&
|
||||
t.TryConsumeTo(val.Criteria[1]) && t.TryConsumeTo(val.Criteria[2]) && t.TryConsumeTo(val.Criteria[3]) && t.IsEmpty();
|
||||
if (!(val.Achievement && t.TryConsumeTo(val.CharacterId) && t.TryConsumeTo(val.IsFinished) &&
|
||||
t.TryConsumeTo(val.Month) && t.TryConsumeTo(val.Day)))
|
||||
return false;
|
||||
int8 year;
|
||||
if (!t.TryConsumeTo(year))
|
||||
return false;
|
||||
if (val.IsFinished) // if finished, year must be >= 0
|
||||
{
|
||||
if (year < 0)
|
||||
return false;
|
||||
val.Year = static_cast<uint8>(year);
|
||||
}
|
||||
else
|
||||
val.Year = 0;
|
||||
|
||||
return (t.TryConsumeTo(val.Criteria[0]) &&
|
||||
t.TryConsumeTo(val.Criteria[1]) && t.TryConsumeTo(val.Criteria[2]) && t.TryConsumeTo(val.Criteria[3]) && t.IsEmpty());
|
||||
}
|
||||
|
||||
bool Trinity::Hyperlinks::LinkTags::enchant::StoreTo(SpellInfo const*& val, std::string_view text)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "ObjectGuid.h"
|
||||
#include "StringConvert.h"
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <type_traits>
|
||||
@@ -41,10 +42,10 @@ namespace Trinity::Hyperlinks
|
||||
AchievementEntry const* Achievement;
|
||||
ObjectGuid::LowType CharacterId;
|
||||
bool IsFinished;
|
||||
uint16 Year;
|
||||
uint8 Year;
|
||||
uint8 Month;
|
||||
uint8 Day;
|
||||
uint32 Criteria[4];
|
||||
std::array<uint32, 4> Criteria;
|
||||
};
|
||||
|
||||
struct GlyphLinkData
|
||||
@@ -57,7 +58,7 @@ namespace Trinity::Hyperlinks
|
||||
{
|
||||
ItemTemplate const* Item;
|
||||
uint32 EnchantId;
|
||||
uint32 GemEnchantId[3];
|
||||
std::array<uint32, 3> GemEnchantId;
|
||||
int32 RandomPropertyId;
|
||||
int32 RandomPropertySeed;
|
||||
uint8 RenderLevel;
|
||||
|
||||
Reference in New Issue
Block a user