What is this?
This is a tool to calculate more optimal targets for Astrologian cards in Final Fantasy XIV. This is broken down into two different searches. The first looking for the optimal target with each window where a card was actually played in the fight ('Card Play' window). The second search looks at possible times between each Draw cast where players were doing the most damage during a 15s window ('Card Draw' window).
Important note: This tool is now updated for Endwalker patch 6.0 and will no longer handle previous logs correctly given the changes to Minor Arcana, Divination, and the removal of Sleeve Draw.
Does it account for...
Generally, yes. Specifically it accounts for these commonly asked things:
- Includes pet damage
- Excludes ticks from DoTs snapshotted before the card window
- Excludes ticks from DoTs snapshotted after the card window
- Includes ticks from DoTs snapshotted inside the card window, including ticks that happen afterward
- Includes damage from ground effect DoTs (Doton, Salted Earth, Flamethrower, Slipstream)
- Excludes the 3%/6% damage buff from the active card
- Accounts for the correct melee/ranged bonus associated with the card
- During a 'Card Play' window any targets who already have an active card at the time of cast are ignored for recommendation as the optimal target
- While searching for optimal cards during a 'Card Draw' window all damage from card buffs is ignored
How it works
This is the methodology used by the script for each 'Card Play' window
- Get all of the non-tick, direct damage inside the card window (typically 15s) for each player
- Find the start of all tick application or reapplication events that occur during the card window and then sum the associated damage events (even if those occur outside of the card window)
- Take out the appropriate bonus to the player that actually received the card based on what card was played and the job of the receiving player
After doing all of that, the result is a fairly accurate representation of the total amount of damage that would have been buffed by the card, if that player were its target at the time it was originally played.
Separately for each 'Card Draw' window the script uses the following methodology:
- Get all of the non-tick, direct damage inside the card window (typically 15s) for each player
- For every tick application or reapplication the damage events associated with that event are summed up and listed as a new damage event at the application time with a total amount associated with the summed damage value
- The damage bonus associated with every card played throughout the fight is removed
- Starting at the time of the initial event:
- The damage for each player is summed up as if a card was played at this time lasting for 15s
- The starting time is incremented in 1s time steps while checking that it is still before the time of final event for the window
- The ranged and melee results are checked separately and reported in different tabs.
- A number of maximal damage values are selected from this collection based on the size of the window
- The same character will not be listed again within 4s of a previously listed damage window with higher total damage
Duration | Count Reported |
---|---|
0s - 4s | 2 |
4s - 10s | 4 |
10s - 20s | 6 |
20s+ | 8 |
This output should help to accurately predict where it might have been possible to play a card on a player while they are doing the maximum amount. However, it does have some limitations discussed below
Current limitations
Some notes on the current analysis with regards to the optimal target for each 'Card Play' window:
- Cards overwriting other cards isn't looked for explicitly but instead just results in shortened card play windows
- The optimal target is based on the role (melee or ranged) of the card you played and there is no consideration at whether you should have tried to Redraw for a card of the opposite type
- If multiple cards are active at the same time players that have active cards already are ignored during the later card plays without checking if an alternative play order would have been more optimal
While searching for the maximum damage output possible to cover with a card play during each potential 'Card Draw' window the following considerations are not taken into account:
- Within each draw window there is no consideration for what card you have drawn, what seals you have or need, whether it would be reasonable to redraw for a different role or seal
- No consideration is given to your GCD, weave slots, or potential healing when calculating the initial time for playing cards so it is possible that it would be unreasonable to play a card a specified time
- The search is performed in 1s increments so it is possible that two damage instances which are nearly 15s apart will never end up considered together despite there being a possible card which would cover these. Thus it's possible that the reported play time for maximum damage is incorrect and could be higher if the playtime was shifted by less than a second in either direction
Who made this?
This projected was adapted from the tethercalc project made by Platinum Xephera on the Ultros server who graciously let me use their code as a starting point. It's currently managed by Marielle Kaidafaux on Adamantoise. I made it because I wanted a tool to examine optimal targets for cards while playing Astrologian. I hope the 7098 analyzed reports have been useful.
If you notice any issues, feel free to DM me through Discord (Melody ♫#3761), or open issues and pull requests on the GitHub repo for this site.
Also, additional thanks to the tooltips which are provided through the Vue-XIVTooltips library.
Changes
2022-01-17: Fixed an issue where P3S logs were not handled properly as a result of the Darkened Fire debuff. This was fixed in git commit 7156160
2021-12-14: Updates for Endwalker compatibility. With this update this tool is no longer capable of handling older logs properly as it will no longer handle Sleeve Draw, Minor Arcana, or Divination. It now also properly considers Sage as a ranged job and Reaper as a melee job. This was fixed in git commit e68c7b1
2021-09-29: Fixed an issue where the name for direct hits changed on the FFlogs API so damage attribution to DH% and CDH% was incorrect. This was fixed in git commit 27a7129
2021-05-08: Fixed the handling of damage snapshots to properly use the prepare event timestamp. This was fixed in git commit 8ea9ee3
2021-03-20: Added detailed information tab which contains information about remaining card duration as well as a breakdown of the critical and direct hit rate as well as the percentage of damage from DoTs. This was implemented in git commit 2b7ed07
2021-02-25: Fixed issues where card bonuses were being removed twice in certain cases, cases where future cards bonuses weren't handled correctly, and cases where damage event occurring at the same time as buff events would result in improper handling of the card bonus. These were fixed in git commit 45ff176 and fcfbc33
2021-02-25: Fixed an issue where if the same card was refreshed on someone before it expired the second play was ignored. This was fixed in git commit 19c80ca
2021-02-25: Fixed an issue where play casts with no corresponding buff event would cause the analysis to crash. This was fixed in git commit 2da6701
2021-02-24: Fixed an issue where card play buff windows could be at the same time or after the next draw event which would result in the card play being ignored or potentially overwriting the next card play. This was fixed in git commit e474954.
2021-01-26: Added 'Card Draw' windows for studying better times to play cards given the times when Draw/Sleeve Draw/Divination was used. This was added in git commit 243713a.
2021-01-15: Fixed pet tick damage (such as SMN Ifrit Enkindle DoT) not being correctly included in the damage total for that player. Fixed in git commit 1eafff2.