public override async Task <bool> InGameTask() { // Returning True => go to next tick immediately, execution starts again from top of the tree. // Returning False => allow execution to continue to lower hooks. Such as profiles, Adventurer. if (await base.InGameTask()) { return(Repeat(PartyObjective.TownRun)); } if (await Party.LeaveWhenInWrongGame()) { return(Repeat(PartyObjective.LeavingGame)); } if (await Questing.UpgradeGems()) { return(Continue(PartyObjective.Quest)); } if (await Coordination.StartTownRunWithLeader()) { return(Continue(PartyObjective.Teleporting)); } if (await Coordination.WaitForGreaterRiftInProgress()) { return(Repeat(PartyObjective.TownRun)); } if (Targetting.RoutineWantsToLoot() || Targetting.RoutineWantsToClickGizmo()) { return(Continue(PartyObjective.None)); } if (await Coordination.LeaveFinishedRift()) { return(Repeat(PartyObjective.TownRun)); } if (await Coordination.FollowLeaderThroughPortal()) { return(Repeat(PartyObjective.FollowLeader)); } if (await Coordination.TeleportWhenInDifferentWorld(AutoFollow.CurrentLeader)) { return(Repeat(PartyObjective.Teleporting)); } if (await Coordination.TeleportWhenTooFarAway(AutoFollow.CurrentLeader)) { return(Repeat(PartyObjective.Teleporting)); } if (await FollowLeader()) { return(Continue(PartyObjective.FollowLeader)); } if (await Questing.ReturnToGreaterRift()) { return(Repeat(PartyObjective.TownRun)); } if (await Movement.MoveToGreaterRiftExitPortal()) { return(Repeat(PartyObjective.FollowLeader)); } return(false); }