Core/Players: Several currency fixes and improvements

Port From (https://github.com/TrinityCore/TrinityCore/commit/03918978c166c9fb191117a0cae9ba1285bf0e37)
This commit is contained in:
hondacrx
2023-02-11 23:28:57 -05:00
parent 90cc620c11
commit 4b798e7cab
25 changed files with 603 additions and 347 deletions
@@ -538,6 +538,60 @@ namespace Game.DataStorage
public uint RechargingAmountPerCycle;
public uint RechargingCycleDurationMS;
public int[] Flags = new int[2];
public CurrencyTypesFlags GetFlags() { return (CurrencyTypesFlags)Flags[0]; }
public CurrencyTypesFlagsB GetFlagsB() { return (CurrencyTypesFlagsB)Flags[1]; }
// Helpers
public int GetScaler()
{
return GetFlags().HasFlag(CurrencyTypesFlags._100_Scaler) ? 100 : 1;
}
public bool HasMaxEarnablePerWeek()
{
return MaxEarnablePerWeek != 0 || GetFlags().HasFlag(CurrencyTypesFlags.ComputedWeeklyMaximum);
}
public bool HasMaxQuantity(bool onLoad = false, bool onUpdateVersion = false)
{
if (onLoad && GetFlags().HasFlag(CurrencyTypesFlags.IgnoreMaxQtyOnLoad))
return false;
if (onUpdateVersion && GetFlags().HasFlag(CurrencyTypesFlags.UpdateVersionIgnoreMax))
return false;
return MaxQty != 0 || MaxQtyWorldStateID != 0 || GetFlags().HasFlag(CurrencyTypesFlags.DynamicMaximum);
}
public bool HasTotalEarned()
{
return GetFlagsB().HasFlag(CurrencyTypesFlagsB.UseTotalEarnedForEarned);
}
public bool IsAlliance()
{
return GetFlags().HasFlag(CurrencyTypesFlags.IsAllianceOnly);
}
public bool IsHorde()
{
return GetFlags().HasFlag(CurrencyTypesFlags.IsHordeOnly);
}
public bool IsSuppressingChatLog(bool onUpdateVersion = false)
{
if ((onUpdateVersion && GetFlags().HasFlag(CurrencyTypesFlags.SuppressChatMessageOnVersionChange)) ||
GetFlags().HasFlag(CurrencyTypesFlags.SuppressChatMessages))
return true;
return false;
}
public bool IsTrackingQuantity()
{
return GetFlags().HasFlag(CurrencyTypesFlags.TrackQuantity);
}
}
public sealed class CurveRecord