示例#1
0
        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);
        }
示例#2
0
        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);
        }