ShadowPriest-1.0.0-20260915-102817.zip
What's new
- **Fixed: a spell you have not learned yet locked you out of placing its
panel.** The Shadowfiend page greyed out every control — *Move it* included —
until level 66, and the Shadowform page did the same until the talent was
trained, so the two features that are easiest to set up while there is nothing
else to do were the two you could not set up. Neither module ever needed the
spell to draw its frame: both force it on screen while it is unlocked, and it
was only the config pages that refused. Both pages are now live as soon as the
module is on, so the panel and the button can be positioned, sized, coloured
and key-bound in advance; a key saved before the spell exists starts working
the moment it is trained. What still greys the Shadowfiend page is the module
being switched off, or a client that does not carry spell 34433 at all, where
there is genuinely nothing to follow.
**Preview works without the spell too.** `/sp form test` and the page's
*Preview* button used to answer *there is nothing to preview*, which left no
way to see what the warning border looks like before choosing its colour. The
preview now draws the button and pulses the border whatever the form is. The
warning is still refused on its own without the spell — with nothing to cast,
"you are not in Shadowform" is true forever, and it would have become a
permanent red border for a form the priest cannot enter.
- **Fixed: the Shadowed Unit Frames check demanded the exact version and
refused every newer one.** Installing 6.0.1 of the Anniversary fork left the
addon reporting *Shadowed Unit Frames 6.0.0 is not available* with every
SUF-dependent feature switched off, because the gate compared the version
string for equality. The version is now a **floor**: 6.0.0 or newer passes,
compared component by component, so the fork's later releases work without
this addon having to ship a matching build. The project IDs still have to
match exactly — they are what identifies the fork, and a version string alone
never did.
- **Fixed: a passive talent is not in the spellbook, and four things were
asking the spellbook about one.** The rotation advisor decided you did not
have **Shadow Weaving** however many points you had spent on it, which made
"hold Mind Blast until five stacks" impossible to switch on — the tick was
there, the config page said *you do not have Shadow Weaving*, and Mind Blast
was advised the moment it came off cooldown. The same wrong question was
behind the shadow debuff panel's talent gate for Shadow Weaving and Misery,
which only came right once it had seen the debuff land once, and behind the
`/sp mana status` line that printed Spirit Tap as untrained. Talents are now
read from the **talent trees** through one shared reader, matched by the
talent's own localized name, which also means the pages can say *Shadow
Weaving 4/5* rather than only yes or no — and `/sp rotation status` and
`/sp weave status` print the tree rank and the spellbook answer next to each
other, so the two can never disagree silently again.
- **The mana flow bar**, `modules/ManaFlow.lua` +
`modules/ManaFlowConfig.lua`: a bar that answers the one question a filling
bar cannot — am I winning. It does not fill. It sits in the **middle** and
grows out of the centre: red to the **left** for mana leaving, green to the
**right** for mana arriving, and the two cancel. Cast for 100 and the red is
100 wide; a 20 tick lands and it is 80 wide. What it draws is the net of the
last few seconds and not a running total, so it walks back to the middle on
its own even when the mana never came back — a total from the start of the
fight is pinned at the far left inside a minute and stops telling you
anything. Because a net over a window is also a rate, the number on the right
is that same figure per second, which is the one that says whether the fight
is affordable. Half the bar is a share of your **maximum** mana (10% by
default), so the same width always means the same amount and the setting
survives twenty levels; past the end of the scale the fill stops and a bright
cap is drawn at that end, so a bar pinned at maximum never looks like one that
is merely full. An Intellect buff dropping, a gear swap or a resurrection is
**not** drawn as a spend. It is a separate bar from the mana tick bar with its
own position and colours, and either can be switched off without touching the
other. `/sp flow`, `/sp flow test` to place it while standing still, and
`/sp flow status` for the window, the gross both ways, the net, the rate and
the scale in mana.
- **The rotation advisor**, `modules/Rotation.lua` +
`modules/RotationConfig.lua`: one small row saying what to cast now and the
two after it, with a sweep on a DoT close enough to falling off to be worth
refreshing, your key binding in the corner, and — if you want it — a glow on
the real button on your spell bar, so the answer is where your eyes already
are. It **advises and never casts**: there is no button to click and no macro
behind it, which is deliberate and is also the rule on some servers. It does
not guess at the future either — the row is the highest thing in the priority
whose conditions are true at this instant, and the two behind it, because
three casts of travel time and latency into the future is where addons like
this stop being right. The priority is yours to drag and to switch entries off
in: whether Shadow Word: Death belongs above Mind Blast depends on your gear
and on whether the fight has adds, and this addon does not get to settle that
argument. Three things it would be lying without — Mind Blast is held until
Shadow Weaving is at five stacks, Vampiric Embrace is offered only where a
filler would have gone and only on an elite or once the fight has run long, so
it stays up on a boss without ever costing you a cast, and Shadow Word: Death
is greyed while the backlash guard says it would kill you. Something you
cannot pay for, cannot reach or would die to is greyed rather than dropped, so
the row never re-orders itself for a reason that is nowhere on screen. It says
nothing in the warning area and it is off after a fresh install.
`/sp rotation status` prints every condition and what the game answered, in
priority order.
- **The Shadow Word: Death backlash guard**, `modules/SWDeath.lua` +
`modules/SWDeathConfig.lua`: unless it lands the killing blow, Shadow Word:
Death hits you back for exactly what it hit the target for, and it is the only
spell in the book that can kill the priest who cast it. While it is off
cooldown, you are in combat, you have something hostile targeted and your
health is under what the backlash would cost, you get a message and a red wash
on whichever bar is drawing the spell. It warns and never blocks — breaking a
fear with it, or dying on purpose, is a real play. It does not pretend to
predict the hit either: that would need spell power, the target's resistance
and a crit roll nobody can see, so it works from a bound — a quarter of your
maximum health, which the biggest backlash you have actually taken this
session can only ever raise. Nothing is kept across logins, because gear
changes. The same measurement answers the other half: optionally, that the
target will die to the cast, and a killing blow costs nothing at all — judged
against the smallest backlash seen rather than against a percentage, because
ten percent of a boss is thousands of hit points. Only a measured number ever
silences the danger warning: a kill cue that is wrong costs a global, and a
silence that is wrong costs a death. `/sp swd status` names which of the four
conditions is stopping it firing, and `/sp swd log` prints the raw combat log
lines the measurement is built from.
- **The Mind Flay clip guard**, `modules/MindFlay.lua` +
`modules/MindFlayConfig.lua`: Mind Flay is the one spell in the book where
*stopping* it costs damage. The damage lands on the tick and nowhere else, so
a channel cut a tenth of a second before its third tick did two thirds of the
damage for nine tenths of the time. Every shadow priest clips — it is how a
Mind Blast gets out the moment it comes back — so the question is never "did I
clip" but "did I clip a tick I had already paid for", and that is what you are
now told: a message the instant a channel ends too close to a tick, and a
count at the end of the fight of what the clipping cost. A channel that ran
past its last tick never warns however early you stopped it, and neither does
one a stun or the target's death ended. The grace is yours to set and defaults
to 300ms. The cast bars can be switched off entirely and the guard keeps
working. `/sp flay`, and `/sp flay status` prints every number each judgement
was made from — which is the only way to look at a warning that did *not*
fire.
- **The Shadowfiend panel**, `modules/Shadowfiend.lua` +
`modules/ShadowfiendConfig.lua`: every shadow WeakAura set tracks the
Shadowfiend cooldown and stops there, and so does this addon already. What
none of them show is the fifteen seconds after you press it, which is where
three things go wrong that you only notice afterwards, when your mana bar has
not moved: it was summoned with nothing to attack, it died early to area
damage, or it simply got fewer swings than it should. So: one panel, on screen
only while the fiend is out, with a bar draining the seconds left, a bar under
it carrying the fiend's own health, and a line with the swings it has landed
and the mana it has returned. One chat line at the end says what the whole
summon paid, and two optional messages — one while it is out and landing
nothing, which is the failure you can still fix, and one after a summon that
went badly — never both at once. A summon that ended because *you* died, or
because of a loading screen, says nothing: none of those is something you did
wrong. The mana figure is gross, for the mana battery's reason. A client with
no readable combat log keeps the timer and the health and leaves the swings
and the mana off rather than drawing zeroes it did not measure. `/sp fiend`,
`/sp fiend status` for every number behind each judgement, `/sp fiend log` for
the raw swings and energizes.
- **The mana tick bar**, `modules/ManaTick.lua` + `modules/ManaTickConfig.lua`:
the five second rule and the two second mana tick as one bar — the rule drains
across it after every spend, the next tick fills as a strip along the bottom
edge, and once the five seconds are up the tick gets the whole bar. It writes
what your last cast cost, what one tick is worth and the seconds left on
Spirit Tap, which is the number a levelling shadow priest is really deciding
on. It does not claim regeneration stops for five seconds, because for a
priest it does not: Meditation lets some of it through and Spirit Tap lets
more, so the red fill means the full rate is not back yet rather than that
nothing is coming in, and the tick strip keeps running underneath it. The bar
turns green whenever something is letting mana through while you cast — a
talent, an Innervate, or a trinket the addon has never heard of, because that
is judged from your actual regeneration rather than from a list. The tick
itself is measured from your own mana, with potions, drinks and Shadowfiend
left out of that measurement, and it keeps its phase at full mana where a tick
lands and gains nothing. At full mana standing still there is no bar at all.
`/sp mana`, `/sp mana test` to place it without waiting for a fight, and
`/sp mana status` for every measurement raw, including the last gain it threw
away and why.
- **Spell hit against the cap**, `modules/HitCap.lua` +
`modules/HitCapConfig.lua`: a shadow spell that misses does nothing at all —
no damage, no DoT, no mana for the party, no Shadow Weaving stack — so hit is
the first stat, and the cap you need off gear is not the one on your character
sheet, because your own talents move it and nothing in the game adds the two
together. `/sp hit` shows what your gear is worth, what your talents are
worth, the total, the cap against a boss and against an even-level target, and
how far short you are in percent and in rating. Every figure is read from the
game and every reading is checked: where the client cannot answer you get a
dash and a line saying so, never a number that would be wrong — you gem
against it. Shadow Focus is counted twice on purpose, once from your talent
ranks and once from what the client reports, and you are told when the two
disagree instead of the addon quietly picking one. Misery is read off its own
tooltip rather than assumed, and never counted into the total, because it only
applies to a target already carrying your DoT. The cap itself is the one thing
that cannot be read out of the game, so the page says where it came from.
There is an optional line on screen for the hour you spend swapping gear,
which hides itself again once you are capped. Off by default, and it
recommends no gear: it says where you stand and stops. `/sp hit status` prints
every raw reading, the talent walk and the arithmetic in full.
- **The wand button grows a swing timer.** The pulsing border says the shots are
going out and cannot say *when the next one lands*, which is the number with a
decision on it: a cast started just before a shot throws that shot away. So
there is now a bar under the button, filling from one shot to the next, with
the shot speed on it. The speed starts from what the game reports and is then
corrected by the gap between the shots that actually happened, so haste and a
new wand need no setting from you and land immediately. A run that stops
without saying so — out of range, or a target that died — empties the bar
rather than leaving it ticking. Nothing to switch on beyond the bar itself,
and on a client that reports no wand speed and has no readable combat log
there is no bar rather than an empty one, with the page saying why.
`/sp wand status` prints both speeds, the gaps between the last shots and
which one was thrown away and why.
This mod has no additional files

