dark knight
Before:
struct: ResourceTable: { timer: 0, timer2: 0, offset_8: 0, offset_9: 0, offset_A: 0, offset_B: 0, offset_C: 0, offset_D: 0, offset_E: 0 }
during :
struct: ResourceTable: { timer: 50, timer2: 0, offset_8: 50, offset_9: 0, offset_A: 0, offset_B: 0, offset_C: 0, offset_D: 0, offset_E: 0 }
full:
struct: ResourceTable: { timer: 100, timer2: 0, offset_8: 100, offset_9: 0, offset_A: 0, offset_B: 0, offset_C: 0, offset_D: 0, offset_E: 0 }
var point = target.Convert().ToVector2();
var radius = Math.Min(GroundMovementThreshold, SampleRadius);
var circle = new ff14bot.Pathing.SampleCircle(point, radius);
var sampleParams = new SamplePointsParameters
{
Circles = new List<ff14bot.Pathing.SampleCircle> {circle},
NavigabilityLocation = target.Convert(),
ZoneId = WorldManager.ZoneId,
NumPoints = SamplePointCount,
Type = ff14bot.Pathing.SamplePointsType.NavigableFrom,
NavigableFromDestinationTolerance = radius
};
var sampledPoints = await Coroutine.ExternalTask(Navigator.NavigationProvider.SamplePointsAsync(sampleParams)) ?? new List<Vector3>();
Thanks for the quick update Mastahg. I wanted to ask, is the navigator point sampling something that should work, and if so is this the correct way to use it?
Code:var point = target.Convert().ToVector2(); var radius = Math.Min(GroundMovementThreshold, SampleRadius); var circle = new ff14bot.Pathing.SampleCircle(point, radius); var sampleParams = new SamplePointsParameters { Circles = new List<ff14bot.Pathing.SampleCircle> {circle}, NavigabilityLocation = target.Convert(), ZoneId = WorldManager.ZoneId, NumPoints = SamplePointCount, Type = ff14bot.Pathing.SamplePointsType.NavigableFrom, NavigableFromDestinationTolerance = radius }; var sampledPoints = await Coroutine.ExternalTask(Navigator.NavigationProvider.SamplePointsAsync(sampleParams)) ?? new List<Vector3>();
Doing that gets me disconnected from the nav server it seems. I'm just not sure if sampling is a function you intended to expose or not, but it seems very useful for finding potential landing points near a target.
var circles = new List<SampleCircle>() { new SampleCircle(new Vector2(idleLocation.X, idleLocation.Z), 15f) };
var samplePoints = SamplePointsParameters.NavigableTo(circles, 1, Core.Player.Location, WorldManager.ZoneId);
var points = await Coroutine.ExternalTask(Navigator.SamplePointsAsync(samplePoints));
@mastahg I don't know if this is even remotely helpful, but, I am trying to find the loot window to make an auto loot roller/voter.
I have the following data, but I'm not sure where to go with it...
ClearLog();
Log(RaptureAtkUnitManager.GetWindowByName("NeedGreed"));
Log(RaptureAtkUnitManager.GetWindowByName("_NotificationLoot"));
Log(RaptureAtkUnitManager.GetWindowByName("VoteMvp"));
Log(RaptureAtkUnitManager.GetWindowByName("NotificationIcMvp"));
foreach (var control in RaptureAtkUnitManager.Controls)
{
if (control.Name == "NeedGreed")
{
Log(control.Name + ":" + control.Pointer.ToString("X") + " - " + control.VTable.ToString("X"));
var x = new[] {13, 14, 15, 16, 17 };
for (int y = 0; y < 5; y++)
{
Log(x[y].ToString() + " - " + control.FindButton(x[y]).Label.Text+ ": " + control.FindButton(x[y]).Clickable.ToString());
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NeedGreed
_NotificationLoot
null
null
NeedGreed:1A609D2CBA0 - 7FF6BC3417F8
13 - Need: False
14 - Greed: True
15 - Pass: True
16 - Loot Recipient: True
17 - Greed Only: True
~~~~~~~~~~~~~~~~~~~~~~
Would you be able to make anything out of this? Say, if that notification is up, activate it, and once the window is open have a button for each option? We could then iterate each item and have it send a button click for Need, Greed, or Pass?
Edit: Made it a little more readable...
Edit 2: So, from looking at the loot window vs the Button Labels,
13 is CanNeed
14 is CanGreed
15 is Pass
16 is CanRecieve (Can Vote on the item at all)
17 is CanGreedOnly (Cannot Need, but can Greed)
What I don't know yet, is how to look at all of the items in the Loot List. This is just for the currently selected one, that I can tell. Needs more testing.
GetTo tries to attune to Eulmore Aetheryte when it can't. The Aethernets can be used but the Aetheryte is inaccessible until completing MSQ: 69167 or 69168. I've already unlocked it so I'm going off memory here. I am running thru the MSQ again as we speak, so I can be more precise once I get there.
Was it correct pre74?@mastahg
It looks like after you hit level 74WHM, it breaks the Lily count. It also adds the Blood Lily count.
struct: ResourceTable: { timer: 0, timer2: 0, offset_8: 0, offset_9: 0, offset_A: 0, offset_B: 0, offset_C: 3, offset_D: 0, offset_E: 0 }
Lilies: 0
struct: ResourceTable: { timer: 0, timer2: 0, offset_8: 0, offset_9: 0, offset_A: 0, offset_B: 0, offset_C: 3, offset_D: 0, offset_E: 0 }
Lilies: 0
struct: ResourceTable: { timer: 0, timer2: 2420, offset_8: 0, offset_9: 0, offset_A: 116, offset_B: 9, offset_C: 2, offset_D: 1, offset_E: 0 }
Lilies: 116
struct: ResourceTable: { timer: 0, timer2: 3637, offset_8: 0, offset_9: 0, offset_A: 53, offset_B: 14, offset_C: 2, offset_D: 1, offset_E: 0 }
Lilies: 53
struct: ResourceTable: { timer: 0, timer2: 22054, offset_8: 0, offset_9: 0, offset_A: 38, offset_B: 86, offset_C: 0, offset_D: 3, offset_E: 0 }
Lilies: 38
struct: ResourceTable: { timer: 0, timer2: 23439, offset_8: 0, offset_9: 0, offset_A: 143, offset_B: 91, offset_C: 0, offset_D: 3, offset_E: 0 }
offset_C is the correct value for the lilies, and offset_D is the correct value for the blood lilies. timer2 is the status of the gauge as it fills, but is unnecessary for anything.
Edit: Even when level synced, the above holds true.
After verification on a lower leveled WHM, no. Offset_C is what is holding the Lily values, and Offset_D is what will hold the Blood Lily values starting at level 74.Was it correct pre74?
Probably cr level stuff.
GameObjectManager.GetObjectsOfType<BattleCharacter>().Where(x => x.CurrentJob != ClassJobType.Adventurer)
ActionResourceManager.WhiteMage.Lily updated
ActionResourceManager.WhiteMage.BloodLily added
GetTo now knows about some of the npc transports in shadowbringers
GetTo will no longer try to learn eulmore aetheryte before the completion of quest 69168
It's already added. Target.SpellCastInfo.Interruptible@mastahg edits for the White Mage look great, thank you.
I have a feature request that might actually be possible now. With the expansion, an effect was added around spell bars that are being cast and can be interrupted. (Picutre below - its the faint orange/yellow "box" around The Ram's Voice cast timer) Is it possible to find where that is coming from and add a CanInterrupt now that there is definitive evidence of whether or not a skill can be interrupted? It would eliminate the need to build list for each and every spell and annotate they can be interrupted or not.
![]()
Thanks for all you do!
It's already added. Target.SpellCastInfo.Interruptible
I keep getting an error, where the character is stuck in a loop mounting/dismounting. Always next to an aetheryte. I dont know why. Someone suggested a fresh new install, I installed RB fresh and it still does it. Here is a part of the log:
16:27:44.236 V] [ExGather v4.4.1.0] Finished gathering from Legendary Mineral Deposit with 28 GP at 11:13 PM ET
[16:27:44.236 N] [ExGather v4.4.1.0] Rotation reset -> Unspoiled
[16:27:44.769 D] DoAction Item 12669 0x106B6B7C
[16:27:46.303 N] [ExGather v4.4.1.0] Hi-Cordial was used. Original GP: 28, Cordial GP: 400, Regenerated GP: 0, Target GP: 428
[16:27:46.303 V] [Poi.Clear] Reason: Node is gone
[16:27:46.369 D] Removed hook [PoiAction] 6f90af17-f9d9-4f2a-bb54-e8b486a13cb0
[16:27:46.370 V] [Poi.Clear] Reason: Current behavior changed to WaitTimerTag: LineNumber: 12524, IsDone: False, WaitTime: 0, HighPriority: False, InCombat: False, QuestId: 0, StepId: 0, PostCombatDelay: 0, QuestName: null, IsDoneCache: False, Behavior: TreeSharp.Sequence, .
[16:27:46.370 D] Replaced hook [ProfileOrderBehavior_Hook] 8b63f6b1-c860-419f-bfd3-0f3ec5cf7b47
[16:27:46.404 V] [Poi.Clear] Reason: Current behavior changed to ExLogTag LineNumber:12532.
[16:27:46.404 D] Replaced hook [ProfileOrderBehavior_Hook] 5a18cc33-6df1-4253-badb-a118d809afac
[16:27:46.404 N] [Mew Ver. 1.6.0] [Miner] Gyr Abanian Ore (FL***)
[16:27:46.436 V] [Poi.Clear] Reason: Current behavior changed to TeleportTo: LineNumber: 12533, ZoneId: 0, AetheryteId: 99, Name: null, Force: True, Aetheryte: null, IsDone: False, HighPriority: False, InCombat: False, QuestId: 0, StepId: 0, PostCombatDelay: 0, QuestName: null, IsDoneCache: False, Behavior: TreeSharp.PrioritySelector, .
[16:27:46.436 D] Replaced hook [ProfileOrderBehavior_Hook] 121bd833-a9eb-4d8d-a513-8767ab6c8320
[16:27:46.436 D] Teleporting to The Peering Stones
[16:27:53.702 N] [FlightEnabledSlideMover] Set default value for flying to false until we can determine if we can fly in this zone.
[16:27:57.104 V] [Poi.Clear] Reason: Current behavior changed to RunCode: LineNumber: 12534, Name: MIN, IsDone: False, HighPriority: False, InCombat: False, QuestId: 0, StepId: 0, PostCombatDelay: 0, QuestName: null, IsDoneCache: False, Behavior: TreeSharp.ActionRunCoroutine, .
[16:27:57.104 D] Replaced hook [ProfileOrderBehavior_Hook] 261457dd-f356-4d8e-b375-732b1bdedd4e
[16:27:57.136 V] [Poi.Clear] Reason: Current behavior changed to ExMoveToTag: { LineNumber: 12538, Distance: 7, Location: <425.4343, 112.8548, 255.9154>, Type: StopWithinRange }.
[16:27:57.136 D] Replaced hook [ProfileOrderBehavior_Hook] 3ec0df60-cfab-48a2-b26b-e393c0a433c6
[16:27:57.137 D] [Flightor] Set up for movement from <424.2981, 114.4044, 241.58> to <425.4343, 112.8548, 255.9154>
[16:27:58.537 V] [Poi.Clear] Reason: Current behavior changed to EtxFlyTo: { LineNumber: 12539, XYZ: <311.8282, 111.822, 429.9672>, AllowedVariance: 10 }.
[16:27:58.537 D] Replaced hook [ProfileOrderBehavior_Hook] e2dc8122-3160-4b10-8fba-e3ae983bba75
[16:27:58.569 D] DoAction General 9 0xE0000000
[16:28:00.403 D] [Flightor] Set up for movement from <424.7077, 113.9107, 249.4014> to <311.8282, 111.822, 429.9672>
[16:28:00.436 D] DoAction General 23 0xE0000000
[16:28:00.706 D] DoAction General 9 0xE0000000
[16:28:03.470 D] DoAction General 23 0xE0000000
[16:28:03.738 D] DoAction General 9 0xE0000000
[16:28:06.504 D] DoAction General 23 0xE0000000
[16:28:06.770 D] DoAction General 9 0xE0000000
[16:28:09.538 D] DoAction General 23 0xE0000000
[16:28:09.803 D] DoAction General 9 0xE0000000
[16:28:12.570 D] DoAction General 23 0xE0000000
[16:28:12.837 D] DoAction General 9 0xE0000000
Can you please look into this, its still happening very often. Thank you