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 AddHeirloom(uint itemId, HeirloomPlayerFlags flags) { if (UpdateAccountHeirlooms(itemId, flags)) { _owner.GetPlayer().AddHeirloom(itemId, (uint)flags); } }
public void AddHeirloom(uint itemId, HeirloomPlayerFlags flags) { if (UpdateAccountHeirlooms(itemId, flags)) { _owner.GetPlayer().AddDynamicValue(ActivePlayerDynamicFields.Heirlooms, itemId); _owner.GetPlayer().AddDynamicValue(ActivePlayerDynamicFields.HeirloomFlags, (uint)flags); } }
bool UpdateAccountHeirlooms(uint itemId, HeirloomPlayerFlags flags) { if (_heirlooms.ContainsKey(itemId)) { return(false); } _heirlooms.Add(itemId, new HeirloomData(flags, 0)); return(true); }
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 HeirloomData(HeirloomPlayerFlags _flags = 0, uint _bonusId = 0) { flags = _flags; bonusId = _bonusId; }