internal void ManualZone(int zone, bool bossOnly, bool recoverHealth, bool precastBuffs, bool fastCombat, bool beastMode) { if (zone == -1) { if (_character.adventure.zone != -1) { MoveToZone(-1); return; } } //Start by turning off auto attack if its on unless we can only idle attack if (!_character.adventure.autoattacking) { if (_character.training.attackTraining[1] == 0) { _character.adventureController.idleAttackMove.setToggle(); return; } } else { if (_character.training.attackTraining[1] > 0) { _character.adventureController.idleAttackMove.setToggle(); } } if (_character.adventure.beastModeOn && !beastMode && _character.adventureController.beastModeMove.button.interactable) { _character.adventureController.beastModeMove.doMove(); return; } if (!_character.adventure.beastModeOn && beastMode && _character.adventureController.beastModeMove.button.interactable) { _character.adventureController.beastModeMove.doMove(); return; } //Move back to safe zone if we're in the wrong zone if (_character.adventure.zone != zone && _character.adventure.zone != -1) { MoveToZone(-1); } //If precast buffs is true and we have no enemy and charge isn't active, go back to safe zone if (precastBuffs && !ChargeActive() && _character.adventureController.currentEnemy == null) { MoveToZone(-1); } //If we're in safe zone, recover health if needed. Also precast buffs if (_character.adventure.zone == -1) { if (precastBuffs) { if (ChargeUnlocked() && !ChargeActive()) { if (CastCharge()) { return; } } if (ParryUnlocked() && !ParryActive()) { if (CastParry()) { return; } } //Wait for Charge to be ready again, as well as other buffs if (ChargeUnlocked() && !ChargeReady()) { return; } if (ParryUnlocked() && !ParryReady()) { return; } if (MegaBuffUnlocked() && !MegaBuffReady()) { return; } if (UltimateBuffUnlocked() && !UltimateBuffReady()) { return; } if (DefensiveBuffUnlocked() && !DefensiveBuffReady()) { return; } } if (recoverHealth && !HasFullHP()) { if (ChargeUnlocked() && !ChargeActive()) { if (CastCharge()) { return; } } if (ParryUnlocked() && !ParryActive()) { if (CastParry()) { return; } } return; } } //Move to the zone if (_character.adventure.zone != zone) { _isFighting = false; MoveToZone(zone); return; } //Wait for an enemy to spawn if (_character.adventureController.currentEnemy == null) { if (_isFighting) { _isFighting = false; if (_fightTimer > 1) { LogCombat($"{_enemyName} killed in {_fightTimer:00.0}s"); } _fightTimer = 0; if (LoadoutManager.CurrentLock == LockType.Gold) { Log("Gold Loadout kill done. Turning off setting and swapping gear"); Settings.DoGoldSwap = false; LoadoutManager.RestoreGear(); LoadoutManager.ReleaseLock(); MoveToZone(-1); return; } if (precastBuffs || recoverHealth && !HasFullHP()) { MoveToZone(-1); return; } } _fightTimer = 0; if (!precastBuffs && bossOnly) { if (!ChargeActive()) { if (CastCharge()) { return; } } if (!ParryActive()) { if (CastParry()) { return; } } if (GetHPPercentage() < .75) { if (CastHeal()) { return; } } } if (fastCombat) { if (GetHPPercentage() < .75) { if (CastHeal()) { return; } } if (GetHPPercentage() < .60) { if (CastHyperRegen()) { return; } } } return; } if (zone < 1000 && Settings.BlacklistedBosses.Contains(_character.adventureController.currentEnemy.spriteID)) { MoveToZone(-1); MoveToZone(zone); return; } //We have an enemy. Lets check if we're in bossOnly mode if (bossOnly && zone < 1000) { var ec = _character.adventureController.currentEnemy.enemyType; if (ec != enemyType.boss && !ec.ToString().Contains("bigBoss")) { MoveToZone(-1); MoveToZone(zone); return; } } _isFighting = true; _enemyName = _character.adventureController.currentEnemy.name; //We have an enemy and we're ready to fight. Run through our combat routine if (_character.training.attackTraining[1] > 0) { DoCombat(fastCombat); } }
internal void ManageQuests() { //First logic: not in a quest if (!_character.beastQuest.inQuest) { bool startedQuest = false; //If we're allowing major quests and we have a quest available if (Settings.AllowMajorQuests && _character.beastQuest.curBankedQuests > 0) { _character.settings.useMajorQuests = true; SetIdleMode(false); EquipQuestingLoadout(); _character.beastQuestController.startQuest(); startedQuest = true; } else { _character.settings.useMajorQuests = false; SetIdleMode(!Settings.ManualMinors); if (Settings.ManualMinors) { EquipQuestingLoadout(); } _character.beastQuestController.startQuest(); startedQuest = true; } // If we're not questing and we still have the lock, restore gear if (!startedQuest && LoadoutManager.HasQuestLock()) { LoadoutManager.RestoreOriginalQuestGear(); LoadoutManager.ReleaseLock(); } return; } //Second logic, we're in a quest if (_character.beastQuest.reducedRewards) { if (Settings.AllowMajorQuests && Settings.AbandonMinors && _character.beastQuest.curBankedQuests > 0) { var progress = (_character.beastQuest.curDrops / (float)_character.beastQuest.targetDrops) * 100; if (progress <= Settings.MinorAbandonThreshold) { //If all this is true get rid of this minor quest and pick up a new one. _character.settings.useMajorQuests = true; _character.beastQuestController.skipQuest(); SetIdleMode(false); EquipQuestingLoadout(); _character.beastQuestController.startQuest(); //Combat logic will pick up from here return; } } else { _character.settings.useMajorQuests = false; } SetIdleMode(!Settings.ManualMinors); } else { SetIdleMode(false); } }