Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
fix: removed the player.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed May 18, 2023
1 parent 63cb904 commit 20f9eb3
Show file tree
Hide file tree
Showing 28 changed files with 194 additions and 196 deletions.
9 changes: 5 additions & 4 deletions RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Game;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;

namespace RotationSolver.Basic.Actions;

Expand Down Expand Up @@ -28,7 +29,7 @@ private bool WillCooldown
}
else
{
if ((ClassJobID)Service.Player.ClassJob.Id != ClassJobID.BlueMage
if ((ClassJobID)Player.Object.ClassJob.Id != ClassJobID.BlueMage
&& ChoiceTarget != TargetFilter.FindTargetForMoving
&& DataCenter.LastAction == (ActionID)AdjustedID) return false;

Expand All @@ -47,7 +48,7 @@ public unsafe virtual bool CanUse(out IAction act, CanUseOption option = CanUseO
act = this;
var mustUse = option.HasFlag(CanUseOption.MustUse);

var player = Service.Player;
var player = Player.Object;
if (player == null) return false;

if (!option.HasFlag(CanUseOption.SkipDisable) && !IsEnabled) return false;
Expand Down Expand Up @@ -146,7 +147,7 @@ public unsafe bool Use()

if (_action.TargetArea)
{
return ActionManager.Instance()->UseActionLocation(ActionType.Spell, ID, Service.Player.ObjectId, &loc);
return ActionManager.Instance()->UseActionLocation(ActionType.Spell, ID, Player.Object.ObjectId, &loc);
}
else if(Service.ObjectTable.SearchById(_targetId) == null)
{
Expand Down
5 changes: 3 additions & 2 deletions RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Game;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;
using RotationSolver.Basic.Configuration;
using Action = Lumina.Excel.GeneratedSheets.Action;

Expand All @@ -23,7 +24,7 @@ public partial class BaseAction : IBaseAction
/// <summary>
/// EnoughLevel for using.
/// </summary>
public bool EnoughLevel => Service.Player.Level >= Level;
public bool EnoughLevel => Player.Level >= Level;
public byte Level => _action.ClassJobLevel;
public string Name => _action.Name;

Expand Down
5 changes: 3 additions & 2 deletions RotationSolver.Basic/Actions/BaseAction_Cooldown.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Game;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;

namespace RotationSolver.Basic.Actions;

Expand Down Expand Up @@ -73,7 +74,7 @@ private bool WillHaveOneCharge(float remain, bool addWeaponRemain)
/// <summary>
/// 技能的最大层数
/// </summary>
public unsafe ushort MaxCharges => Math.Max(ActionManager.GetMaxCharges(AdjustedID, Service.Player.Level), (ushort)1);
public unsafe ushort MaxCharges => Math.Max(ActionManager.GetMaxCharges(AdjustedID, (uint)Player.Level), (ushort)1);
/// <summary>
/// 是否起码有一层技能
/// </summary>
Expand Down
23 changes: 12 additions & 11 deletions RotationSolver.Basic/Actions/BaseAction_Target.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Logging;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;

namespace RotationSolver.Basic.Actions;
Expand All @@ -17,10 +18,10 @@ public partial class BaseAction
/// <summary>
/// The action's target.
/// </summary>
public BattleChara Target { get; private set; } = Service.Player;
public BattleChara Target { get; private set; } = Player.Object;

private Vector3 _position = default;
private uint _targetId = Service.Player?.ObjectId ?? 0;
private uint _targetId = Player.Object?.ObjectId ?? 0;

private Func<IEnumerable<BattleChara>, bool, BattleChara> _choiceTarget = null;

Expand All @@ -47,16 +48,16 @@ internal static bool TankBreakOtherCheck(ClassJobID id)
var tankHealth = id.GetHealthForDyingTank();

return DataCenter.HasHostilesInRange
&& Service.Player.GetHealthRatio() < tankHealth
&& Player.Object.GetHealthRatio() < tankHealth
&& DataCenter.PartyMembersAverHP > tankHealth + 0.01f;
}

private bool FindTarget(bool mustUse, out BattleChara target)
{
int aoeCount = mustUse ? 1 : AOECount;

_position = Service.Player.Position;
var player = Service.Player;
_position = Player.Object.Position;
var player = Player.Object;

float range = Range;

Expand Down Expand Up @@ -128,15 +129,15 @@ private bool TargetAreaMove(float range, bool mustUse)
{
if (Service.Config.MoveAreaActionFarthest)
{
Vector3 pPosition = Service.Player.Position;
float rotation = Service.Player.Rotation;
Vector3 pPosition = Player.Object.Position;
float rotation = Player.Object.Rotation;
_position = new Vector3(pPosition.X + (float)Math.Sin(rotation) * range, pPosition.Y,
pPosition.Z + (float)Math.Cos(rotation) * range);
return true;
}
else
{
var availableCharas = DataCenter.AllTargets.Where(b => b.ObjectId != Service.Player.ObjectId);
var availableCharas = DataCenter.AllTargets.Where(b => b.ObjectId != Player.Object.ObjectId);
var target = TargetFilter.GetObjectInRadius(availableCharas, range).FindTargetForMoving(mustUse);
if (target == null) return false;
_position = target.Position;
Expand Down Expand Up @@ -192,7 +193,7 @@ private bool TargetAreaFriend(float range, bool mustUse, PlayerCharacter player)
private bool TargetPartyAndHostile(float range, bool mustUse, out BattleChara target)
{
var availableCharas = DataCenter.PartyMembers.Union(DataCenter.HostileTargets)
.Where(b => b.ObjectId != Service.Player.ObjectId);
.Where(b => b.ObjectId != Player.Object.ObjectId);
availableCharas = TargetFilter.GetObjectInRadius(availableCharas, range).Where(CanUseTo);

target = ChoiceTarget(availableCharas, mustUse);
Expand All @@ -218,7 +219,7 @@ private bool TargetParty(float range, int aoeCount, bool mustUse, out BattleChar
}
if (!_action.CanTargetSelf)
{
availableCharas = availableCharas.Where(p => p.ObjectId != Service.Player.ObjectId);
availableCharas = availableCharas.Where(p => p.ObjectId != Player.Object.ObjectId);
}
if (!availableCharas.Any())
{
Expand Down Expand Up @@ -412,7 +413,7 @@ public bool CanGetTarget(BattleChara target, BattleChara subTarget)
if (IsSingleTarget) return false;
if (target.DistanceToPlayer() > Range) return false;

var pPos = Service.Player.Position;
var pPos = Player.Object.Position;
Vector3 dir = target.Position - pPos;
Vector3 tdir = subTarget.Position - pPos;

Expand Down
7 changes: 4 additions & 3 deletions RotationSolver.Basic/Actions/BaseItem.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FFXIVClientStructs.FFXIV.Client.Game;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;
using Lumina.Excel.GeneratedSheets;
using RotationSolver.Basic.Configuration;

Expand Down Expand Up @@ -111,10 +112,10 @@ public unsafe bool Use()

if (InventoryManager.Instance()->GetInventoryItemCount(ID, true) > 0)
{
return ActionManager.Instance()->UseAction(ActionType.Item, ID + 1000000, Service.Player.ObjectId, A4);
return ActionManager.Instance()->UseAction(ActionType.Item, ID + 1000000, Player.Object.ObjectId, A4);
}

return ActionManager.Instance()->UseAction(ActionType.Item, ID, Service.Player.ObjectId, A4);
return ActionManager.Instance()->UseAction(ActionType.Item, ID, Player.Object.ObjectId, A4);
}

public override string ToString() => Name;
Expand Down
16 changes: 9 additions & 7 deletions RotationSolver.Basic/Actions/HealPotionItem.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace RotationSolver.Basic.Actions;
using ECommons.GameHelpers;

namespace RotationSolver.Basic.Actions;

public class HealPotionItem : BaseItem
{
Expand All @@ -9,8 +11,8 @@ public uint MaxHealHp
{
get
{
if (Service.Player == null) return 0;
return Math.Min((uint)(Service.Player.MaxHp * _percent), _maxHp);
if (!Player.Available) return 0;
return Math.Min((uint)(Player.Object.MaxHp * _percent), _maxHp);
}
}

Expand All @@ -25,11 +27,11 @@ public HealPotionItem(uint row, float percent, uint maxHp, uint a4 = 65535) : ba
public override bool CanUse(out IAction item)
{
item = null;
if (Service.Player == null) return false;
var job = (ClassJobID)Service.Player.ClassJob.Id;
if (Service.Player.GetHealthRatio() > job.GetHealSingleAbility() -
if (!Player.Available) return false;
var job = (ClassJobID)Player.Object.ClassJob.Id;
if (Player.Object.GetHealthRatio() > job.GetHealSingleAbility() -
job.GetHealingOfTimeSubtractSingle()) return false;
if (Service.Player.MaxHp - Service.Player.CurrentHp < MaxHealHp) return false;
if (Player.Object.MaxHp - Player.Object.CurrentHp < MaxHealHp) return false;
return base.CanUse(out item);
}
}
11 changes: 6 additions & 5 deletions RotationSolver.Basic/DataCenter.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Logging;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Fate;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
Expand Down Expand Up @@ -82,8 +83,8 @@ public static TargetHostileType RightNowTargetToHostileType
{
get
{
if (Service.Player == null) return 0;
var id = Service.Player.ClassJob.Id;
if (!Player.Available) return 0;
var id = Player.Object.ClassJob.Id;
return GetTargetHostileType(Service.GetSheet<ClassJob>().GetRow(id));
}
}
Expand Down Expand Up @@ -125,7 +126,7 @@ public static unsafe ushort FateId
{
if (Service.Config.ChangeTargetForFate && (IntPtr)FateManager.Instance() != IntPtr.Zero
&& (IntPtr)FateManager.Instance()->CurrentFate != IntPtr.Zero
&& Service.Player.Level <= FateManager.Instance()->CurrentFate->MaxLevel)
&& Player.Level <= FateManager.Instance()->CurrentFate->MaxLevel)
{
return FateManager.Instance()->CurrentFate->FateId;
}
Expand Down Expand Up @@ -255,7 +256,7 @@ public static float RatioOfMembersIn2minsBurst
{
var tar = burstInfo.IsOnHostile
&& Service.TargetManager.Target is BattleChara b ? b
: Service.Player;
: Player.Object;
if (tar.HasStatus(false, burstInfo.Status)
&& !tar.WillStatusEndGCD(0, 0, false, burstInfo.Status))
{
Expand Down Expand Up @@ -356,7 +357,7 @@ internal static unsafe void AddActionRec(Action act)
case ActionCate.Ability:
LastAction = LastAbility = id;

if (!act.IsRealGCD() && ActionManager.GetMaxCharges((uint)id, Service.Player?.Level ?? 1) < 2)
if (!act.IsRealGCD() && ActionManager.GetMaxCharges((uint)id, Player.Object?.Level ?? 1) < 2)
{
FetchTime = ActionManager.Instance()->GetRecastGroupDetail(act.CooldownGroup - 1)->Elapsed;
}
Expand Down
11 changes: 6 additions & 5 deletions RotationSolver.Basic/Helpers/ObjectHelper.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Dalamud.Game.ClientState.Objects.Enums;
using ECommons.GameHelpers;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Event;
using Lumina.Excel.GeneratedSheets;
Expand Down Expand Up @@ -145,7 +146,7 @@ public static EnemyPositional FindEnemyPositional(this GameObject enemy)
float rotation = enemy.Rotation;
Vector2 faceVec = new((float)Math.Cos(rotation), (float)Math.Sin(rotation));

Vector3 dir = Service.Player.Position - pPosition;
Vector3 dir = Player.Object.Position - pPosition;
Vector2 dirVec = new(dir.Z, dir.X);

double angle = Math.Acos(Vector2.Dot(dirVec, faceVec) / dirVec.Length() / faceVec.Length());
Expand All @@ -157,10 +158,10 @@ public static EnemyPositional FindEnemyPositional(this GameObject enemy)

public static uint GetHealthFromMulty(float mult)
{
if (Service.Player == null) return 0;
if (!Player.Available) return 0;

var role = Service.GetSheet<ClassJob>().GetRow(
Service.Player.ClassJob.Id).GetJobRole();
Player.Object.ClassJob.Id).GetJobRole();
float multi = mult * role switch
{
JobRole.Tank => 1,
Expand All @@ -178,7 +179,7 @@ public static uint GetHealthFromMulty(float mult)
multi *= 3.5f;
}

return (uint)(multi * Service.Player.MaxHp);
return (uint)(multi * Player.Object.MaxHp);
}

/// <summary>
Expand All @@ -189,7 +190,7 @@ public static uint GetHealthFromMulty(float mult)
public static float DistanceToPlayer(this GameObject obj)
{
if (obj == null) return float.MaxValue;
var player = Service.Player;
var player = Player.Object;
if (player == null) return float.MaxValue;

var distance = Vector3.Distance(player.Position, obj.Position) - player.HitboxRadius;
Expand Down
10 changes: 6 additions & 4 deletions RotationSolver.Basic/Helpers/StatusHelper.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Dalamud.Game.ClientState.Statuses;
using Dalamud.Logging;
using ECommons.Automation;
using ECommons.GameHelpers;
using RotationSolver.Basic.Configuration;

namespace RotationSolver.Basic.Helpers;
Expand Down Expand Up @@ -127,8 +129,8 @@ public static bool HasStatus(this BattleChara obj, bool isFromSelf, params Statu

public static void StatusOff(StatusID status)
{
if (!Service.Player?.HasStatus(false, status) ?? true) return;
Service.SubmitToChat($"/statusoff {GetStatusName(status)}");
if (!Player.Object?.HasStatus(false, status) ?? true) return;
Chat.Instance.SendMessage($"/statusoff {GetStatusName(status)}");
}

internal static string GetStatusName(StatusID id)
Expand All @@ -147,8 +149,8 @@ private static IEnumerable<Status> GetAllStatus(this BattleChara obj, bool isFro
if (obj == null) return Array.Empty<Status>();

return obj.StatusList.Where(status => !isFromSelf
|| status.SourceId == Service.Player.ObjectId
|| status.SourceObject?.OwnerId == Service.Player.ObjectId);
|| status.SourceId == Player.Object.ObjectId
|| status.SourceObject?.OwnerId == Player.Object.ObjectId);
}

public static bool IsInvincible(this Status status)
Expand Down
11 changes: 6 additions & 5 deletions RotationSolver.Basic/Helpers/TargetFilter.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Lumina.Excel.GeneratedSheets;
using ECommons.GameHelpers;
using Lumina.Excel.GeneratedSheets;
using System.Data;

namespace RotationSolver.Basic.Helpers;
Expand Down Expand Up @@ -88,8 +89,8 @@ internal static T FindTargetForMoving<T>(this IEnumerable<T> charas, bool mustUs
const float DISTANCE_TO_MOVE = 3;
private static T FindMoveTargetFaceDirection<T>(IEnumerable<T> charas) where T : GameObject
{
Vector3 pPosition = Service.Player.Position;
float rotation = Service.Player.Rotation;
Vector3 pPosition = Player.Object.Position;
float rotation = Player.Object.Rotation;
Vector2 faceVec = new((float)Math.Cos(rotation), (float)Math.Sin(rotation));

var tars = charas.Where(t =>
Expand All @@ -107,7 +108,7 @@ private static T FindMoveTargetFaceDirection<T>(IEnumerable<T> charas) where T :

private static T FindMoveTargetScreenCenter<T>(IEnumerable<T> charas) where T : GameObject
{
var pPosition = Service.Player.Position;
var pPosition = Player.Object.Position;
if (!Service.WorldToScreen(pPosition, out var playerScrPos)) return null;

var tars = charas.Where(t =>
Expand Down Expand Up @@ -166,7 +167,7 @@ internal static IEnumerable<BattleChara> TankRangeTarget(IEnumerable<BattleChara
/// <returns></returns>
internal static IEnumerable<BattleChara> ProvokeTarget(IEnumerable<BattleChara> inputCharas, bool needDistance = false)
{
var loc = Service.Player.Position;
var loc = Player.Object.Position;

var targets = inputCharas.Where(target =>
{
Expand Down
2 changes: 2 additions & 0 deletions RotationSolver.Basic/RotationSolver.Basic.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
<Using Include="RotationSolver.Basic.Rotations" />
<Using Include="RotationSolver.Basic.Rotations.Basic" />

<ProjectReference Include="..\ECommons\ECommons\ECommons.csproj" />

<None Include="..\COPYING.LESSER">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
Expand Down
4 changes: 2 additions & 2 deletions RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ public abstract partial class CustomRotation
/// <summary>
/// This is the player.
/// </summary>
protected static PlayerCharacter Player => Service.Player;
protected static PlayerCharacter Player => ECommons.GameHelpers.Player.Object;

/// <summary>
/// The level of the player.
/// </summary>
protected static byte Level => Player?.Level ?? 0;
protected static byte Level => (byte)ECommons.GameHelpers.Player.Level;

/// <summary>
/// Does player have swift cast, dual cast or triple cast.
Expand Down
Loading

0 comments on commit 20f9eb3

Please sign in to comment.