public gameSavedStatsData GetItemStatData(InventoryHelper.ItemData item) { var result = this.GetStatsFromSeed(item.Header.Seed); if (result == null && item.Data != null && item.Data is InventoryHelper.SimpleItemData) { var i = Array.FindIndex(this.GetStatsMap().Values.ToArray(), x => x.RecordID == item.ItemTdbId); if (i > -1) { return(this.GetStatsMap().Values[i]); } } return(result); }
public gameSavedStatsData CreateStatData(InventoryHelper.ItemData item, Random rand) { var randBytes = new byte[4]; rand.NextBytes(randBytes); var newSeed = BitConverter.ToUInt32(randBytes); while (this.GetStatsMap().Values.Where(x => x.Seed == newSeed).FirstOrDefault() != null) { rand.NextBytes(randBytes); newSeed = BitConverter.ToUInt32(randBytes); } if (item.Data.GetType() != typeof(InventoryHelper.SimpleItemData)) { item.Header.Seed = newSeed; } else { newSeed = 2; } this.GetStatsMap().Keys.Add(new gameStatsObjectID { IdType = gameStatIDType.ItemID, EntityHash = GetItemIdHash(item.ItemTdbId, newSeed, 0) }); var statsEntry = new gameSavedStatsData { RecordID = item.ItemTdbId, Seed = newSeed, StatModifiers = new() }; this.GetStatsMap().Values.Add(statsEntry); return(statsEntry); }