Skip to content

Commit

Permalink
4.0.0.1
Browse files Browse the repository at this point in the history
Updated to more infinite power-dox
  • Loading branch information
Rabalaba committed Nov 27, 2024
1 parent f1a2ec6 commit d3bcb8c
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 86 deletions.
222 changes: 137 additions & 85 deletions Advanced_Rotations/PVE/Ranged_Magic/BLM_Default.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,28 @@

namespace RabbsRotationsNET8.Magical;

[Rotation("Rabbs Infinite Power-dox", CombatType.PvE, GameVersion = "6.58")]
[Rotation("Infinite Power-dox", CombatType.PvE, GameVersion = "7.11")]
[SourceCode(Path = "main/DefaultRotations/Magical/BLM_Default.cs")]
[Api(4)]
public class BLM_Default : BlackMageRotation
{

public IBaseAction FixedUS { get; } = new BaseAction((ActionID)16506);
public IBaseAction FixedUS { get; } = new BaseAction((ActionID)16506);

public IBaseAction FixedMF { get; } = new BaseAction((ActionID)158);
public IBaseAction FixedMF { get; } = new BaseAction((ActionID)158);

[RotationConfig(CombatType.PvE, Name = "Use Transpose to Astral Fire before Paradox")]
public bool UseTransposeForParadox { get; set; } = true;
public IBaseAction FixedB4 { get; } = new BaseAction((ActionID)3576);

[RotationConfig(CombatType.PvE, Name = "Extend Astral Fire Time Safely")]
public bool ExtendTimeSafely { get; set; } = false;

[RotationConfig(CombatType.PvE, Name = @"Use ""Double Paradox"" rotation [N15]")]
public bool UseN15 { get; set; } = false;
public IBaseAction FixedLL { get; } = new BaseAction((ActionID)3573);

public bool NextGCDisInstant => Player.HasStatus(true, StatusID.Triplecast, StatusID.Swiftcast);

public bool CanMakeInstant => TriplecastPvE.Cooldown.CurrentCharges > 0 || !SwiftcastPvE.Cooldown.IsCoolingDown;

protected override IAction? CountDownAction(float remainTime)
{
IAction act;
if (remainTime < 1)
if (remainTime < 10)
{
if (TriplecastPvE.CanUse(out act, usedUp: true) && !NextGCDisInstant) return act;
}
Expand All @@ -38,133 +35,188 @@ public class BLM_Default : BlackMageRotation

protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{

if (InCombat)
{
if (AstralSoulStacks == 6 && CurrentMp > 0)

if (!IsPolyglotStacksMaxed)
{
if (DespairPvE.CanUse(out act)) return true;
if (AmplifierPvE.CanUse(out act)) return true;
}
if (TriplecastPvE.Cooldown.CurrentCharges == 2)


if (!NextGCDisInstant)
{
if (AstralSoulStacks == 6)
if (InAstralFire && !HasFire && CurrentMp == 0 && PolyglotStacks == 0)
{
if (TriplecastPvE.CanUse(out act)) return true;
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}

if (InUmbralIce && UmbralHearts == 0)
if (InUmbralIce)
{
if (TriplecastPvE.CanUse(out act)) return true;
if (UmbralIceStacks < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
if (UmbralHearts < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}
if (!InUmbralIce && !InAstralFire)
{
if (CanMakeInstant)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}
}
if (TriplecastPvE.Cooldown.CurrentCharges > 0 && InAstralFire)
{
if (TriplecastPvE.CanUse(out act)) return true;
}
if (AstralSoulStacks == 6 && InAstralFire && !NextGCDisInstant)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
}

if (IsPolyglotStacksMaxed)
{
if (FoulPvE.CanUse(out act)) return true;
if (XenoglossyPvE.CanUse(out act)) return true;
}
if (UmbralIceStacks == 3 && UmbralHearts == 3 && InUmbralIce)
{
if (TransposePvE.CanUse(out act)) return true;
}

return base.AttackAbility(nextGCD, out act);
}

if (InAstralFire && AstralFireStacks == 3 && !Player.HasStatus(true, StatusID.Firestarter))
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (!NextGCDisInstant)
{
if (InAstralFire && !HasFire && CurrentMp == 0 && PolyglotStacks == 0)
{
if (TransposePvE.CanUse(out act)) return true;
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}

//manafont can only be used in astral fire, it gives 3 umbral hearts. If we are at 2 or more our next umbral soul will kick off paradox
if (InAstralFire && UmbralHearts < 2 && !NextGCDisInstant && AstralSoulStacks == 0)
if (InUmbralIce)
{
if (FixedMF.CanUse(out act)) return true;
if (UmbralIceStacks < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
if (UmbralHearts < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}

if (UmbralHearts < 2 && !NextGCDisInstant && AstralSoulStacks == 0)
if (!InUmbralIce && !InAstralFire)
{
if (SwiftcastPvE.CanUse(out act)) return true;
if (CanMakeInstant)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}
}


return base.AttackAbility(nextGCD, out act);
}

protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{


return base.EmergencyAbility(nextGCD, out act);
}

protected override bool GeneralGCD(out IAction? act)
{

if (IsParadoxActive)
{
if (ParadoxPvE.CanUse(out act)) return true;
}
if (NextGCDisInstant)

if (!NextGCDisInstant && InCombat)
{
if (InUmbralIce && UmbralHearts == 0)
if (InAstralFire && !HasFire && CurrentMp == 0 && PolyglotStacks == 0)
{
if (BlizzardIvPvE.CanUse(out act)) return true;
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
if (AstralSoulStacks == 6)
if (InUmbralIce)
{
if (FlareStarPvE.CanUse(out act)) return true;
if (UmbralIceStacks < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
if (UmbralHearts < 3)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}
if (InAstralFire && AstralSoulStacks < 6)
if (!InUmbralIce && !InAstralFire)
{
if (FlarePvE.CanUse(out act, skipAoeCheck:true)) return true;
if (CanMakeInstant)
{
if (TriplecastPvE.CanUse(out act, usedUp: true)) return true;
if (SwiftcastPvE.CanUse(out act)) return true;
}
}

}
if (NextGCDisInstant)
{

if (!InAstralFire && !InUmbralIce)
if (InUmbralIce)
{
if (UmbralIceStacks < 3)
{
if (BlizzardIiiPvE.CanUse(out act)) return true;
}
if (UmbralHearts < 3)
{
if (BlizzardIvPvE.CanUse(out act)) return true;
}
}
}
if (!NextGCDisInstant)
{
if (BlizzardIiiPvE.CanUse(out act)) return true;
if (FoulPvE.CanUse(out act)) return true;
if (XenoglossyPvE.CanUse(out act)) return true;
}
if (IsParadoxActive)
{
if (ParadoxPvE.CanUse(out act)) return true;
}

if (HostileTarget != null && (!HostileTarget.HasStatus(true, StatusID.Thunder, StatusID.ThunderIi, StatusID.ThunderIii, StatusID.ThunderIv, StatusID.HighThunder_3872, StatusID.HighThunder) || HostileTarget.WillStatusEnd(3, true, StatusID.Thunder, StatusID.ThunderIi, StatusID.ThunderIii, StatusID.ThunderIv, StatusID.HighThunder_3872, StatusID.HighThunder)))
{
if (ThunderIiPvE.CanUse(out act)) return true;
if (ThunderPvE.CanUse(out act)) return true;
}

if (InUmbralIce && (UmbralIceStacks < 3 || UmbralHearts < 3) && NextGCDisInstant)
if (UmbralIceStacks == 3 && UmbralHearts == 3 && InUmbralIce)
{
if (BlizzardIvPvE.CanUse(out act)) return true;
if (TransposePvE.CanUse(out act)) return true;
}

if (InUmbralIce && (UmbralIceStacks <3 || UmbralHearts < 3) && !NextGCDisInstant)
if (InAstralFire && AstralFireStacks == 3 && !Player.HasStatus(true, StatusID.Firestarter) && CurrentMp < 800)
{
if (FixedUS.CanUse(out act)) return true;
if (TransposePvE.CanUse(out act)) return true;
}

if (InAstralFire && Player.HasStatus(true, StatusID.Firestarter))


if (InAstralFire)
{
if (FireIiiPvE.CanUse(out act)) return true;
if (Player.HasStatus(true, StatusID.Firestarter))
{
if (FireIiiPvE.CanUse(out act)) return true;
}
if (CurrentMp >= 800)
{
if (DespairPvE.CanUse(out act)) return true;
}
}

return base.GeneralGCD(out act);
}
if (InUmbralIce)
{
if (FixedUS.CanUse(out act, skipCastingCheck: true)) return true;
}


if (!InUmbralIce && !InAstralFire)
{
if (NextGCDisInstant)
{
if (FireIiiPvE.CanUse(out act)) return true;
}
}

[RotationDesc(ActionID.BetweenTheLinesPvE, ActionID.LeyLinesPvE)]
protected override bool HealSingleAbility(IAction nextGCD, out IAction? act)
{
if (BetweenTheLinesPvE.CanUse(out act)) return true;
if (LeyLinesPvE.CanUse(out act)) return true;
if (ScathePvE.CanUse(out act)) return true;

return base.HealSingleAbility(nextGCD, out act);
return base.GeneralGCD(out act);
}


}
2 changes: 1 addition & 1 deletion Advanced_Rotations/RotationInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ internal class RotationInfo
{
internal const string USERNAME = $"Rabbs";

internal const string VERSION = "1.1.3.5";
internal const string VERSION = "4.0.0.1";
}

0 comments on commit d3bcb8c

Please sign in to comment.