Implement ItemLevelSelector.db2

Implemented glowing new items in inventory
This commit is contained in:
hondacrx
2017-09-20 00:26:09 -04:00
parent 2673fe277e
commit bd1252b3c2
9 changed files with 85 additions and 30 deletions
+2
View File
@@ -140,6 +140,7 @@ namespace Game.DataStorage
ItemEffectStorage = DB6Reader.Read<ItemEffectRecord>("ItemEffect.db2", DB6Metas.ItemEffectMeta, HotfixStatements.SEL_ITEM_EFFECT);
ItemStorage = DB6Reader.Read<ItemRecord>("Item.db2", DB6Metas.ItemMeta, HotfixStatements.SEL_ITEM);
ItemExtendedCostStorage = DB6Reader.Read<ItemExtendedCostRecord>("ItemExtendedCost.db2", DB6Metas.ItemExtendedCostMeta, HotfixStatements.SEL_ITEM_EXTENDED_COST);
ItemLevelSelectorStorage = DB6Reader.Read<ItemLevelSelectorRecord>("ItemLevelSelector.db2", DB6Metas.ItemLevelSelectorMeta, HotfixStatements.SEL_ITEM_LEVEL_SELECTOR);
ItemLimitCategoryStorage = DB6Reader.Read<ItemLimitCategoryRecord>("ItemLimitCategory.db2", DB6Metas.ItemLimitCategoryMeta, HotfixStatements.SEL_ITEM_LIMIT_CATEGORY, HotfixStatements.SEL_ITEM_LIMIT_CATEGORY_LOCALE);
ItemModifiedAppearanceStorage = DB6Reader.Read<ItemModifiedAppearanceRecord>("ItemModifiedAppearance.db2", DB6Metas.ItemModifiedAppearanceMeta, HotfixStatements.SEL_ITEM_MODIFIED_APPEARANCE);
ItemPriceBaseStorage = DB6Reader.Read<ItemPriceBaseRecord>("ItemPriceBase.db2", DB6Metas.ItemPriceBaseMeta, HotfixStatements.SEL_ITEM_PRICE_BASE);
@@ -464,6 +465,7 @@ namespace Game.DataStorage
public static DB6Storage<ItemEffectRecord> ItemEffectStorage;
public static DB6Storage<ItemRecord> ItemStorage;
public static DB6Storage<ItemExtendedCostRecord> ItemExtendedCostStorage;
public static DB6Storage<ItemLevelSelectorRecord> ItemLevelSelectorStorage;
public static DB6Storage<ItemLimitCategoryRecord> ItemLimitCategoryStorage;
public static DB6Storage<ItemModifiedAppearanceRecord> ItemModifiedAppearanceStorage;
public static DB6Storage<ItemPriceBaseRecord> ItemPriceBaseStorage;
+25 -1
View File
@@ -777,6 +777,11 @@ namespace Game.DataStorage
public List<uint> GetItemBonusTree(uint itemId, uint itemBonusTreeMod)
{
List<uint> bonusListIDs = new List<uint>();
ItemSparseRecord proto = CliDB.ItemSparseStorage.LookupByKey(itemId);
if (proto == null)
return bonusListIDs;
var itemIdRange = _itemToBonusTree.LookupByKey(itemId);
if (itemIdRange.Empty())
return bonusListIDs;
@@ -788,8 +793,27 @@ namespace Game.DataStorage
continue;
foreach (ItemBonusTreeNodeRecord bonusTreeNode in treeList)
if (bonusTreeNode.BonusTreeModID == itemBonusTreeMod)
{
if (bonusTreeNode.BonusTreeModID != itemBonusTreeMod)
continue;
if (bonusTreeNode.BonusListID != 0)
{
bonusListIDs.Add(bonusTreeNode.BonusListID);
}
else if (bonusTreeNode.ItemLevelSelectorID != 0)
{
ItemLevelSelectorRecord selector = CliDB.ItemLevelSelectorStorage.LookupByKey(bonusTreeNode.ItemLevelSelectorID);
if (selector == null)
continue;
short delta = (short)(selector.ItemLevel - proto.ItemLevel);
uint bonus = GetItemBonusListForItemLevelDelta(delta);
if (bonus != 0)
bonusListIDs.Add(bonus);
}
}
}
return bonusListIDs;
+6
View File
@@ -199,6 +199,12 @@ namespace Game.DataStorage
public byte RequiredAchievement;
}
public sealed class ItemLevelSelectorRecord
{
public uint ID;
public ushort ItemLevel;
}
public sealed class ItemLimitCategoryRecord
{
public uint Id;