コード例 #1
0
        static void Main(string[] args)
        {
            ModRandom.Seed(19931234);
            var modRunner = new Runner();

            modRunner.Run(new List <IMod>()
            {
                new ItemPassiveScalingMod(),
                new DiverseAttributesMod(),
                new RandomSortMod(),
                new HeroesReworkMod(),
            });
        }
コード例 #2
0
        private void Randomize <T>(IList <T> items)
        {
            var sortedItems = new List <T>(items);

            items.Clear();

            for (int i = 0, size = sortedItems.Count; i < size; i++)
            {
                var min       = 0;
                var max       = sortedItems.Count - 1;
                var nextIndex = ModRandom.Next(min, max);
                items.Add(sortedItems[nextIndex]);
                sortedItems.RemoveAt(nextIndex);
            }
        }
コード例 #3
0
        private void ForgeNewAttributes(HeroItem newItem, HeroItemDescriptor descriptor)
        {
            var itemLevel = ModRandom.Next(0, 2) + descriptor.Rarity.Level;
            var engine    = new LevelUpEngine(descriptor.Modifiers);

            if (!engine.CanLevelUp())
            {
                return;
            }

            for (var i = 0; i < itemLevel;)
            {
                if (engine.TryToLevelUp())
                {
                    i++;
                }
            }

            descriptor.For(TargetProperty.Cost, x => x.Value += itemLevel * 8);
            descriptor.Add(TargetProperty.SellingCost, Operation.Subtraction, itemLevel * 4);
        }
コード例 #4
0
        public bool TryToLevelUp()
        {
            if (!CanLevelUp())
            {
                return(false);
            }
            var nextIndex    = ModRandom.Next(0, enhanceableModifiers.Count - 1);
            var nextModifier = enhanceableModifiers[nextIndex];
            var isPenalty    = nextModifier.IsPenalty();
            var levelUpValue = upgrader.GetNextLevelOf(nextModifier);

            if (isPenalty)
            {
                nextModifier.AddPenalty(levelUpValue);
            }
            else
            {
                nextModifier.AddBonus(levelUpValue);
            }

            return(!isPenalty);
        }
コード例 #5
0
        public float NearestNextValue()
        {
            var value = ModRandom.NextFloat(Min, Max);

            return((float)Math.Round(value, 0));
        }
コード例 #6
0
 private bool IsGreatRoll()
 {
     return(ModRandom.NextFloat(0f, 1f) < 0.3f);
 }