Skip to content

Commit 385427f

Browse files
authored
Merge pull request #805 from FFXIV-CombatReborn/walterwhite
Fix for raise action when Chemist level 3 on healer, and NIN action f…
2 parents 1daece5 + 0527b97 commit 385427f

File tree

6 files changed

+46
-39
lines changed

6 files changed

+46
-39
lines changed

BasicRotations/Duty/PhantomDefault.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ public override bool GeneralGCD(out IAction? act)
604604
return true;
605605
}
606606

607-
if (SilverCannonPvE.CanUse(out act))
607+
if (SilverCannonPvE.CanUse(out act, skipStatusProvideCheck: SilverCannonPvE.Target.Target.WillStatusEnd(11, true, StatusID.SilverSickness)))
608608
{
609609
return true;
610610
}

BasicRotations/Melee/NIN_Default.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ private bool ChoiceNinjutsu(out IAction? act)
339339
return false;
340340
}
341341
}
342-
else if (TenPvE.CanUse(out _, usedUp: InTrickAttack))
342+
else if (TenPvE.CanUse(out _, usedUp: InTrickAttack || (TenPvE.Cooldown.CurrentCharges == 1 && TenPvE.Cooldown.WillHaveXChargesGCD(2, 1, 0))))
343343
{
344344
// Chooses buffs or AoE actions based on combat conditions and cooldowns.
345345
// For instance, setting Huton for speed buff or choosing AoE Ninjutsu like Katon or Doton based on enemy positioning.
@@ -1357,4 +1357,14 @@ protected override bool GeneralGCD(out IAction? act)
13571357
return base.GeneralGCD(out act);
13581358
}
13591359
#endregion
1360+
1361+
/// <inheritdoc/>
1362+
public override bool IsBursting()
1363+
{
1364+
if (InTrickAttack)
1365+
{
1366+
return true;
1367+
}
1368+
return false;
1369+
}
13601370
}

BasicRotations/Ranged/MCH_Default.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,23 +213,27 @@ protected override bool GeneralGCD(out IAction? act)
213213
if (!SpreadShotPvE.CanUse(out _))
214214
{
215215
// use AirAnchor if possible
216-
if (HotShotMasteryTrait.EnoughLevel && AirAnchorPvE.CanUse(out act))
216+
if (HotShotMasteryTrait.EnoughLevel
217+
&& AirAnchorPvE.CanUse(out act))
217218
{
218219
return true;
219220
}
220221

221222
// for opener: only use the first charge of Drill after AirAnchor when there are two
222-
if (EnhancedMultiweaponTrait.EnoughLevel && DrillPvE.CanUse(out act, usedUp: false))
223+
if (EnhancedMultiweaponTrait.EnoughLevel
224+
&& DrillPvE.CanUse(out act, usedUp: false || (DrillPvE.Cooldown.CurrentCharges == 1 && DrillPvE.Cooldown.WillHaveXChargesGCD(2, 1, 0))))
223225
{
224226
return true;
225227
}
226228

227-
if (!EnhancedMultiweaponTrait.EnoughLevel && DrillPvE.CanUse(out act, usedUp: true))
229+
if (!EnhancedMultiweaponTrait.EnoughLevel
230+
&& DrillPvE.CanUse(out act, usedUp: true))
228231
{
229232
return true;
230233
}
231234

232-
if (!AirAnchorPvE.EnoughLevel && HotShotPvE.CanUse(out act))
235+
if (!AirAnchorPvE.EnoughLevel
236+
&& HotShotPvE.CanUse(out act))
233237
{
234238
return true;
235239
}

RotationSolver.Basic/Actions/ActionTargetInfo.cs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,7 +1147,6 @@ private readonly bool CanGetTarget(IBattleChara target, IBattleChara subTarget)
11471147
TargetType.Physical => battleChara != null ? RandomPhysicalTarget(battleChara) : null,
11481148
TargetType.DarkCannon => FindDarkCannonTarget(),
11491149
TargetType.ShockCannon => FindShockCannonTarget(),
1150-
TargetType.HolyCannon => FindHolyCannon(),
11511150
TargetType.PhantomBell => FindPhantomBell(),
11521151
TargetType.PhantomRespite => FindPhantomRespite(),
11531152
TargetType.DancePartner => FindDancePartner(),
@@ -1196,28 +1195,6 @@ private readonly bool CanGetTarget(IBattleChara target, IBattleChara subTarget)
11961195
return null;
11971196
}
11981197

1199-
IBattleChara? FindHolyCannon()
1200-
{
1201-
if (DataCenter.AllHostileTargets != null)
1202-
{
1203-
if (PhantomRotation.CannoneerLevel < 6)
1204-
{
1205-
return FindHostile();
1206-
}
1207-
else
1208-
{
1209-
foreach (var hostile in DataCenter.AllHostileTargets)
1210-
{
1211-
if (hostile != null && hostile.IsOCUndeadTarget() && hostile.InCombat())
1212-
{
1213-
return hostile;
1214-
}
1215-
}
1216-
}
1217-
}
1218-
return null;
1219-
}
1220-
12211198
IBattleChara? FindPhantomBell()
12221199
{
12231200
var partyMembers = DataCenter.PartyMembers;
@@ -2407,7 +2384,6 @@ public enum TargetType : byte
24072384
Deployment,
24082385
PhantomBell,
24092386
PhantomRespite,
2410-
HolyCannon,
24112387
DarkCannon,
24122388
ShockCannon
24132389
}

RotationSolver.Basic/Rotations/CustomRotation_GCD.cs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,22 @@ private bool RaiseSpell(out IAction? act, bool mustUse)
273273
if (DataCenter.CommandStatus.HasFlag(AutoStatus.Raise))
274274
{
275275
IBaseAction.ShouldEndSpecial = true;
276-
if (DataCenter.CurrentDutyRotation?.RaiseGCD(out act) == true || RaiseGCD(out act) || RaiseAction(out act, false))
276+
if (DataCenter.CurrentDutyRotation?.RaiseGCD(out act) == true)
277+
{
278+
return true;
279+
}
280+
if (Player.HasStatus(true, StatusID.PhantomChemist))
281+
{
282+
if (Player.StatusStack(true, StatusID.PhantomChemist) > 2)
283+
{
284+
return false;
285+
}
286+
}
287+
if (RaiseGCD(out act))
288+
{
289+
return true;
290+
}
291+
if (RaiseAction(out act, false))
277292
{
278293
return true;
279294
}
@@ -289,6 +304,14 @@ private bool RaiseSpell(out IAction? act, bool mustUse)
289304
{
290305
return true;
291306
}
307+
if (Player.HasStatus(true, StatusID.PhantomChemist))
308+
{
309+
if (Player.StatusStack(true, StatusID.PhantomChemist) > 2)
310+
{
311+
return false;
312+
}
313+
}
314+
292315
if (RaiseGCD(out act))
293316
{
294317
return true;
@@ -350,13 +373,6 @@ protected virtual bool MyInterruptGCD(out IAction? act)
350373
protected virtual bool RaiseGCD(out IAction? act)
351374
{
352375
act = null;
353-
if (Player.HasStatus(true, StatusID.PhantomChemist))
354-
{
355-
if (Player.StatusStack(true, StatusID.PhantomChemist) > 2)
356-
{
357-
return false;
358-
}
359-
}
360376

361377
if (DataCenter.CommandStatus.HasFlag(AutoStatus.Raise))
362378
{

RotationSolver.Basic/Rotations/Duties/PhantomRotation.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public virtual void DisplayStatus()
6161
StatusID.Overheated,
6262
StatusID.InnerRelease,
6363
StatusID.Eukrasia,
64+
StatusID.Mudra,
65+
StatusID.TenChiJin
6466
};
6567

6668
/// <summary>
@@ -389,7 +391,6 @@ static partial void ModifyPhantomFirePvE(ref ActionSetting setting)
389391
static partial void ModifyHolyCannonPvE(ref ActionSetting setting)
390392
{
391393
setting.ActionCheck = () => CannoneerLevel >= 2;
392-
setting.TargetType = TargetType.HolyCannon;
393394
setting.CreateConfig = () => new ActionConfig()
394395
{
395396
AoeCount = 1,

0 commit comments

Comments
 (0)