Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public override async Task<bool> ExecuteRotation(ExGatherTag tag)
- {
- if (!tag.Node.IsUnspoiled())
- {
- if (!(GatheringManager.SwingsRemaining > 4 && Core.Player.CurrentGP >= 250 && level >= 77)) return true;
- await tag.Cast(Ability.PickClean);
- await Wait();
- await IncreaseChance(tag);
- return true;
- }
- double YieldsLeft()
- {
- return Math.Min(GatheringManager.SwingsRemaining, Math.Max(0, (Core.Player.CurrentGP + GatheringManager.SwingsRemaining * 6) / 100d));
- }
- var bountifulYield = tag.GatherItem.Level <= 70 ? 3 : 2;
- int pickCleanYield;
- if (tag.GatherItem.Level <= 50) pickCleanYield = 3;
- else pickCleanYield = tag.GatherItem.Level <= 70 ? 2 : 1;
- await IncreaseChance(tag);
- await Wait();
- if (Core.Player.CurrentGP >= 250 && level >= 77)
- {
- var yieldCalc = Math.Max(0, (Core.Player.CurrentGP + (GatheringManager.MaxSwings - 1) * 6) / 100d);
- var adjustedGp = yieldCalc - Math.Floor(yieldCalc);
- var pickCleanBonus = adjustedGp >= 0.50 && adjustedGp < 1 ? 1 : 0;
- if (pickCleanYield * GatheringManager.MaxSwings > bountifulYield * (3 - pickCleanBonus))
- {
- await Wait();
- await tag.Cast(Ability.PickClean);
- }
- }
- double uncappedYields = Math.Floor((Core.Player.CurrentGP + (GatheringManager.MaxSwings - 1) * 6) / 100d);
- if (Core.Player.CurrentGP >= 500 && level >= 40)
- {
- if ((GatheringManager.MaxSwings * 2) + (uncappedYields - 5) >= bountifulYield * Math.Floor(YieldsLeft()))
- {
- await Wait();
- await tag.Cast(Ability.IncreaseGatherYield2);
- }
- }
- bool usedVigorForce = false;
- while (tag.Node.CanGather && GatheringManager.SwingsRemaining > tag.SwingsRemaining && Behaviors.ShouldContinue)
- {
- await Wait();
- if (!usedVigorForce && GatheringManager.GatheringCombo == 4 && GatheringManager.SwingsRemaining > 0 && ((tag.GatherItem.HqChance > 0 && tag.GatherItem.HqChance < 100) || tag.GatherItem.Chance < 100))
- {
- await tag.Cast(Ability.IncreaseGatherChanceQuality100);
- usedVigorForce = true;
- }
- if (Core.Player.CurrentGP >= 100 && level >= 68 && (tag.GatherItem.HqChance == 100 || GatheringManager.SwingsRemaining <= YieldsLeft()) && !Core.Player.HasAura(1286))
- {
- await tag.Cast(Ability.IncreaseGatherYieldOnce2);
- await Coroutine.Wait(2000, () => Core.Player.HasAura(1286));
- }
- double counsels = Math.Floor(YieldsLeft() + 0.1);
- if (Core.Player.CurrentGP >= 10 && level >= 67 && tag.GatherItem.HqChance > 0 && tag.GatherItem.HqChance < 100 && YieldsLeft() >= counsels && !Core.Player.HasAura(1262))
- {
- await tag.Cast(Ability.IncreaseGatherQualityRandomOnce);
- await Coroutine.Wait(2000, () => Core.Player.HasAura(1262));
- }
- if (!await tag.ResolveGatherItem()) return false;
- var swingsRemaining = GatheringManager.SwingsRemaining - 1;
- if (!tag.GatherItem.TryGatherItem()) return false;
- var ticks = 0;
- while (swingsRemaining != GatheringManager.SwingsRemaining && ticks++ < 50 && Behaviors.ShouldContinue)
- {
- await Coroutine.Yield();
- }
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement