Example #1
0
        public async Task <bool> Run()
        {
            if (!Enabled || !World.CurrentArea.IsTown)
            {
                return(false);
            }

            await StaticPositions.GetCommonPortalSpotByAct().ComeAtOnce();

            var portalObj = LokiPoe.LocalData.TownPortals.Find(p => p.NetworkObject.IsTargetable && p.OwnerName == LokiPoe.Me.Name);

            if (portalObj == null)
            {
                GlobalLog.Error("[ReturnAfterTownrunTask] There is no portal to enter.");
                Enabled = false;
                return(true);
            }

            var portal = portalObj.NetworkObject as Portal;
            await portal.WalkablePosition().ComeAtOnce();

            if (!await PlayerAction.TakePortal(portal))
            {
                ErrorManager.ReportError();
                return(true);
            }
            Enabled = false;
            return(true);
        }