add positional highlighting driven by the next weaponskill - #17
Closed
ColdCoffee83 wants to merge 2 commits into
Closed
ColdCoffee83 wants to merge 2 commits into
ColdCoffee83 wants to merge 2 commits into
Conversation
Adds an opt-in mode that colours the guidelines by whether the next weaponskill actually wants that side of the target, rather than by a fixed per-direction colour. The correct cone is drawn in one colour and every other side in another, and the area the guidelines enclose can optionally be shaded so the correct cone reads as a solid wedge instead of something to infer from which lines changed. Monk is the only job wired up so far. As of Dawntrail its positionals both live in coeurl form - Demolish wants the rear, Snap Punch / Pouncing Coeurl wants a flank - and every other monk weaponskill has lost its positional entirely, so coeurl form is the whole surface. Which of the two is coming is read off MNKGauge.CoeurlFury rather than guessed from the rotation: Demolish grants the stacks and Pouncing Coeurl spends them, so a stack on the gauge means the flank button is next. Perfect Balance suppresses the form status, so that window is handled separately and is behind its own toggle. Positionals.Detect dispatches on job id, so other jobs can be added without touching the rendering path. Defaults to off, so nobody's existing colours change on update. The shading is a triangle fan whose segments share their edges exactly, so it draws with AntiAliasedFill cleared and the flag restored right after - otherwise each triangle's AA fringe blends over its neighbour's and leaves spokes radiating out of the target. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds dragoon, ninja, reaper, samurai and viper alongside monk, which
together cover every positional currently in the game. Each job reads
whatever state actually settles the choice rather than guessing at a
rotation, and returns None wherever the next weaponskill has no
positional, so the guides fall back to their configured colours.
dragoon - combo state. Chaotic Spring and Wheeling Thrust want the
rear, Fang and Claw wants a flank; all three sit at fixed
steps of the two branches, so the combo alone settles it.
ninja - combo state plus NINGauge.Kazematoi. Aeolian Edge and Armor
Crush are the same combo step; Armor Crush grants two
against a cap of five, so it goes out at three or fewer.
reaper - Soul Reaver / Executioner gates the window, and the
Enhanced Gibbet / Enhanced Gallows buffs pick the side. With
neither up both hit for the same, so nothing is advised.
samurai - combo state. Gekko follows Jinpu and wants the rear, Kasha
follows Shifu and wants a flank.
viper - combo state. Both finishers on each branch share a side, so
only the branch matters: Hunter's Sting leads to the flank
pair, Swiftskin's Sting to the rear pair.
The dragoon action list includes the pre-upgrade ids (Disembowel, Chaos
Thrust, Full Thrust) so the guides still work below max level.
Every positional above was checked against the live action descriptions
rather than recalled, which is also how monk's came out as coeurl-only.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Owner
|
Sorry, but I don't think I can merge this. I'm pretty sure this would take the plugin beyond what the main repo guidelines allow, by going from simply providing information that already exists to performing logic for the player. I'd have to take this off the main repo and move it to being a third-party plugin, and not only do I not want to do that, there's already a third-party plugin to do exactly what you're proposing. However, I very much appreciate the point about the workflow! I was messing around with some ideas a while back and thought I'd reverted everything, but apparently not. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
An opt-in mode that colours the guidelines by whether the next weaponskill actually wants that side of the target, instead of by a fixed per-direction colour. The correct cone gets one colour, every other side gets another, and they swap as the correct positional changes.
Optionally it also shades in the area the guidelines enclose, so the correct cone reads as a solid wedge rather than something you infer from which lines changed.
It defaults to off, so nobody's existing colours change when they update.
Coverage
All six jobs that have positionals. Each one reads whatever state actually settles the choice, rather than guessing at a rotation:
MNKGauge.CoeurlFuryNINGauge.KazematoiAnywhere the next weaponskill has no positional - a different job, the wrong point in a combo, a reaper with neither Gibbet nor Gallows enhanced - it returns
Noneand the guides fall straight back to the existing per-line colours. Current behaviour is untouched on every path that isn't actively highlighting something.On the awkward cases
Most of these are fully deterministic. Three needed a judgement call, and I'd rather flag them than have them found in review:
Monk's Perfect Balance suppresses the form status, so there's nothing to read. It's behind its own toggle, defaulting to highlighting the rear: Demolish is the coeurl-chakra filler, and nothing else pressed inside that window has a positional at all, so the rear is never the wrong place to stand.
Ninja's Kazematoi threshold. Aeolian Edge and Armor Crush are the same combo step and both are always usable, so which one is "correct" is a resource call rather than a hard requirement. Armor Crush grants two against a cap of five, so the code spends at four or more and builds at three or fewer. That's the standard line, but it is a line, and it's a named constant if you'd want it moved into config.
Reaper with neither Gibbet nor Gallows enhanced hits for the same either way, so it returns
Nonerather than inventing a preference.Monk is worth a note too: as of Dawntrail its positionals are only in coeurl form. Leaping Opo, Dragon Kick, Rising Raptor and Twin Snakes have no positional line left in their descriptions. I checked every positional here against the live action data rather than working from memory, which is the only reason that came up - my own first instinct had monk with six.
Structure
Positionals.Detectdispatches on job id and returns aRequiredPositional(None/Rear/Flank). The rendering path only ever sees that enum, so a job is one private method and one switch arm; nothing job-shaped reaches the drawing code.Dragoon's action list includes the pre-upgrade ids (Disembowel, Chaos Thrust, Full Thrust) so it still works below max level.
One rendering note
The shading is a triangle fan around the target. Its segments share their edges exactly, so it draws with
AntiAliasedFillcleared and the flag restored immediately afterwards. Without that, each triangle's AA fringe blends over its neighbour's and you get faint spokes radiating out of the target.Also added
/posguide toggle positionalsand/posguide toggle fill, documented in the existing command help section.Testing
Builds clean against API 15 with no new warnings. Played on monk with it on - the colours flip on the correct GCD and the shading tracks the target properly. The other five are verified at the data level (positional requirements and combo prerequisites pulled from the live sheets, and the compiled constants checked back against them) but I've only put monk through actual combat, so a second pair of eyes on the others would be welcome.
Heads up, unrelated to this PR
pr-test.ymluploads fromPositionalGuide/bin/release/portable/PositionalGuide, but the build puts the packaged output atPositionalGuide/bin/release/PositionalGuide. Withif-no-files-found: errorthat step fails. I checkedmasterunmodified and it produces the same layout, so this predates the PR and isn't something I introduced - just flagging it so a red X on the checks doesn't send you looking in the wrong place. I left the workflow alone since it isn't mine to change here.Disclosure
Written with AI assistance (noted in the commit trailers as well). The game-data claims above were checked against the live action and status sheets rather than recalled, and the Dalamud API surface used here was verified against the shipped assemblies.