diff --git a/BetterGenshinImpact/GameTask/AutoPathing/Handler/ActionFactory.cs b/BetterGenshinImpact/GameTask/AutoPathing/Handler/ActionFactory.cs
index 03a5e326..c8ee2eb6 100644
--- a/BetterGenshinImpact/GameTask/AutoPathing/Handler/ActionFactory.cs
+++ b/BetterGenshinImpact/GameTask/AutoPathing/Handler/ActionFactory.cs
@@ -16,6 +16,8 @@ public class ActionFactory
"nahida_collect" => new NahidaCollectHandler(),
"pick_around" => new PickAroundHandler(),
"fight" => new AutoFightHandler(),
+ "normal_attack" => new NormalAttackHandler(),
+ "elemental_skill" => new ElementalSkillHandler(),
_ => throw new ArgumentException("未知的 action 类型")
};
});
diff --git a/BetterGenshinImpact/GameTask/AutoPathing/Handler/ElementalSkillHandler.cs b/BetterGenshinImpact/GameTask/AutoPathing/Handler/ElementalSkillHandler.cs
new file mode 100644
index 00000000..7ee9465c
--- /dev/null
+++ b/BetterGenshinImpact/GameTask/AutoPathing/Handler/ElementalSkillHandler.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using BetterGenshinImpact.Core.Simulator;
+using Vanara.PInvoke;
+
+namespace BetterGenshinImpact.GameTask.AutoPathing.Handler;
+
+///
+/// 触发元素战技
+///
+public class ElementalSkillHandler : IActionHandler
+{
+ public Task RunAsync(CancellationTokenSource cts)
+ {
+ Simulation.SendInput.Keyboard.KeyPress(User32.VK.VK_E);
+ return Task.CompletedTask;
+ }
+}
diff --git a/BetterGenshinImpact/GameTask/AutoPathing/Handler/NormalAttackHandler.cs b/BetterGenshinImpact/GameTask/AutoPathing/Handler/NormalAttackHandler.cs
new file mode 100644
index 00000000..6c789d71
--- /dev/null
+++ b/BetterGenshinImpact/GameTask/AutoPathing/Handler/NormalAttackHandler.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using BetterGenshinImpact.Core.Simulator;
+using Vanara.PInvoke;
+
+namespace BetterGenshinImpact.GameTask.AutoPathing.Handler;
+
+///
+/// 触发元素战技
+///
+public class NormalAttackHandler : IActionHandler
+{
+ public Task RunAsync(CancellationTokenSource cts)
+ {
+ Simulation.SendInput.Mouse.LeftButtonClick();
+ return Task.CompletedTask;
+ }
+}