public void UpgradeHeirloom(uint itemId, uint castItem) { Player player = _owner.GetPlayer(); if (!player) { return; } HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId); if (heirloom == null) { return; } var data = _heirlooms.LookupByKey(itemId); if (data == null) { return; } HeirloomPlayerFlags flags = data.flags; uint bonusId = 0; if (heirloom.UpgradeItemID[0] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel90; bonusId = heirloom.UpgradeItemBonusListID[0]; } if (heirloom.UpgradeItemID[1] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel100; bonusId = heirloom.UpgradeItemBonusListID[1]; } if (heirloom.UpgradeItemID[2] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel110; bonusId = heirloom.UpgradeItemBonusListID[2]; } if (heirloom.UpgradeItemID[3] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel120; bonusId = heirloom.UpgradeItemBonusListID[3]; } foreach (Item item in player.GetItemListByEntry(itemId, true)) { item.AddBonuses(bonusId); } // Get heirloom offset to update only one part of dynamic field List <uint> heirlooms = player.m_activePlayerData.Heirlooms; int offset = heirlooms.IndexOf(itemId); player.SetHeirloomFlags(offset, (uint)flags); data.flags = flags; data.bonusId = bonusId; }
public void UpgradeHeirloom(uint itemId, uint castItem) { Player player = _owner.GetPlayer(); if (!player) { return; } HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId); if (heirloom == null) { return; } var data = _heirlooms.LookupByKey(itemId); if (data == null) { return; } HeirloomPlayerFlags flags = data.flags; uint bonusId = 0; if (heirloom.UpgradeItemID[0] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel90; bonusId = heirloom.ItemBonusListID[0]; } if (heirloom.UpgradeItemID[1] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel100; bonusId = heirloom.ItemBonusListID[1]; } if (heirloom.UpgradeItemID[2] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel110; bonusId = heirloom.ItemBonusListID[2]; } foreach (Item item in player.GetItemListByEntry(itemId, true)) { item.AddBonuses(bonusId); } // Get heirloom offset to update only one part of dynamic field var fields = player.GetDynamicValues(PlayerDynamicFields.Heirlooms); ushort offset = (ushort)Array.IndexOf(fields, itemId); player.SetDynamicValue(PlayerDynamicFields.HeirloomsFlags, offset, (uint)flags); data.flags = flags; data.bonusId = bonusId; }
public void LoadAccountHeirlooms(SQLResult result) { if (result.IsEmpty()) { return; } do { uint itemId = result.Read <uint>(0); HeirloomPlayerFlags flags = (HeirloomPlayerFlags)result.Read <uint>(1); HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId); if (heirloom == null) { continue; } uint bonusId = 0; if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel120)) { bonusId = heirloom.UpgradeItemBonusListID[3]; } else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel110)) { bonusId = heirloom.UpgradeItemBonusListID[2]; } else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel100)) { bonusId = heirloom.UpgradeItemBonusListID[1]; } else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel90)) { bonusId = heirloom.UpgradeItemBonusListID[0]; } _heirlooms[itemId] = new HeirloomData(flags, bonusId); } while (result.NextRow()); }
public void CheckHeirloomUpgrades(Item item) { Player player = _owner.GetPlayer(); if (!player) { return; } // Check already owned heirloom for upgrade kits HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(item.GetEntry()); if (heirloom != null) { var data = _heirlooms.LookupByKey(item.GetEntry()); if (data == null) { return; } // Check for heirloom pairs (normal - heroic, heroic - mythic) uint heirloomItemId = heirloom.StaticUpgradedItemID; uint newItemId = 0; HeirloomRecord heirloomDiff; while ((heirloomDiff = Global.DB2Mgr.GetHeirloomByItemId(heirloomItemId)) != null) { if (player.GetItemByEntry(heirloomDiff.ItemID)) { newItemId = heirloomDiff.ItemID; } HeirloomRecord heirloomSub = Global.DB2Mgr.GetHeirloomByItemId(heirloomDiff.StaticUpgradedItemID); if (heirloomSub != null) { heirloomItemId = heirloomSub.ItemID; continue; } break; } if (newItemId != 0) { var heirloomFields = player.GetDynamicValues(ActivePlayerDynamicFields.Heirlooms); ushort offset = (ushort)Array.IndexOf(heirloomFields, item.GetEntry()); player.SetDynamicValue(ActivePlayerDynamicFields.Heirlooms, offset, newItemId); player.SetDynamicValue(ActivePlayerDynamicFields.HeirloomFlags, offset, 0); _heirlooms.Remove(item.GetEntry()); _heirlooms[newItemId] = null; return; } var fields = item.GetDynamicValues(ItemDynamicFields.BonusListIds); foreach (uint bonusId in fields) { if (bonusId != data.bonusId) { item.ClearDynamicValue(ItemDynamicFields.BonusListIds); } } if (!fields.Contains(data.bonusId)) { item.AddBonuses(data.bonusId); } } }
public void CheckHeirloomUpgrades(Item item) { Player player = _owner.GetPlayer(); if (!player) { return; } // Check already owned heirloom for upgrade kits HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(item.GetEntry()); if (heirloom != null) { var data = _heirlooms.LookupByKey(item.GetEntry()); if (data == null) { return; } // Check for heirloom pairs (normal - heroic, heroic - mythic) uint heirloomItemId = heirloom.StaticUpgradedItemID; uint newItemId = 0; HeirloomRecord heirloomDiff; while ((heirloomDiff = Global.DB2Mgr.GetHeirloomByItemId(heirloomItemId)) != null) { if (player.GetItemByEntry(heirloomDiff.ItemID)) { newItemId = heirloomDiff.ItemID; } HeirloomRecord heirloomSub = Global.DB2Mgr.GetHeirloomByItemId(heirloomDiff.StaticUpgradedItemID); if (heirloomSub != null) { heirloomItemId = heirloomSub.ItemID; continue; } break; } if (newItemId != 0) { List <uint> heirlooms = player.m_activePlayerData.Heirlooms; int offset = heirlooms.IndexOf(item.GetEntry()); player.SetHeirloom(offset, newItemId); player.SetHeirloomFlags(offset, 0); _heirlooms.Remove(item.GetEntry()); _heirlooms[newItemId] = null; return; } List <uint> bonusListIDs = item.m_itemData.BonusListIDs; foreach (uint bonusId in bonusListIDs) { if (bonusId != data.bonusId) { item.ClearBonuses(); break; } } if (!bonusListIDs.Contains(data.bonusId)) { item.AddBonuses(data.bonusId); } } }