/// <summary> /// Get all Equipment /// </summary> /// <returns></returns> public List <ItemMemoryInfo> GetAllWeapon() { if (br.BtList == null) { throw new Exception("Save file not open."); } List <ItemMemoryInfo> weaponList = new List <ItemMemoryInfo>(); byte[] bytes = new byte[9]; bytes[0] = 11; bytes[1] = 0; bytes[2] = 0; bytes[3] = 0; bytes[4] = 104; bytes[5] = 213; bytes[6] = 36; bytes[7] = 0; bytes[8] = 3; List <int> indexList = br.FindIndexList(bytes); for (int i = 0; i < indexList.Count; i++) { indexList[i] -= 4; } for (int i = 0; i < indexList.Count; i++) { if (i != indexList.Count - 1) { if (indexList[i + 1] - indexList[i] < 44) { continue; } } ItemMemoryInfo weapon = new ItemMemoryInfo(); weapon.ItemIndex = indexList[i]; if (i != indexList.Count - 1) { weapon.NextItemIndex = indexList[i + 1]; weapon.ItemBytes = br.GetBytesByIndexAndLength(indexList[i], indexList[i + 1] - indexList[i]); if (weapon.CurrentDurability != 100 && weapon.MaxDurability != -1 && weapon.MaxDurability != 100 && weapon.CurrentDurability != 0 && weapon.MaxDurability != 0) { weaponList.Add(weapon); } else { continue; } } else { int attHeadIndex = weapon.ItemIndex + AmalurSaveEditor.ItemAttHeadOffSet; int attCount = BitConverter.ToInt32(br.BtList, attHeadIndex); int endIndex = 0; if (br.BtList[attHeadIndex + 22 + attCount * 8] != 1) { endIndex = attHeadIndex + 22 + attCount * 8; } else { int nameLength = 0; nameLength = BitConverter.ToInt32(br.BtList, attHeadIndex + 22 + attCount * 8 + 1); endIndex = attHeadIndex + 22 + attCount * 8 + nameLength + 4; } weapon.ItemBytes = br.GetBytesByIndexAndLength(weapon.ItemIndex, endIndex - weapon.ItemIndex + 1); if (weapon.CurrentDurability != 100 && weapon.MaxDurability != -1 && weapon.MaxDurability != 100 && weapon.CurrentDurability != 0 && weapon.MaxDurability != 0) { weaponList.Add(weapon); } else { continue; } } } return(weaponList); }