public override async Task <bool> MoveFromSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving from " + this;

            var result = true;

            if (ReturnToApproachLocation)
            {
                result &= await approachLocation.MoveToOnGround();
            }

#if RB_CN
            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Stealth))
            {
                result &= await tag.CastAura(Ability.Stealth);
            }
#else
            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Sneak))
            {
                result &= await tag.CastAura(Ability.Sneak);
            }
#endif

            //change the approach location for the next time we go to this node.
            approachLocation = HotSpots.Shuffle().First();

            return(result);
        }
		public override async Task<bool> MoveToSpot(ExGatherTag tag)
		{
			tag.StatusText = "Moving to " + this;

			if (StealthLocation == Vector3.Zero)
			{
				return false;
			}

			var result =
				await
				StealthLocation.MoveTo(UseMesh,
					radius: tag.Radius,
					name: "Stealth Location",
					stopCallback: tag.MovementStopCallback,
					dismountAtDestination: true);

			if (result)
			{
				await Coroutine.Yield();
				await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);

				result =
					await NodeLocation.MoveToNoMount(UseMesh, tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);
			}

			return result;
		}
Exemple #3
0
        public override async Task <bool> Prepare(ExGatherTag tag)
        {
            await tag.CastAura(Ability.CollectorsGlove, AbilityAura.CollectorsGlove);

            var ticks = 0;

            do
            {
                await Wait();

                if (!tag.GatherItem.TryGatherItem())
                {
                    return(false);
                }
            } while (ticks++ < 10 && !await Coroutine.Wait(3000, () => GatheringMasterpiece.IsOpen) && Behaviors.ShouldContinue);

            if (ticks > 10)
            {
                tag.Logger.Error("Timed out during collectable preparation");
            }

            await Coroutine.Sleep(500);

            return(true);
        }
        public override async Task <bool> MoveToSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving to " + this;

            var result =
                await
                NodeLocation.MoveTo(
                    UseMesh,
                    radius : tag.Distance,
                    name : tag.Node.EnglishName,
                    stopCallback : tag.MovementStopCallback,
                    dismountAtDestination : true);

            if (result)
            {
                var landed = MovementManager.IsDiving || await NewNewLandingTask();

                if (landed && Core.Player.IsMounted)
                {
                    ActionManager.Dismount();
                }

                Navigator.Stop();
                await Coroutine.Yield();

                await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);
            }

            await Coroutine.Yield();

            return(result);
        }
        public override async Task <bool> MoveToSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving to " + this;

            if (StealthLocation == Vector3.Zero)
            {
                return(false);
            }

            var result =
                await
                StealthLocation.MoveTo(
                    UseMesh,
                    radius : tag.Radius,
                    name : "Stealth Location",
                    stopCallback : tag.MovementStopCallback,
                    dismountAtDestination : true);

            if (result)
            {
                await Coroutine.Yield();

                await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);

                result = await NodeLocation.MoveToNoMount(UseMesh, tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);
            }

            return(result);
        }
Exemple #6
0
        public override async Task <bool> MoveFromSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving from " + this;

#if RB_CN
            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Stealth))
            {
                return(await tag.CastAura(Ability.Stealth));
            }
#else
            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Sneak))
            {
                return(await tag.CastAura(Ability.Sneak));
            }
#endif

            return(true);
        }
        public override async Task <bool> MoveToSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving to " + this;

            if (HotSpots == null || HotSpots.Count == 0)
            {
                return(false);
            }

            if (approachLocation == null)
            {
                approachLocation = HotSpots.Shuffle().First();
            }

            var result = await approachLocation.MoveTo(dismountAtDestination : Stealth);

            if (!result)
            {
                return(false);
            }

            var landed = MovementManager.IsDiving || await NewNewLandingTask();

            if (landed && Core.Player.IsMounted && !MovementManager.IsDiving)
            {
                ActionManager.Dismount();
            }

            Navigator.Stop();
            await Coroutine.Yield();

            if (Stealth)
            {
#if RB_CN
                await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);
#else
                await tag.CastAura(Ability.Sneak, AbilityAura.Sneak);
#endif
            }

            result = await NodeLocation.MoveToOnGroundNoMount(tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);

            return(result);
        }
		public override async Task<bool> MoveFromSpot(ExGatherTag tag)
		{
			tag.StatusText = "Moving from " + this;

			if (UnstealthAfter && Core.Player.HasAura((int) AbilityAura.Stealth))
			{
				return await tag.CastAura(Ability.Stealth);
			}

			return true;
		}
		public override async Task<bool> MoveFromSpot(ExGatherTag tag)
		{
			tag.StatusText = "Moving from " + this;

			var result = true;
			if (ReturnToStealthLocation)
			{
				result &= await StealthLocation.MoveToNoMount(UseMesh, tag.Radius, tag.Node.EnglishName, tag.MovementStopCallback);
			}

			if (UnstealthAfter && Core.Player.HasAura((int) AbilityAura.Stealth))
			{
				result &= await tag.CastAura(Ability.Stealth);
			}

			return result;
		}
        public override async Task <bool> MoveFromSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving from " + this;

            var result = true;

            if (ReturnToStealthLocation)
            {
                result &= await StealthLocation.MoveToOnGroundNoMount(tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);
            }

            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Stealth))
            {
                result &= await tag.CastAura(Ability.Stealth);
            }

            return(result);
        }
Exemple #11
0
        public override async Task <bool> MoveFromSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving from " + this;

            var result = true;

            if (ReturnToApproachLocation)
            {
                result &= await approachLocation.MoveToNoMount(UseMesh, tag.MovementStopCallback);
            }

            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Stealth))
            {
                result &= await tag.CastAura(Ability.Stealth);
            }

            return(result);
        }
		public override async Task<bool> MoveToSpot(ExGatherTag tag)
		{
			tag.StatusText = "Moving to " + this;

			if (approachLocation == Vector3.Zero)
			{
				if (HotSpots == null || HotSpots.Count == 0)
				{
					return false;
				}

				approachLocation = HotSpots.Shuffle().First();
			}

			var result =
				await
				approachLocation.MoveToPointWithin(dismountAtDestination: Stealth);

			if (result)
			{
				await Coroutine.Yield();

				if (Stealth)
				{
					await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);
					result =
						await NodeLocation.MoveToNoMount(UseMesh, tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);
				}
				else
				{
					result =
						await
						NodeLocation.MoveTo(UseMesh,
							radius: tag.Distance,
							name: tag.Node.EnglishName,
							stopCallback: tag.MovementStopCallback);
				}
			}

			return result;
		}
        public override async Task <bool> MoveFromSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving from " + this;

            var result = true;

            if (ReturnToApproachLocation)
            {
                result &= await approachLocation.MoveToNoMount(UseMesh, tag.MovementStopCallback);
            }

            if (UnstealthAfter && Core.Player.HasAura((int)AbilityAura.Stealth))
            {
                result &= await tag.CastAura(Ability.Stealth);
            }

            //change the approach location for the next time we go to this node.
            approachLocation = HotSpots.Shuffle().First();

            return(result);
        }
Exemple #14
0
        public override async Task <bool> MoveToSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving to " + this;

            if (approachLocation == Vector3.Zero)
            {
                if (HotSpots == null || HotSpots.Count == 0)
                {
                    return(false);
                }

                approachLocation = HotSpots.Shuffle().First();
            }

            var result = await approachLocation.MoveToPointWithin(dismountAtDestination : Stealth);

            if (result)
            {
                await Coroutine.Yield();

                if (Stealth)
                {
                    await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);

                    result = await NodeLocation.MoveToNoMount(UseMesh, tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);
                }
                else
                {
                    result =
                        await
                        NodeLocation.MoveTo(
                            UseMesh,
                            radius : tag.Distance,
                            name : tag.Node.EnglishName,
                            stopCallback : tag.MovementStopCallback);
                }
            }

            return(result);
        }
		public override async Task<bool> Prepare(ExGatherTag tag)
		{
			await tag.CastAura(Ability.CollectorsGlove, AbilityAura.CollectorsGlove);

			var ticks = 0;
			do
			{
				await Wait();

				if (!tag.GatherItem.TryGatherItem())
				{
					return false;
				}
			} while (ticks++ < 10 && !await Coroutine.Wait(3000, () => GatheringMasterpiece.IsOpen) && Behaviors.ShouldContinue);

			if (ticks > 10)
			{
				tag.Logger.Error("Timed out during collectable preparation");
			}

			return true;
		}
        public override async Task <bool> MoveToSpot(ExGatherTag tag)
        {
            tag.StatusText = "Moving to " + this;

            if (StealthLocation == Vector3.Zero)
            {
                return(false);
            }

            var result =
                await
                StealthLocation.MoveTo(
                    UseMesh,
                    radius : tag.Radius,
                    name : "Stealth Location",
                    stopCallback : tag.MovementStopCallback,
                    dismountAtDestination : true);

            if (!result)
            {
                return(false);
            }

            var landed = MovementManager.IsDiving || await CommonTasks.Land();

            if (landed && Core.Player.IsMounted)
            {
                ActionManager.Dismount();
            }

            Navigator.Stop();
            await Coroutine.Yield();

            await tag.CastAura(Ability.Stealth, AbilityAura.Stealth);

            result = await NodeLocation.MoveToOnGroundNoMount(tag.Distance, tag.Node.EnglishName, tag.MovementStopCallback);

            return(result);
        }