예제 #1
0
 public void RebalanceBosses()
 {
     foreach (var enemy in EnemyCollection.MappedObjectReadOnly)
     {
         RebalanceBoss(enemy);
     }
     EnemyCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
 }
 public void RandomizeEnemyCollection()
 {
     foreach (var enemy in EnemyCollection.MappedObjectReadOnly)
     {
         //MutateEnemyAttacks(enemy);
         RandomizeEnemyStats(enemy);
         //MutateEnemyElementalAttributes(enemy);
         MutateEnemyDrops(enemy);
     }
     EnemyCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
 }
예제 #3
0
 public void ApplyThreeOrbMode()
 {
     AssignThreeOrbs();
     BuffBoomerangs();
     AssignItemDrops();
     SetFakeEyeSortId();
     RemoveMaldukeOrbs();
     DebuffSoloFights();
     AreaCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
     ItemCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
     EnemyCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
     CreateThreeOrbTextFile();
 }
        public void ShuffleBossOrder()
        {
            var toSwap  = new List <Tuple <int, int> >();
            var swapped = new HashSet <int>();

            foreach (var bossId in EnemyTierList.BossIds)
            {
                //determine new tier rank
                var  swapBossId   = bossId;
                byte newTier      = 0;
                byte originalTier = 0;
                while (swapBossId == bossId)
                {
                    originalTier = EnemyTierList.GetBossTier(bossId);
                    newTier      = RandomFunctions.GenerateGaussianByte(Agent.Rng, originalTier, Agent.Probabilities.BossShuffleStandardDeviation, (byte)(EnemyTierList.TieredBossIds.Count - 1));
                    if (newTier < 0)
                    {
                        newTier = 0;
                    }
                    //determine what boss to swap with based on new rank
                    var randNum = Agent.Rng.Next(0, EnemyTierList.TieredBossIds[newTier].Count);
                    swapBossId = EnemyTierList.TieredBossIds[newTier][randNum];
                }
                swapped.Add(bossId);
                swapped.Add(swapBossId);
                ScaleEnemies(originalTier, newTier, bossId, swapBossId);
                toSwap.Add(new Tuple <int, int>(bossId, swapBossId));
            }
            EnemyCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);

            foreach (var t in toSwap)
            {
                EnemyCollection.SwapMappedObjects(Agent.GeneralConfiguration.TempFile, EnemyCollection.GetMappedObject(t.Item1), EnemyCollection.GetMappedObject(t.Item2));
            }

            /*
             * foreach (var t in toSwap)
             * {
             *  var bossA = EnemyCollection.GetMappedObject(t.Item1);
             *  var bossB = EnemyCollection.GetMappedObject(t.Item2);
             *  bossA.WriteByte((byte)t.Item2, EnemyOffsets.Id);
             *  bossB.WriteByte((byte)t.Item1, EnemyOffsets.Id);
             * }*/
        }
예제 #5
0
        public void ApplySparsityMode()
        {
            //Modify Shopping Lists to have no healing items
            RemoveHealingItemsFromShoppingLists();
            //Repopulate Found Items with more healing items
            PopulateEventsWithNewItems();
            //Increase rate of berry drops for enemies
            IncreaseEnemiesHealDropRate();

            //sets ambrosia and nectar to fully heal MP as well as HP
            var nectar = ItemCollection.GetMappedObject(NectarId);

            nectar.Vitality = 999;
            var ambrosia = ItemCollection.GetMappedObject(AmbrosiaId);

            ambrosia.Vitality = 999;

            //commit all changes
            ItemCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
            AreaCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
            EnemyCollection.WriteObjects(Agent.GeneralConfiguration.TempFile);
        }