Core/Items: Item bonus generation improvements

* Pass ItemContext to item creation wherever possible
* Support scaling item levels with m+ keystone levels (not used currently)
* Fixed item link validation when client sends it as default uninitialized bonus list with context only
* Support scaling items depending on current active season (seasons not implemented)
* Implemented content tuning redirection
Port From (https://github.com/TrinityCore/TrinityCore/commit/0fb8765a6638fd947b59fce44d5c31251d0cdadd)
This commit is contained in:
hondacrx
2023-06-21 09:19:40 -04:00
parent 378b0ffccd
commit 49a07ebcce
30 changed files with 796 additions and 336 deletions
@@ -16,6 +16,18 @@ namespace Game.DataStorage
public uint ChallengeOrigin;
}
public sealed class ChallengeModeItemBonusOverrideRecord
{
public uint Id;
public int ItemBonusTreeGroupID;
public int DstItemBonusTreeID;
public sbyte Type;
public int Value;
public int MythicPlusSeasonID;
public int PvPSeasonID;
public uint SrcItemBonusTreeID;
}
public sealed class CharTitlesRecord
{
public uint Id;
@@ -317,6 +329,15 @@ namespace Game.DataStorage
public ushort[] Camera = new ushort[8];
}
public sealed class ConditionalContentTuningRecord
{
public uint Id;
public int OrderIndex;
public int RedirectContentTuningID;
public int RedirectFlag;
public uint ParentContentTuningID;
}
public sealed class ContentTuningRecord
{
public uint Id;
@@ -357,6 +378,13 @@ namespace Game.DataStorage
public uint ContentTuningID;
}
public sealed class ContentTuningXLabelRecord
{
public uint Id;
public int LabelID;
public uint ContentTuningID;
}
public sealed class ConversationLineRecord
{
public uint Id;
+32 -5
View File
@@ -2,6 +2,7 @@
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
using Framework.Constants;
using System;
namespace Game.DataStorage
{
@@ -99,12 +100,14 @@ namespace Game.DataStorage
public sealed class ItemBonusListGroupEntryRecord
{
public uint Id;
public uint ItemBonusListGroupID;
public int ItemBonusListGroupID;
public int ItemBonusListID;
public int ItemLevelSelectorID;
public int OrderIndex;
public int SequenceValue;
public int ItemExtendedCostID;
public int PlayerConditionID;
public int Flags;
public int ItemLogicalCostGroupID;
}
public sealed class ItemBonusListLevelDeltaRecord
@@ -120,6 +123,13 @@ namespace Game.DataStorage
public int ItemID;
}
public sealed class ItemBonusTreeRecord
{
public uint Id;
public int Flags;
public int InventoryTypeSlotMask;
}
public sealed class ItemBonusTreeNodeRecord
{
public uint Id;
@@ -129,8 +139,8 @@ namespace Game.DataStorage
public ushort ChildItemLevelSelectorID;
public uint ChildItemBonusListGroupID;
public uint IblGroupPointsModSetID;
public int Unknown1010_1;
public int Unknown1010_2;
public int MinMythicPlusLevel;
public int MaxMythicPlusLevel;
public uint ParentItemBonusTreeID;
}
@@ -151,11 +161,24 @@ namespace Game.DataStorage
public byte Flags;
}
public sealed class ItemContextPickerEntryRecord
{
public uint Id;
public byte ItemCreationContext;
public byte OrderIndex;
public int PVal;
public int LabelID;
public uint Flags;
public uint PlayerConditionID;
public uint ItemContextPickerID;
}
public sealed class ItemCurrencyCostRecord
{
public uint Id;
public uint ItemID;
}
// common struct for:
// ItemDamageAmmo.dbc
// ItemDamageOneHand.dbc
@@ -220,12 +243,16 @@ namespace Game.DataStorage
public ushort AzeriteUnlockMappingSet;
}
public sealed class ItemLevelSelectorQualityRecord
public sealed class ItemLevelSelectorQualityRecord : IEquatable<ItemLevelSelectorQualityRecord>, IEquatable<ItemQuality>
{
public uint Id;
public uint QualityItemBonusListID;
public sbyte Quality;
public uint ParentILSQualitySetID;
public bool Equals(ItemLevelSelectorQualityRecord other) { return Quality < other.Quality; }
public bool Equals(ItemQuality quality) { return Quality < (sbyte)quality; }
}
public sealed class ItemLevelSelectorQualitySetRecord
@@ -229,4 +229,12 @@ namespace Game.DataStorage
public uint SubtitleFileDataID;
public int SubtitleFileFormat;
}
public sealed class MythicPlusSeasonRecord
{
public uint Id;
public int MilestoneSeason;
public int ExpansionLevel;
public int HeroicLFGDungeonMinGear;
}
}
@@ -178,6 +178,14 @@ namespace Game.DataStorage
public byte ItemLevelDelta;
}
public sealed class PvpSeasonRecord
{
public uint Id;
public int MilestoneSeason;
public int AllianceAchievementID;
public int HordeAchievementID;
}
public sealed class PvpTalentRecord
{
public string Description;