Skip to content
This repository has been archived by the owner on Nov 23, 2024. It is now read-only.

Commit

Permalink
Update MNK Default Rotation (#93)
Browse files Browse the repository at this point in the history
Default Monk rotation updated with new Monk base rotation and skills.
  • Loading branch information
SonicZeHedgehog authored Jul 17, 2024
1 parent 1163ddf commit f0ba7f1
Showing 1 changed file with 33 additions and 13 deletions.
46 changes: 33 additions & 13 deletions BasicRotations/Melee/MNK_Default.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
namespace DefaultRotations.Melee;

[Rotation("Default", CombatType.PvE, GameVersion = "7.00", Description = "Uses Lunar Solar Opener from The Balance")]
[Rotation("WIP DT MNK", CombatType.PvE, GameVersion = "7.00", Description = "Uses Lunar Solar Opener from The Balance")]
[SourceCode(Path = "main/DefaultRotations/Melee/MNK_Default.cs")]
[Api(2)]

public sealed class MNK_Default : MonkRotation
{

#region Config Options
[RotationConfig(CombatType.PvE, Name = "Use Form Shift")]
public bool AutoFormShift { get; set; } = true;
Expand Down Expand Up @@ -43,6 +45,8 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

if (CombatElapsedLessGCD(3)) return false; // Prevents the use of abilities if 3 GCDs have not been used

if (EarthsReplyPvE.CanUse(out act, skipAoeCheck: true) && (Player.CurrentHp < Player.MaxHp)) return true; // Earths Reply

if (BeastChakras.Contains(BeastChakra.NONE) && Player.HasStatus(true, StatusID.RaptorForm)
&& (!RiddleOfFirePvE.EnoughLevel || Player.HasStatus(false, StatusID.RiddleOfFire) && !Player.WillStatusEndGCD(3, 0, false, StatusID.RiddleOfFire)
|| RiddleOfFirePvE.Cooldown.WillHaveOneChargeGCD(1) && (PerfectBalancePvE.Cooldown.ElapsedAfter(60) || !PerfectBalancePvE.Cooldown.IsCoolingDown)))
Expand All @@ -51,10 +55,11 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
}

if (BrotherhoodPvE.CanUse(out act, skipAoeCheck: true)) return true; // Brotherhood

if (EnlightenmentPvE.CanUse(out act)) return true; // Enlightment
if (HowlingFistPvE.CanUse(out act)) return true; // Howling Fist
if (SteelPeakPvE.CanUse(out act)) return true; // Steel Peak
if (HowlingFistPvE.CanUse(out act, skipAoeCheck: true)) return true; // Howling Fist AOE

//if (HowlingFistPvE.CanUse(out act, skipAoeCheck: true)) return true; // Howling Fist AOE

if (RiddleOfWindPvE.CanUse(out act)) return true; // Riddle Of Wind

Expand All @@ -68,6 +73,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
private bool OpoOpoForm(out IAction? act)
{
if (ArmOfTheDestroyerPvE.CanUse(out act)) return true; // Arm Of The Destoryer
if (LeapingOpoPvE.CanUse(out act)) return true; // Leaping Opo
if (DragonKickPvE.CanUse(out act)) return true; // Dragon Kick
if (BootshinePvE.CanUse(out act)) return true; //Bootshine
return false;
Expand All @@ -79,25 +85,31 @@ private bool OpoOpoForm(out IAction? act)
private bool RaptorForm(out IAction? act)
{
if (FourpointFuryPvE.CanUse(out act)) return true; //Fourpoint Fury
if ((Player.WillStatusEndGCD(3, 0, true, StatusID.DisciplinedFist)
/*if ((Player.WillStatusEndGCD(3, 0, true, StatusID.DisciplinedFist)
|| Player.WillStatusEndGCD(7, 0, true, StatusID.DisciplinedFist)
&& UseLunarPerfectBalance) && TwinSnakesPvE.CanUse(out act)) return true; //Twin Snakes
&& UseLunarPerfectBalance) && TwinSnakesPvE.CanUse(out act)) return true; //Twin Snakes*/
if (RisingRaptorPvE.CanUse(out act)) return true; //Rising Raptor
if (TwinSnakesPvE.CanUse(out act)) return true; //Twin Snakes
if (TrueStrikePvE.CanUse(out act)) return true; //True Strike
return false;
}

private bool CoerlForm(out IAction? act)
{
if (RockbreakerPvE.CanUse(out act)) return true; // Rockbreaker
if (UseLunarPerfectBalance && DemolishPvE.CanUse(out act, skipStatusProvideCheck: true)
&& (DemolishPvE.Target.Target?.WillStatusEndGCD(7, 0, true, StatusID.Demolish) ?? false)) return true;
//if (UseLunarPerfectBalance && DemolishPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
//&& (DemolishPvE.Target.Target?.WillStatusEndGCD(7, 0, true, StatusID.Demolish) ?? false)) return true;
if (PouncingCoeurlPvE.CanUse(out act)) return true; // Pouncing Coeurl
if (DemolishPvE.CanUse(out act)) return true; // Demolish
if (SnapPunchPvE.CanUse(out act)) return true; // Snap Punch
return false;
}

protected override bool GeneralGCD(out IAction? act)
{
if (WindsReplyPvE.CanUse(out act, skipAoeCheck: true)) return true; // Winds Reply
if (FiresReplyPvE.CanUse(out act, skipAoeCheck: true)) return true; // Fires Reply

if (PerfectBalanceActions(out act)) return true;

if (Player.HasStatus(true, StatusID.CoeurlForm))
Expand All @@ -120,6 +132,8 @@ protected override bool GeneralGCD(out IAction? act)

if (Chakra < 5 && ForbiddenMeditationPvE.CanUse(out act)) return true;

if (Player.HasStatus(true, StatusID.MeditativeBrotherhood) && Chakra >= 5 && ForbiddenMeditationPvE.CanUse(out act)) return true;

if (AutoFormShift && FormShiftPvE.CanUse(out act)) return true; // Form Shift GCD use

return base.GeneralGCD(out act);
Expand All @@ -141,10 +155,11 @@ private bool PerfectBalanceActions(out IAction? act) // Controls actions during
}
else
{
if (ElixirBurstPvE.CanUse(out act, skipAoeCheck: true)) return true;
if (ElixirFieldPvE.CanUse(out act, skipAoeCheck: true)) return true;
}
}
else if (Player.HasStatus(true, StatusID.PerfectBalance) && ElixirFieldPvE.EnoughLevel)
else if (Player.HasStatus(true, StatusID.PerfectBalance) && (ElixirBurstPvE.EnoughLevel || ElixirFieldPvE.EnoughLevel))
{
//Sometimes, no choice
if (HasSolar || BeastChakras.Count(c => c == BeastChakra.OPOOPO) > 1)
Expand All @@ -156,9 +171,8 @@ private bool PerfectBalanceActions(out IAction? act) // Controls actions during
if (SolarNadi(out act)) return true;
}

//Add status when solar.
if (Player.WillStatusEndGCD(3, 0, true, StatusID.DisciplinedFist)
|| (HostileTarget?.WillStatusEndGCD(3, 0, true, StatusID.Demolish) ?? false))
//Add Solar Nadi if Lunar Nadi is present.
if (HasLunar)
{
if (SolarNadi(out act)) return true;
}
Expand All @@ -178,7 +192,7 @@ bool LunarNadi(out IAction? act)
bool SolarNadi(out IAction? act)
{
//Emergency usage of status.
if (!BeastChakras.Contains(BeastChakra.RAPTOR)
/*if (!BeastChakras.Contains(BeastChakra.RAPTOR)
&& HasLunar
&& Player.WillStatusEndGCD(1, 0, true, StatusID.DisciplinedFist))
{
Expand All @@ -188,7 +202,7 @@ bool SolarNadi(out IAction? act)
&& (HostileTarget?.WillStatusEndGCD(1, 0, true, StatusID.Demolish) ?? false))
{
if (CoerlForm(out act)) return true;
}
}*/

if (!BeastChakras.Contains(BeastChakra.OPOOPO))
{
Expand All @@ -210,4 +224,10 @@ bool SolarNadi(out IAction? act)
return CoerlForm(out act);
}
#endregion

#region Extra Methods

private static bool NoForm => ((!Player.HasStatus(false, StatusID.OpoopoForm) && !Player.HasStatus(false, StatusID.RaptorForm) && !Player.HasStatus(false, StatusID.CoeurlForm)) || Player.HasStatus(true, StatusID.FormlessFist) || Player.HasStatus(true, StatusID.PerfectBalance));

#endregion
}

0 comments on commit f0ba7f1

Please sign in to comment.