Skip to content

Commit

Permalink
Merge pull request #599 from DeviousCrypto/PVP-VPRDRG
Browse files Browse the repository at this point in the history
Enhance VPR/DRG PvP Action Logic and UI Updates
  • Loading branch information
LTS-FFXIV authored Jan 22, 2025
2 parents 53ac285 + 7bd5684 commit 06b6712
Show file tree
Hide file tree
Showing 5 changed files with 300 additions and 6 deletions.
2 changes: 2 additions & 0 deletions RotationSolver.Basic/Actions/ActionBasicInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ private bool IsStatusProvidedDuringGCD()

private readonly bool CheckForCombo()
{
if (!_action.Config.ShouldCheckCombo) return true;

if (_action.Setting.ComboIdsNot != null)
{
if (_action.Setting.ComboIdsNot.Contains(DataCenter.LastComboAction)) return false;
Expand Down
5 changes: 5 additions & 0 deletions RotationSolver.Basic/Actions/ActionConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ public bool IsEnabled
/// </summary>
public bool ShouldCheckStatus { get; set; } = true;

/// <summary>
/// Should check the combo for this action.
/// </summary>
public bool ShouldCheckCombo { get; set; } = true;

/// <summary>
/// The status count in gcd for adding the status.
/// </summary>
Expand Down
77 changes: 76 additions & 1 deletion RotationSolver.Basic/Rotations/Basic/DragoonRotation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -350,10 +350,85 @@ static partial void ModifyStarcrossPvE(ref ActionSetting setting)
};
}
#endregion

#region PvP Actions

static partial void ModifyRaidenThrustPvP(ref ActionSetting setting)
{
}

static partial void ModifyFangAndClawPvP(ref ActionSetting setting)
{
}

static partial void ModifyWheelingThrustPvP(ref ActionSetting setting)
{
}

static partial void ModifyDrakesbanePvP(ref ActionSetting setting)
{
}

static partial void ModifyChaoticSpringPvP(ref ActionSetting setting)
{
}

static partial void ModifyHorridRoarPvP(ref ActionSetting setting)
{
setting.IsFriendly = false;
}

static partial void ModifyHeavensThrustPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.RaidenThrustPvP) == ActionID.HeavensThrustPvP;
}

static partial void ModifyStarcrossPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.RaidenThrustPvP) == ActionID.StarcrossPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyGeirskogulPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 2,
};
}

static partial void ModifyNastrondPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.GeirskogulPvP) == ActionID.NastrondPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 2,
};
}

static partial void ModifyElusiveJumpPvP(ref ActionSetting setting)
{
setting.SpecialType = SpecialActionType.MovingBackward;
setting.IsFriendly = true;
}

static partial void ModifyWyrmwindThrustPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.ElusiveJumpPvP) == ActionID.WyrmwindThrustPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

// PvP
static partial void ModifyHighJumpPvP(ref ActionSetting setting)
{
setting.SpecialType = SpecialActionType.MovingForward;
}
#endregion


}
216 changes: 214 additions & 2 deletions RotationSolver.Basic/Rotations/Basic/ViperRotation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ public static bool SwiftLessThanHunter
}
#endregion

#region Actions
#region PvE Actions

static partial void ModifyWrithingSnapPvE(ref ActionSetting setting)
{
Expand Down Expand Up @@ -578,4 +578,216 @@ static partial void ModifyFourthLegacyPvE(ref ActionSetting setting)
};
}
#endregion
}

#region PvP Actions
static partial void ModifyRavenousBitePvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifySwiftskinsStingPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyPiercingFangsPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyBarbarousBitePvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyHuntersStingPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifySteelFangsPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyBloodcoilPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyUncoiledFuryPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifySerpentsTailPvP(ref ActionSetting setting)
{
// technically not a real move
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifySlitherPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifySnakeScalesPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyRattlingCoilPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyFirstGenerationPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.FirstGenerationPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifySecondGenerationPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.SecondGenerationPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyThirdGenerationPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.ThirdGenerationPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyFourthGenerationPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SteelFangsPvP) == ActionID.FourthGenerationPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifySanguineFeastPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.BloodcoilPvP) == ActionID.SanguineFeastPvP;
setting.CreateConfig = () => new ActionConfig()
{
ShouldCheckCombo = false,
};
}

static partial void ModifyOuroborosPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.BloodcoilPvP) == ActionID.OuroborosPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyDeathRattlePvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.DeathRattlePvP;
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyTwinfangBitePvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.TwinfangBitePvP;
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyTwinbloodBitePvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.TwinbloodBitePvP;
setting.CreateConfig = () => new ActionConfig();
}

static partial void ModifyUncoiledTwinfangPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.UncoiledTwinfangPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyUncoiledTwinbloodPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.UncoiledTwinbloodPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyFirstLegacyPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.FirstLegacyPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifySecondLegacyPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.SecondLegacyPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyThirdLegacyPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.ThirdLegacyPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyFourthLegacyPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SerpentsTailPvP) == ActionID.FourthLegacyPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyBacklashPvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Service.GetAdjustedActionId(ActionID.SnakeScalesPvP) == ActionID.BacklashPvP;
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}

static partial void ModifyFuriousBacklashPvP(ref ActionSetting setting)
{
setting.CreateConfig = () => new ActionConfig()
{
AoeCount = 1,
};
}
#endregion
}
6 changes: 3 additions & 3 deletions RotationSolver/UI/RotationConfigWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1746,18 +1746,19 @@ static void DrawActionDebug()
{
ImGui.Text("ID: " + action.Info.ID);
ImGui.Text("AdjustedID: " + Service.GetAdjustedActionId(action.Info.ID));
ImGui.Text($"Can Use: {action.CanUse(out _)} ");
ImGui.Text("AoeCount: " + action.Config.AoeCount);
ImGui.Text("ShouldCheckStatus: " + action.Config.ShouldCheckStatus);
#if DEBUG
ImGui.Text("Is Real GCD: " + action.Info.IsRealGCD);

// Ensure ActionManager.Instance() is not null
if (ActionManager.Instance() != null)
{
ImGui.Text("Resources: " + ActionManager.Instance()->CheckActionResources(ActionType.Action, action.AdjustedID));
ImGui.Text("Status: " + ActionManager.Instance()->GetActionStatus(ActionType.Action, action.AdjustedID));
}

ImGui.Text("Cast Time: " + action.Info.CastTime);
ImGui.Text("MP: " + action.Info.MPNeed);
#endif
Expand All @@ -1771,7 +1772,6 @@ static void DrawActionDebug()
ImGui.Text("Recast Elapsed: " + action.Cooldown.RecastTimeElapsedRaw);
ImGui.Text($"Charges: {action.Cooldown.CurrentCharges} / {action.Cooldown.MaxCharges}");

ImGui.Text($"Can Use: {action.CanUse(out _)} ");
ImGui.Text("IgnoreCastCheck:" + action.CanUse(out _, skipCastingCheck: true));
ImGui.Text("Target Name: " + action.Target.Target?.Name ?? string.Empty);
ImGui.Text($"SpellUnlocked: {action.Info.SpellUnlocked} ({action.Action.UnlockLink.RowId})");
Expand Down

0 comments on commit 06b6712

Please sign in to comment.