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

Commit

Permalink
fix: changed heal refine.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Apr 26, 2023
1 parent fec60bd commit 67438f0
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
15 changes: 12 additions & 3 deletions RotationSolver/Updaters/TargetUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ private static bool IsHostileCastingBase(BattleChara h, Func<Action, bool> check
#endregion

#region Friends
private static Dictionary<uint, uint> _lastHp = new Dictionary<uint, uint>();
private unsafe static void UpdateFriends(IEnumerable<BattleChara> allTargets)
{
DataCenter.PartyMembers = GetPartyMembers(allTargets);
Expand All @@ -227,8 +228,9 @@ private unsafe static void UpdateFriends(IEnumerable<BattleChara> allTargets)
DataCenter.DyingPeople.Delay(DataCenter.WeakenPeople.Where(p => p.StatusList.Any(StatusHelper.IsDangerous)));

DataCenter.PartyMembersHP = DataCenter.PartyMembers
.Where(p => p.DistanceToPlayer() <= 30)
.Select(GetPartyMemberHPRatio).Where(r => r > 0);
_lastHp = DataCenter.PartyMembers.ToDictionary(p => p.ObjectId, p => p.CurrentHp);

if (DataCenter.PartyMembersHP.Any())
{
DataCenter.PartyMembersAverHP = DataCenter.PartyMembersHP.Average();
Expand All @@ -250,9 +252,16 @@ private static float GetPartyMemberHPRatio(BattleChara member)
return member.GetHealthRatio();
}

if(member.CurrentHp > 0 && member.CurrentHp <= hp.Item1)
var rightHp = member.CurrentHp;
if (rightHp > 0)
{
return Math.Min(1, hp.Item2 / (float)member.MaxHp);
if (!_lastHp.TryGetValue(member.ObjectId, out var lastHp)) lastHp = rightHp;
if(rightHp - lastHp == hp)
{
Watcher.HealHP.Remove(member.ObjectId);
return member.GetHealingRatio();
}
return Math.Min(1, hp + rightHp / (float)member.MaxHp);
}
return member.GetHealingRatio();
}
Expand Down
4 changes: 2 additions & 2 deletions RotationSolver/Watcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class Watcher : IDisposable
public static ICallGateSubscriber<object, object> IpcSubscriber;

public static DateTime HealTime { get; private set; } = DateTime.Now;
public static Dictionary<uint, (uint, uint)> HealHP { get; private set; } = new Dictionary<uint, (uint, uint)>();
public static Dictionary<uint, ushort> HealHP { get; private set; } = new Dictionary<uint, ushort>();
public Watcher()
{
SignatureHelper.Initialise(this);
Expand Down Expand Up @@ -100,7 +100,7 @@ private static void ActionFromSelf(uint sourceId, ActionEffectSet set, uint id)
if (tar == null || action == null) return;

HealHP = set.TargetEffects.Where(e => e[0].Type == ActionEffectType.Heal).ToDictionary(e =>
e.Target.ObjectId, e =>((e.Target is BattleChara b ? b.CurrentHp : 0u), e[0].Value + (e.Target is BattleChara b1 ? b1.CurrentHp : 0u)));
e.Target.ObjectId, e =>e[0].Value);
HealTime = DateTime.Now;

//Record
Expand Down

0 comments on commit 67438f0

Please sign in to comment.