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

Commit

Permalink
fix: try to add PLD.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Mar 1, 2023
1 parent 434be78 commit d5cb641
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 4 deletions.
2 changes: 2 additions & 0 deletions RotationSolver/Data/ActionID.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2020,6 +2020,8 @@ public enum ActionID : uint
/// </summary>
IronWill = 28,

Bulwark = 22,

/// <summary>
/// 先锋剑
/// </summary>
Expand Down
4 changes: 4 additions & 0 deletions RotationSolver/Data/StatusID.cs
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,8 @@ internal enum StatusID : ushort
/// </summary>
BladeofValor = 2721,

DivineMight = 2673,

/// <summary>
/// 赎罪剑
/// </summary>
Expand Down Expand Up @@ -1115,4 +1117,6 @@ internal enum StatusID : ushort
CircleOfPower = 738,

Aetherpact = 1223,

ConfiteorReady = 3019,
}
9 changes: 7 additions & 2 deletions RotationSolver/Rotations/Basic/PLD_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,10 @@ internal abstract class PLD_Base : CustomRotation.CustomRotation
/// <summary>
/// 悔罪
/// </summary>
public static IBaseAction Confiteor { get; } = new BaseAction(ActionID.Confiteor);
public static IBaseAction Confiteor { get; } = new BaseAction(ActionID.Confiteor)
{
StatusNeed = new StatusID[] {StatusID.ConfiteorReady},
};

/// <summary>
/// 圣环
Expand Down Expand Up @@ -202,10 +205,12 @@ internal abstract class PLD_Base : CustomRotation.CustomRotation
ActionCheck = Cover.ActionCheck,
};

public static IBaseAction Bulwark { get; } = new BaseAction(ActionID.Bulwark, isTimeline: true);


private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
if (HallowedGround.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0], HallowedGround.Target)) return true;
//神圣领域 如果谢不够了。
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}

Expand Down
5 changes: 3 additions & 2 deletions RotationSolver/Rotations/Tank/PLD/PLD_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ internal sealed class PLD_Default : PLD_Base

private protected override IRotationConfigSet CreateConfiguration()
{
return base.CreateConfiguration().SetBool("UseDivineVeilPre", false, "DivineVeilPre in 15 seconds.")
.SetBool("UseHolySpiritPre", true, "use HolySpirit in 2 seconds");
return base.CreateConfiguration()
.SetBool("UseDivineVeilPre", false, "DivineVeilPre in 15 seconds.")
.SetBool("UseHolySpiritPre", true, "use HolySpirit in 2 seconds");
}
private protected override IAction CountDownAction(float remainTime)
{
Expand Down
123 changes: 123 additions & 0 deletions RotationSolver/Rotations/Tank/PLD/PLD_Test.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
using RotationSolver.Actions;
using RotationSolver.Attributes;
using RotationSolver.Configuration.RotationConfig;
using RotationSolver.Data;
using RotationSolver.Helpers;
using RotationSolver.Rotations.Basic;
using RotationSolver.Updaters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RotationSolver.Rotations.Tank.PLD;

internal class PLD_Test : PLD_Base
{
public override string GameVersion => "6.31";
public override string RotationName => "Test";

public override string Description => "NO PRE-PULL FOF OPENER";
private protected override IRotationConfigSet CreateConfiguration()
{
return base.CreateConfiguration()
.SetBool("UseDivineVeilPre", false, "DivineVeilPre in 15 seconds counting down.");
}
private protected override IAction CountDownAction(float remainTime)
{
if (remainTime <= HolySpirit.CastTime + Service.Configuration.CountDownAhead
&& HolySpirit.CanUse(out var act)) return act;

if (Configs.GetBool("UseDivineVeilPre") && remainTime <= 15
&& DivineVeil.CanUse(out act)) return act;

return base.CountDownAction(remainTime);
}

private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
if (abilitiesRemaining == 1 && nextGCD.IsTheSameTo(true, RiotBlade, GoringBlade))
{
if (FightorFlight.CanUse(out act)) return true;
}
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}

private protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)
{
if(CombatElapsedLess(6) )
{
if(FightorFlight.CanUse(out act)) return true;
}
else if(InBurst)
{
if(UseTincture(out act)) return true;
}

if (CircleofScorn.CanUse(out act, mustUse: true)) return true;
if (SpiritsWithin.CanUse(out act, mustUse: true)) return true;
if (Expiacion.CanUse(out act, mustUse: true)) return true;
act = null;
return false;
}

private protected override bool GeneralGCD(out IAction act)
{
if (BladeofValor.CanUse(out act, mustUse: true)) return true;
if (BladeofTruth.CanUse(out act, mustUse: true)) return true;
if (BladeofFaith.CanUse(out act, mustUse: true)) return true;
if (Confiteor.CanUse(out act, mustUse: true)) return true;

//AOE
if (Player.HasStatus(true, StatusID.Requiescat)
&& HolyCircle.CanUse(out act)) return true;
if (Prominence.CanUse(out act)) return true;
if (TotalEclipse.CanUse(out act)) return true;

//Single
if (GoringBlade.CanUse(out act)) return true; // Dot
if (RageofHalone.CanUse(out act)) return true;
if (RiotBlade.CanUse(out act)) return true;
if (FastBlade.CanUse(out act)) return true;

//Range
if (HolySpirit.CanUse(out act)) return true;
if (ShieldLob.CanUse(out act)) return true;

return false;
}

[RotationDesc(ActionID.Reprisal, ActionID.DivineVeil, ActionID.PassageofArms)]
private protected override bool DefenceAreaAbility(byte abilitiesRemaining, out IAction act)
{
if (Reprisal.CanUse(out act, mustUse: true)) return true;
if (DivineVeil.CanUse(out act)) return true;
if (PassageofArms.CanUse(out act)) return true;
return false;
}

[RotationDesc(ActionID.Sentinel, ActionID.Rampart, ActionID.Bulwark, ActionID.Sheltron, ActionID.Reprisal)]
private protected override bool DefenceSingleAbility(byte abilitiesRemaining, out IAction act)
{
if (abilitiesRemaining == 2)
{
//10
if (OathGauge >= 90 && Sheltron.CanUse(out act)) return true;

//30
if (Sentinel.CanUse(out act)) return true;

//20
if (Rampart.CanUse(out act)) return true;

//10
if (Bulwark.CanUse(out act)) return true;
if (Sheltron.CanUse(out act)) return true;
}

if (Reprisal.CanUse(out act)) return true;

return false;
}
}

0 comments on commit d5cb641

Please sign in to comment.