Esempio n. 1
0
        internal static void TryTitanSwap()
        {
            if (!CanAcquireOrHasLock(LockType.Titan))
            {
                return;
            }

            var ts = ZoneHelpers.TitansSpawningSoon();

            if (CurrentLock == LockType.Titan)
            {
                if (ts.SpawningSoon)
                {
                    return;
                }

                RestoreDiggers();
                ReleaseLock();
                return;
            }

            if (ts.SpawningSoon)
            {
                CurrentLock = LockType.Titan;
                SaveDiggers();
                EquipDiggers(TitanDiggers);
            }
        }
Esempio n. 2
0
        internal static void TryTitanSwap()
        {
            if (Settings.TitanLoadout.Length == 0)
            {
                return;
            }
            //Skip if we're currently locked for yggdrasil (although this generally shouldn't happen)
            if (!CanAcquireOrHasLock(LockType.Titan))
            {
                return;
            }

            //If we're currently holding the lock
            if (CurrentLock == LockType.Titan)
            {
                //If we haven't AKed yet, just return
                if (ZoneHelpers.TitansSpawningSoon().SpawningSoon)
                {
                    return;
                }

                //Titans have been AKed, restore back to original gear
                RestoreGear();
                ReleaseLock();
                return;
            }

            //No lock currently, check if titans are spawning
            var ts = ZoneHelpers.TitansSpawningSoon();

            if (ts.SpawningSoon)
            {
                Log("Equipping Loadout for Titans");

                //Titans are spawning soon, grab a lock and swap
                AcquireLock(LockType.Titan);
                SaveCurrentLoadout();

                if (Settings.NextGoldSwap && ts.IsHighest)
                {
                    Log("Equipping Gold Drop Loadout");
                    ChangeGear(Settings.GoldDropLoadout);
                    Settings.NextGoldSwap = false;
                    settingsForm.UpdateGoldLoadout(Settings.NextGoldSwap);
                }
                else
                {
                    Log("Equipping Titan Loadout");
                    ChangeGear(Settings.TitanLoadout);
                }
            }
        }
Esempio n. 3
0
        internal static ZoneTarget GetBestZone()
        {
            if (UserOverrides == null)
            {
                return(null);
            }
            var power               = Main.Character.totalAdvAttack();
            var toughness           = Main.Character.totalAdvDefense();
            var availableZones      = UserOverrides.Where(x => x.Key <= ZoneHelpers.GetMaxReachableZone(false));
            var finalAvailableZones = availableZones.Where(x => x.Value.FightType(power, toughness) > 0).ToDictionary(x => x.Key, x => x.Value);;
            var bestZoneId          = finalAvailableZones.Max(x => x.Key);
            var zoneStats           = finalAvailableZones[bestZoneId];
            var bestZone            = new ZoneTarget
            {
                FightType = zoneStats.FightType(power, toughness),
                Zone      = bestZoneId
            };

            return(bestZone);
        }
Esempio n. 4
0
        private static TitanSpawn GetTitanSpawn(int bossId)
        {
            var result = new TitanSpawn
            {
                SpawningSoon = false,
                IsHighest    = false
            };

            if (Test)
            {
                result.SpawningSoon = true;
            }

            if (bossId > Settings.HighestAKZone)
            {
                return(result);
            }

            var controller = Main.Character.adventureController;
            var adventure  = Main.Character.adventure;

            var spawnMethod = controller.GetType().GetMethod($"boss{bossId}SpawnTime",
                                                             BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            var spawnTimeObj = spawnMethod?.Invoke(controller, null);

            if (spawnTimeObj == null)
            {
                return(result);
            }
            var spawnTime = (float)spawnTimeObj;

            var spawnField = adventure.GetType().GetField($"boss{bossId}Spawn",
                                                          BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            var spawnObj = spawnField?.GetValue(adventure);

            if (spawnObj == null)
            {
                return(result);
            }
            var spawn = (PlayerTime)spawnObj;

            if (Math.Abs(spawnTime - spawn.totalseconds) < 20)
            {
                result.SpawningSoon = true;
            }
            else
            {
                return(result);
            }

            if (ZoneHelpers.ZoneIsTitan(Settings.GoldZone))
            {
                var id = Array.IndexOf(ZoneHelpers.TitanZones, Settings.GoldZone) + 1;
                if (id == bossId)
                {
                    result.IsHighest = true;
                }
            }

            return(result);
        }