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); } }
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); } } }
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); }
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); }