From 89e001f82b4d30bfff91969b8293aca61776202d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Mon, 21 Aug 2023 21:17:33 +0800 Subject: [PATCH] fix: add a random place for Beneficial Area --- Resources/HostileCastingArea.json | 8 +++++++- RotationSolver.Basic/Actions/BaseAction_Target.cs | 10 ++++++++-- RotationSolver/Localization/Strings.cs | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Resources/HostileCastingArea.json b/Resources/HostileCastingArea.json index 108daa9a4..fdedf05c3 100644 --- a/Resources/HostileCastingArea.json +++ b/Resources/HostileCastingArea.json @@ -384,5 +384,11 @@ 33497, 33490, 33494, - 32113 + 32113, + 11157, + 11178, + 11185, + 11528, + 651, + 3738 ] \ No newline at end of file diff --git a/RotationSolver.Basic/Actions/BaseAction_Target.cs b/RotationSolver.Basic/Actions/BaseAction_Target.cs index b72175ca8..a4700875c 100644 --- a/RotationSolver.Basic/Actions/BaseAction_Target.cs +++ b/RotationSolver.Basic/Actions/BaseAction_Target.cs @@ -169,7 +169,9 @@ private bool TargetAreaMove(float range, bool mustUse) var camera = CameraManager.Instance()->CurrentCamera; var tar = camera->LookAtVector - camera->Object.Position; tar.Y = 0; - tar = tar / ((Vector3)tar).Length() * range; + var length = ((Vector3)tar).Length(); + if (length == 0) return false; + tar = tar / length * range; Position = new Vector3(pPosition.X + tar.X, pPosition.Y, pPosition.Z + tar.Z); } @@ -202,7 +204,11 @@ private bool TargetAreaFriend(float range, bool mustUse, PlayerCharacter player) && pts != null && pts.Length > 0) { var closest = pts.MinBy(p => Vector3.Distance(player.Position, p)); - if(Vector3.Distance(player.Position, closest) < player.HitboxRadius + EffectRange) + var rotation = new Random().NextDouble() * Math.Tau; + var radius = new Random().NextDouble() * 1; + closest.X += (float)(Math.Sin(rotation) * radius); + closest.Z += (float)(Math.Cos(rotation) * radius); + if (Vector3.Distance(player.Position, closest) < player.HitboxRadius + EffectRange) { Position = closest; return true; diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 74555affb..139420199 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -350,7 +350,7 @@ internal partial class Strings public string SpecialCommandType_Burst { get; set; } = "Burst"; public string SpecialCommandType_EndSpecial { get; set; } = "End Special"; public string SpecialCommandType_Speed { get; set; } = "Speed"; - public string SpecialCommandType_Smart { get; set; } = "Auto Target "; + public string SpecialCommandType_Smart { get; set; } = "Auto Target"; public string SpecialCommandType_Manual { get; set; } = "Manual Target"; public string SpecialCommandType_Cancel { get; set; } = "Cancel"; public string SpecialCommandType_Off { get; set; } = "Off"; @@ -358,7 +358,7 @@ internal partial class Strings #region ActionConditionType public string ActionConditionType_Elapsed { get; set; } = "Elapsed"; - public string ActionConditionType_ElapsedGCD { get; set; } = "ElapsedG CD "; + public string ActionConditionType_ElapsedGCD { get; set; } = "Elapsed GCD"; public string ActionConditionType_Remain { get; set; } = "Remain Time"; public string ActionConditionType_RemainGCD { get; set; } = "Remain GCD"; public string ActionConditionType_ShouldUse { get; set; } = "Can Use";