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

Commit

Permalink
fix: fixed PvP lock movement.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Nov 5, 2023
1 parent 5abab09 commit 42539eb
Show file tree
Hide file tree
Showing 7 changed files with 100 additions and 71 deletions.
2 changes: 1 addition & 1 deletion Resources/RotationSolverRecord.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"ClickingCount": 56058,
"ClickingCount": 56801,
"SaidUsers": []
}
8 changes: 7 additions & 1 deletion RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ namespace RotationSolver.Basic.Actions;

public partial class BaseAction
{
internal static readonly uint[] ActionsNoNeedCasting = new uint[]
{
5,
(uint)ActionID.PvP_PowerfulShot,
(uint)ActionID.PvP_BlastCharge,
};
/// <summary>
/// The user set heal ratio.
/// </summary>
Expand Down Expand Up @@ -155,7 +161,7 @@ public unsafe virtual bool CanUse(out IAction act, CanUseOption option = CanUseO
{
if (DataCenter.NextAbilityToNextGCD > AnimationLockTime + DataCenter.Ping + DataCenter.MinAnimationLock) return false;
}
else if (!option.HasFlag(CanUseOption.IgnoreClippingCheck))
else if (!option.HasFlag(CanUseOption.IgnoreClippingCheck) && !ActionsNoNeedCasting.Contains(ID))
{
if (DataCenter.NextAbilityToNextGCD < AnimationLockTime) return false;
}
Expand Down
7 changes: 6 additions & 1 deletion RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ public partial class BaseAction : IBaseAction
/// <inheritdoc/>
public bool IsDutyAction => _option.HasFlag(ActionOption.DutyAction);

/// <summary>
/// Is a pvp action.
/// </summary>
public bool IsPvP => _action.IsPvP;

/// <inheritdoc/>
public bool IsOnSlot
{
Expand All @@ -62,7 +67,7 @@ public bool IsOnSlot
return DataCenter.DutyActions.Contains(AdjustedID);
}

return _action.IsPvP == DataCenter.Territory?.IsPvpZone;
return IsPvP == DataCenter.Territory?.IsPvpZone;
}
}

Expand Down
138 changes: 78 additions & 60 deletions RotationSolver.Basic/Configuration/Configs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,17 +184,17 @@ public enum JobConfigInt : byte

public enum JobConfigFloat : byte
{
[Default(0.55f)] HealthAreaAbilityHot,
[Default(0.55f)] HealthAreaSpellHot,
[Default(0.75f)] HealthAreaAbility,
[Default(0.65f)] HealthAreaSpell,
[Default(0.6f)] HealthSingleAbilityHot,
[Default(0.45f)] HealthSingleSpellHot,
[Default(0.7f)] HealthSingleAbility,
[Default(0.55f)] HealthSingleSpell,

[Default(0.15f)] HealthForDyingTanks,
[Default(1f)] HealthForAutoDefense,
[Default(0.55f), Unit(ConfigUnitType.Ratio)] HealthAreaAbilityHot,
[Default(0.55f), Unit(ConfigUnitType.Ratio)] HealthAreaSpellHot,
[Default(0.75f), Unit(ConfigUnitType.Ratio)] HealthAreaAbility,
[Default(0.65f), Unit(ConfigUnitType.Ratio)] HealthAreaSpell,
[Default(0.6f), Unit(ConfigUnitType.Ratio)] HealthSingleAbilityHot,
[Default(0.45f), Unit(ConfigUnitType.Ratio)] HealthSingleSpellHot,
[Default(0.7f), Unit(ConfigUnitType.Ratio)] HealthSingleAbility,
[Default(0.55f), Unit(ConfigUnitType.Ratio)] HealthSingleSpell,

[Default(0.15f), Unit(ConfigUnitType.Ratio)] HealthForDyingTanks,
[Default(1f), Unit(ConfigUnitType.Ratio)] HealthForAutoDefense,
}
#endregion

Expand Down Expand Up @@ -286,7 +286,7 @@ public enum PluginConfigBool : byte
[Default(false)] ShowTargetTimeToKill,
[Default(true)] ShowTarget,
[Default(true)] ChooseAttackMark,
[Default(false)] CanAttackMarkAOE,
[Default(true)] CanAttackMarkAOE,
[Default(true)] FilterStopMark,
[Default(true)] ShowHostilesIcons,

Expand Down Expand Up @@ -373,89 +373,87 @@ public enum PluginConfigBool : byte

public enum PluginConfigFloat : byte
{
[Default(30f, 0f, 600f)] AutoOffAfterCombatTime,
[Default(3f, 0f, 8f)] DrawingHeight,
[Default(0.2f, 0.005f, 0.05f)] SampleLength,
[Default(0.1f)] KeyBoardNoiseTimeMin,
[Default(0.2f)] KeyBoardNoiseTimeMax,
[Default(45f, 0f, 90f)] AngleOfVisionCone,
[Default(30f, 0f, 600f), Unit(ConfigUnitType.Seconds)] AutoOffAfterCombatTime,
[Default(3f, 0f, 8f), Unit(ConfigUnitType.Ratio)] DrawingHeight,
[Default(0.2f, 0.005f, 0.05f), Unit(ConfigUnitType.Yalms)] SampleLength,
[Default(45f, 0f, 90f), Unit(ConfigUnitType.Degree)] AngleOfVisionCone,


[Default(0.25f, 0f, 0.5f)] HealthDifference,
[Default(1f, 0f, 5f)] MeleeRangeOffset,
[Default(0.1f, 0f, 0.4f)] MinLastAbilityAdvanced,
[Default(0.8f, 0f, 1f)] HealWhenNothingTodoBelow,
[Default(0.6f, 0f, 1f)] TargetIconSize,
[Default(0.25f, 0f, 0.5f), Unit(ConfigUnitType.Ratio)] HealthDifference,
[Default(1f, 0f, 5f), Unit(ConfigUnitType.Yalms)] MeleeRangeOffset,
[Default(0.1f, 0f, 0.4f), Unit(ConfigUnitType.Seconds)] MinLastAbilityAdvanced,
[Default(0.8f, 0f, 1f), Unit(ConfigUnitType.Ratio)] HealWhenNothingTodoBelow,
[Default(0.6f, 0f, 1f), Unit(ConfigUnitType.Pixels)] TargetIconSize,

[Default(0f, 0f, 1f)] MistakeRatio,
[Default(0f, 0f, 1f), Unit(ConfigUnitType.Ratio)] MistakeRatio,

[Default(0.4f, 0f, 1f)] HealthTankRatio,
[Default(0.4f, 0f, 1f)] HealthHealerRatio,
[Default(0.4f, 0f, 1f), Unit(ConfigUnitType.Ratio)] HealthTankRatio,
[Default(0.4f, 0f, 1f), Unit(ConfigUnitType.Ratio)] HealthHealerRatio,

[Default(3f, 1f, 20f)] SpecialDuration,
[Default(3f, 1f, 20f), Unit(ConfigUnitType.Seconds)] SpecialDuration,

[Default(0.08f, 0f, 0.5f)] ActionAhead,
[Default(0.06f)] ActionAheadForLast0GCD,
[Default(0.08f, 0f, 0.5f), Unit(ConfigUnitType.Seconds)] ActionAhead,
[Default(0.06f, 0f, 0.5f), Unit(ConfigUnitType.Seconds)] ActionAheadForLast0GCD,

[Default(0f, 0f, 1f)] WeaponDelayMin,
[Default(0f, 0f, 1f), Unit(ConfigUnitType.Seconds)] WeaponDelayMin,
[Default(0f)] WeaponDelayMax,

[Default(1f, 0f, 3f)] DeathDelayMin,
[Default(1f, 0f, 3f), Unit(ConfigUnitType.Seconds)] DeathDelayMin,
[Default(1.5f)] DeathDelayMax,

[Default(0.5f, 0f, 3f)] WeakenDelayMin,
[Default(0.5f, 0f, 3f), Unit(ConfigUnitType.Seconds)] WeakenDelayMin,
[Default(1f)] WeakenDelayMax,

[Default(0f, 0f, 3f)] HostileDelayMin,
[Default(0f, 0f, 3f), Unit(ConfigUnitType.Seconds)] HostileDelayMin,
[Default(0f)] HostileDelayMax,

[Default(0f, 0f, 3f)] HealDelayMin,
[Default(0f, 0f, 3f), Unit(ConfigUnitType.Seconds)] HealDelayMin,
[Default(0f)] HealDelayMax,

[Default(0.5f, 0f, 3f)] StopCastingDelayMin,
[Default(0.5f, 0f, 3f), Unit(ConfigUnitType.Seconds)] StopCastingDelayMin,
[Default(1f)] StopCastingDelayMax,

[Default(0.5f, 0f, 3f)] InterruptDelayMin,
[Default(0.5f, 0f, 3f), Unit(ConfigUnitType.Seconds)] InterruptDelayMin,
[Default(1f)] InterruptDelayMax,

[Default(3f, 0f, 10f)] NotInCombatDelayMin,
[Default(3f, 0f, 10f), Unit(ConfigUnitType.Seconds)] NotInCombatDelayMin,
[Default(4f)] NotInCombatDelayMax,

[Default(0.1f, 0.05f, 0.25f)] ClickingDelayMin,
[Default(0.1f, 0.05f, 0.25f), Unit(ConfigUnitType.Seconds)] ClickingDelayMin,
[Default(0.15f)] ClickingDelayMax,

[Default(0.5f, 0f, 10f)] ProvokeDelayMin,
[Default(0.5f, 0f, 10f), Unit(ConfigUnitType.Seconds)] ProvokeDelayMin,
[Default(1f)] ProvokeDelayMax,

[Default(0.5f, 0f, 5f)] HealWhenNothingTodoMin,
[Default(0.5f, 0f, 5f), Unit(ConfigUnitType.Seconds)] HealWhenNothingTodoMin,
[Default(1f)] HealWhenNothingTodoMax,

[Default(0.5f, 0f, 3f)] CountdownDelayMin,
[Default(1f)] CountdownDelayMax,
[Default(0.4f, 0f, 0.7f)] CountDownAhead,
[Default(0.5f, 0f, 3f), Unit(ConfigUnitType.Seconds)] CountdownDelayMin,
[Default(1f), Unit(ConfigUnitType.Seconds)] CountdownDelayMax,
[Default(0.4f, 0f, 0.7f), Unit(ConfigUnitType.Seconds)] CountDownAhead,

[Default(24f, 0f, 90f)] MoveTargetAngle,
[Default(90f, 10f, 1800f)] BossTimeToKill,
[Default(10f, 0f, 60f)] DyingTimeToKill,
[Default(24f, 0f, 90f), Unit(ConfigUnitType.Degree)] MoveTargetAngle,
[Default(90f, 10f, 1800f), Unit(ConfigUnitType.Seconds)] BossTimeToKill,
[Default(10f, 0f, 60f), Unit(ConfigUnitType.Seconds)] DyingTimeToKill,

[Default(16f, 9.6f, 96f)] CooldownFontSize,
[Default(16f, 9.6f, 96f), Unit(ConfigUnitType.Pixels)] CooldownFontSize,

[Default(40f, 0f, 80f)] ControlWindowGCDSize,
[Default(30f, 0f, 80f)] ControlWindow0GCDSize,
[Default(30f, 0f, 80f)] CooldownWindowIconSize,
[Default(1.5f, 0f, 10f)] ControlWindowNextSizeRatio,
[Default(8f)] ControlProgressHeight,
[Default(1.2f, 0f, 30f)] DistanceForMoving,
[Default(0.2f, 0.01f, 0.5f)] MaxPing,
[Default(40f, 0f, 80f), Unit(ConfigUnitType.Pixels)] ControlWindowGCDSize,
[Default(30f, 0f, 80f), Unit(ConfigUnitType.Pixels)] ControlWindow0GCDSize,
[Default(30f, 0f, 80f), Unit(ConfigUnitType.Pixels)] CooldownWindowIconSize,
[Default(1.5f, 0f, 10f), Unit(ConfigUnitType.Ratio)] ControlWindowNextSizeRatio,
[Default(8f), Unit(ConfigUnitType.Pixels)] ControlProgressHeight,
[Default(1.2f, 0f, 30f), Unit(ConfigUnitType.Yalms)] DistanceForMoving,
[Default(0.2f, 0.01f, 0.5f), Unit(ConfigUnitType.Seconds)] MaxPing,

[Default(8f, 0f, 30f)] AutoHealTimeToKill,
[Default(0.5f, 0f, 10f)] HostileIconHeight,
[Default(1f, 0.1f, 10f)] HostileIconSize,
[Default(8f, 0f, 30f), Unit(ConfigUnitType.Seconds)] AutoHealTimeToKill,
[Default(0.5f, 0f, 10f), Unit(ConfigUnitType.Pixels)] HostileIconHeight,
[Default(1f, 0.1f, 10f), Unit(ConfigUnitType.Pixels)] HostileIconSize,

[Default(1f, 0f, 3f)] StateIconHeight,
[Default(1f, 0.2f, 10f)] StateIconSize,
[Default(1f, 0f, 3f), Unit(ConfigUnitType.Pixels)] StateIconHeight,
[Default(1f, 0.2f, 10f), Unit(ConfigUnitType.Pixels)] StateIconSize,

[Default(0.02f, 0f, 1f)] MinUpdatingTime,
[Default(0.02f, 0f, 1f), Unit(ConfigUnitType.Seconds)] MinUpdatingTime,
}

public enum PluginConfigVector4 : byte
Expand Down Expand Up @@ -488,6 +486,26 @@ public DefaultAttribute(object @default, object min = null, object max = null)
}
}

public enum ConfigUnitType : byte
{
Seconds,
Degree,
Yalms,
Ratio,
Pixels,
}

[AttributeUsage(AttributeTargets.Field)]
public class UnitAttribute : Attribute
{
public ConfigUnitType UnitType { get; set; }

public UnitAttribute(ConfigUnitType unitType)
{
UnitType = unitType;
}
}

[Serializable]
public class DictionConfig<TConfig, TValue> where TConfig : struct, Enum
{
Expand Down
3 changes: 2 additions & 1 deletion RotationSolver/Commands/RSCommands_Actions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ public static void DoAction()
ControlWindow.DidTime = DateTime.Now;
}

if (nextAction is BaseAction act1 && act1.Target is PlayerCharacter p)
if (nextAction is BaseAction act1 && act1.IsPvP && !act1.IsFriendly
&& act1.Target is PlayerCharacter p)
{
var hash = SocialUpdater.EncryptString(p);

Expand Down
5 changes: 5 additions & 0 deletions RotationSolver/UI/RotationConfigWindow_Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -833,6 +833,11 @@ private static void DrawAutoActionCondition()
JobRoles = new JobRole[]
{
JobRole.Healer,
},
Jobs = new ECommons.ExcelServices.Job[]
{
ECommons.ExcelServices.Job.SMN,
ECommons.ExcelServices.Job.RDM,
}
},

Expand Down
8 changes: 1 addition & 7 deletions RotationSolver/Updaters/MovingUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@ namespace RotationSolver.Updaters;

internal static class MovingUpdater
{
private static readonly uint[] ActionsNoNeedLock = new uint[]
{
5,
(uint)ActionID.PvP_PowerfulShot,
};

internal unsafe static void UpdateCanMove(bool doNextAction)
{
//Special state.
Expand All @@ -24,7 +18,7 @@ internal unsafe static void UpdateCanMove(bool doNextAction)
//Casting the action in list.
else if (Svc.Condition[ConditionFlag.Casting] && Player.Available)
{
Service.CanMove = ActionsNoNeedLock.Contains(Player.Object.CastActionId);
Service.CanMove = BaseAction.ActionsNoNeedCasting.Contains(Player.Object.CastActionId);
}
//Special actions.
else
Expand Down

0 comments on commit 42539eb

Please sign in to comment.