PallyPowerSmart-0.15.1.zip
What's new
# Changelog
## 0.15.1
### Fixed
- **Tanks no longer get greater Salvation in 5-mans**: tank detection read the
main-tank flag off the *raid* roster only, and a party has no raid roster —
so in a dungeon there was no automatic role signal at all and tank-ness fell
back entirely to spec detection. Before the first pull that spec is often
still unknown (nobody has been inspected yet and no spec-defining cast has
hit the combat log), the unknown spec falls into the class DPS priority, and
that list is Salvation-first — so the tank took greater Salv, even as the
only member of their class. Party main-tank assignment (`/mt`) and the
role picker (`UnitGroupRolesAssigned`) now count as tank signals alongside
the raid flag, and the three places that decide tank-ness (assigner roster,
blessing report, priority panel) share one implementation instead of three
copies that could drift. A main-tank assignment overrides the spec label as
it always has (an Arms warrior can be the one tanking); the role picker is
only queue intent, so it yields to a spec confirmed by inspect or pinned by
hand — someone who picked Tank for a faster queue pop and then plays DPS
keeps their Salvation.
### Added
- **"Role: Tank" / "Role: Not a tank" in the Specs tab** — clicking a member
already offered spec pinning, and the tooltip already displayed a role
override, but nothing could actually set one. This is the manual fallback
when nobody has set a main tank or a role, and it is independent of spec
(an Arms warrior can be the one tanking).
## 0.15.0
### Fixed
- **Priority panel can now be disabled while the PallyPower window is closed**:
the toggle (menu checkbox and `/ppsmart panel`) keyed off the frame's current
visibility, but the frame is force-hidden whenever the PP window closes — so
with PP closed every toggle attempt re-*enabled* the panel, and the menu
checkbox showed unchecked even though the panel was still on and reopened
with PP. The toggle now flips the saved setting directly (visibility follows
it), the checkbox reflects the saved setting, and toggling while PP is closed
prints a confirmation so it no longer looks like nothing happened.
## 0.14.3
### Changed
- Internal: consolidated the per-column wishlist derivation that was
duplicated across the matcher, reseat, and dead-greater passes into shared
helpers. No behavior change.
## 0.14.2
### Changed
- **Hunter pets get their own blessing priority — Might > Kings > Salvation**
(Salvation dead last): a class column whose only occupants are pets (hunter
pets sit in the warrior column) previously fell back to that class's
Salvation-first DPS order and greater-Salv'd the pets. Real players sharing
a column always decide the greater blessings on their own — pets never vote,
never receive 10-min overrides, and can never promote their preference over
actual players'.
## 0.14.1
### Fixed
- **A paladin's greater blessing can no longer end up assigned but never cast**:
exclusivity and buff ranks can force the per-member matcher to route every
member of a class onto a paladin's *other* blessings as 10-min casts, leaving
his seated greater received by nobody (e.g. a Prot paladin holding greater
Kings while casting 10-min Sanctuary on himself and 10-min Salvation on the
Ret — the Kings was never cast). Greater promotion needs a >50% same-blessing
majority and the reseat pass only shuffles the already-seated blessings, so
neither repair could catch it. Such a dead greater is now re-seated to the
blessing that paladin is already casting on the class, converting those
10-min casts into a free greater — fewer 10-min rebuffs, identical buffs
received.
## 0.14.0
### Fixed
- **Assignments no longer wiped by other paladins' clients**: PallyPower clients
periodically rebroadcast their own assignment row (`SELF` messages — sent on
REQ replies whenever anyone opens the PP window, on spell/roster events, and
after Lay on Hands / Divine Intervention casts), and every receiver applies
them unconditionally. A client that fired before processing a Smart-Assign
re-asserted its stale or just-cleared row, silently blanking that paladin's
assignments on everyone else's copy ("assigns correctly, then wipes out the
entire row for one paladin"). Smart-Assign now watches incoming `SELF`/`NASSIGN`
for ~4.5s after each run and re-sends the computed state when a managed
paladin's rebroadcast contradicts it (max 3 corrections per paladin per run,
with a chat notice), so stale rebroadcasts self-heal instead of sticking.
- **History log no longer spams unchanged 10-min blessings**: clients re-dump
their entire normal-blessing list with every `SELF` burst (and PallyPower's
Main Tank/Assist auto-assign re-sends on a timer), and the log printed every
quad each time — endless repeats of the same "-> target (paladin)" lines. The
log now diffs against the last seen value and only records actual changes;
the baseline seeds from saved data at login and resets on `CLEAR`.
### Added
- **Assign without raid assist (free-assign pool)**: Smart-Assign no longer
drops to self-only just because you lack lead/assist. Paladins with
PallyPower's **Free Assignment** enabled accept assignments from anyone, so a
non-assist run now manages yourself plus every free-assign paladin: their
greater rows and 10-min overrides are computed and broadcast normally, while
paladins without it stay locked (the existing locked-improved-caster warning
points them out). The button tooltip and the run summary (`(free assign)`)
show the active scope. Paladins whose clients have Free Assignment off cannot
be managed without assist — that gate lives in *their* PallyPower, not ours.
### Changed
- **Your own Free Assignment option no longer grants raid-wide assign mode**:
it previously unlocked the full CLEAR-everyone path, but receivers without
free assignment reject a non-leader's assignments anyway, leaving the raid
inconsistent. Non-leaders now always use the free-assign pool scope above;
as a non-leader, locked paladins' rows are also no longer rebroadcast.
- **Pool runs still broadcast `CLEAR SKIP`**: a non-leader's CLEAR makes each
*free-assign* client wipe its own row and its own 10-min overrides (everyone
else ignores it) — the only way to kill stale overrides living solely on that
paladin's client, which the per-entry clear broadcasts can't see. The brief
cleared-row window this opens is covered by the reassert guard.
- **Self-only runs start from a clean slate**: your own row is zeroed before
Pass 1, so stale cells in columns with no group members no longer survive.
## 0.13.0
### Changed
- **Spec preferences updated**: Ret paladins now prefer Kings as their signature
greater blessing (was Might); Prot paladins now prefer Salvation (was Kings).
Prot paladins are exempt from the scarcity penalty on Salvation so the
preference actually fires — the operational pattern is greater Salv on the
raid with a 10-min Sanctuary on self.
- **Reseat alignment tiebreak**: when two greater permutations produce the same
override count, reseat now prefers the one where paladins hold greaters they're
rated highest for. This ensures an Improved Might/Wisdom paladin's greater
matches their specialty instead of being assigned arbitrarily — e.g. a Ret with
Improved Might now holds greater Might (free for everyone who wants it) instead
of greater Wisdom with 10-min Might overrides on half the class.
## 0.12.3
### Fixed
- Updated internal bundled LibClassicInspector to latest version (20) straight
from TacoTip.
## 0.12.2
### Fixed
- Fixed tooltip error on the Spec panel's Rescan button caused by a recent
WoW client update tightening type validation on `GameTooltip:SetText`
(boolean `true` for the wrap argument is no longer accepted; now passes `1`).
## 0.12.1
### Changed
- Bumped TBC interface version to 20506 (patch 2.5.6).
### Fixed
- Smart-Assign no longer clears aura assignments when it runs. Previously,
both the local `ClearAssignments` call and the broadcast `CLEAR` message
would zero out `PallyPower_AuraAssignments`, resetting every paladin's
aura each time you clicked Auto-Assign. Now uses PallyPower's `skipAuras`
parameter (`CLEAR SKIP` on the wire) so auras are left untouched.
## 0.12.0
### Changed
- **Greater reseat pass**: after the promotion loop, Smart-Assign now re-permutes
*who holds which* of a class column's greater blessings whenever that reduces
the number of 10-minute casts. The buffs everyone receives (and their ranks)
are provably unchanged — the pass only converts forced 10-min overrides back
into free greaters. This fixes columns where Pass 1 broke an equal-rating tie
the "wrong" way for a minority of the class (under the >50% the promotion pass
needs): e.g. 2 enhancement + 3 resto shamans with 3 paladins used to cost
three 10-min casts per enh shaman; now the Improved-Might paladin takes
greater Wisdom and only his two 10-min Mights remain (6 → 2 casts, identical
buffs).
### Added
- **On-grid 10-min overrides**: each paladin's 10-minute (normal) blessing
overrides now appear as small icon+name badges inside their row of the
assignment grid, in the target's class column — so you can see *every*
paladin's per-target overrides at a glance, not just your own (PallyPower's
built-in indicator only shows the local player's, keyed by recipient). A row
grows downward to fit when a paladin has more overrides than the cell holds.
Toggle with the **"Show 10min buffs on grid"** checkbox on the Blessings tab
(on by default).
- **Debug tab**: the `[SA-DBG]` Smart-Assign trace now lands in a dedicated
**Debug** tab in the info panel as selectable, copyable text (click, Ctrl+A,
Ctrl+C — WoW has no addon clipboard API), with a "Capture debug trace"
checkbox.
### Changed
- **Min-max buff ranks (Pass 2 rework)**: the per-member matcher now maximizes
the *ranks* of the blessings people receive instead of minimizing 10-minute
casts. The strongest caster of each wanted blessing supplies it — Improved
Might/Wisdom always reach everyone who wants that blessing — even when that
takes extra 10-min overrides, with the displaced greaters cascading onto the
other paladins (3-way rotations like "A→Wis, B→Kings, C→Salv on the same
target" are normal now). Strict top-N coverage is unchanged; among equal-rank
options fewer overrides still win. Expect a higher "Overrides: N" in the run
summary — each extra cast is a strictly stronger buff.
- **Clean-slate 10-min overrides**: clicking Smart-Assign now clears existing
10-minute overrides for the paladins it manages (your own in self-only mode,
the whole controllable pool with assign rights) *before* rebuilding, instead
of layering on top of stale manual overrides. Removed overrides are broadcast
as clears so other paladins' views update too.
- **Info flyout height**: the info panel now spans the main PallyPower frame
**plus** the priority (bottom-expansion) panel when that panel is open.
- **Auto-refresh**: the info flyout's active tab (Blessings report / Debug
trace) refreshes automatically ~1s after a Smart-Assign.
### Fixed
- **Own spec known at login**: the local player's spec is now read from their
own talents at login/roster settle and at the start of every Smart-Assign,
not only when a talent point is spent. Previously a fresh login/reload left
even *yourself* "unknown" until some async event landed, which could skew the
first Smart-Assign (an unknown paladin is treated as the Holy default
profile) — the classic "first click was odd, second click was perfect".
- **Spec guardrail**: the registry now rejects spec labels that aren't valid
for the class, and a one-time cleanup drops existing invalid labels from the
saved DB. Hunters/Rogues/Mages/Warlocks are only ever "DPS" — a bad broadcast
can no longer permanently mark a hunter as "Protection".
- **Bear-tank spec sharing**: the broadcast receiver's parse pattern silently
dropped every `FERAL_TANK` spec share (underscore not matched by `%u+`);
bear-tank detections now propagate between SmartAssign users.
## 0.9.1
### Added
- **Locked improved-caster warning**: if a paladin who out-ranks the whole controllable
pool at Improved Might/Wisdom isn't controllable (Free Assignment off), Smart-Assign now
prints a pre-assign warning — its stronger buff would otherwise be silently supplied by a
weaker paladin. Only fires when the locked paladin is strictly better than every
controllable caster of that blessing.
### Changed
- **Blessing report readability**: greater and 10-minute (normal) blessings are now
told apart by their icon — the report pulls greaters from PallyPower's greater
icon set and 10-min overrides from the normal icon set — replacing the inline
`[10m]` text tag. Each paladin's greaters are now listed one blessing per line
with the class icons that blessing covers, instead of a single run-on segment.
### Fixed
- **Version string drift**: the in-game load message reported `v0.8.0` while the
addon was actually 0.9.0 (the `.toc` was bumped but `NS.VERSION` was not). The
internal version now tracks the packaged version again.
## 0.9.0
### Added
- **PvP mode**: shift-click the Smart-Assign button (or `/ppsmart pvp`, or the
right-click menu "PvP assign") runs the normal Smart-Assign but demotes
Salvation to the bottom of every priority list. With the strict top-N cutoff
this effectively skips Salvation entirely (no threat to shed against players, only used as dispel bait),
so melee get Might/Kings instead. The run summary appends `(PvP: Salv last)`.
Only the assignment pass sees the demoted order; the panels and reports keep
the normal priorities.
### Changed
- **Categorically-useless blessings are now disabled per class**: Wisdom is
never assigned to Warriors or Rogues (no mana), and Might is never assigned to
Mages, Warlocks, or Priests (no benefit from attack power). Enforced like the
existing tank-Salvation strip, so these blessings never enter a column's vote
nor a per-member override. The priority panel shows these rows greyed out and
locked.
## 0.8.0
### Fixed
- **Spec-pref feasibility guard**: the spec-preferred assignment step (RET->Might,
HOLY->Wisdom, PROT->Kings) now checks whether consuming a paladin would leave a
higher-priority blessing with no castable paladin remaining. Previously, two
spec-pref claims could starve the column's #1 priority (e.g. Kings on the Druid
column) when only those two paladins could cast it.
- **Greedy fill tiebreaker**: when two paladins tie for a blessing's rating, the
fill now prefers the paladin whose best alternative rating is lower -- preserving
the stronger specialist for a later slot. Previously ties were broken
alphabetically, which could waste a paladin with Improved Might on a Kings slot
that any paladin casts equally well.
### Removed
- **Override budget cap**: the `exceptionBudget` setting has been removed. All
computed overrides are now applied unconditionally. Tanks are still processed
first.
## 0.7.0
### Fixed
- **Locked paladin awareness (Pass 1)**: when a paladin has "free assignment"
turned off, Smart-Assign no longer duplicates their greaters. The exclusive-
first reservation now skips blessings already covered by locked paladins, so
the controllable paladin fills gaps (Might, Kings, Wisdom) instead.
- **Locked paladin awareness (Pass 2)**: the per-member override matcher now
treats locked paladins as fixed to their existing greaters. It pre-claims
their coverage and matches only controllable paladins against remaining
wishes, so overrides are never assigned to paladins who can't cast them.
- **Dual-spec inspect on TBC Anniversary**: LibClassicInspector gated all
dual-spec logic behind a Wrath client check, so inspected players on their
secondary spec were misread as their primary. Patched LCI (version 18 -> 19)
to detect dual-spec availability via `GetActiveTalentGroup` instead of
client version. Also hardened `tabPoints` to auto-resolve the active talent
group as defense-in-depth.
## 0.6.0
### Added
- **Druid Tank priority group**: feral druids with a Main Tank or Main Assist
raid flag now use dedicated tank priorities (Kings > Might > Light > Sanc)
instead of the generic Feral list. Mirrors how Warrior and DK tanks already
have their own group.
- **Greater promotion**: after computing per-member overrides, the algorithm
now checks whether any paladin is overriding >50% of a class to the same
blessing. If so, that blessing is promoted to the greater and overrides are
recomputed. This dramatically reduces the number of 10-min normal overrides
and makes the assignment output look sane to raid leaders.
- **Exception budget**: the `exceptionBudget` setting (default 10 per paladin)
is now enforced. Tank overrides are processed first so they always win the
budget. Excess overrides are skipped and flagged in the summary.
- Summary now shows promoted greaters and budget-capped overrides.
### Changed
- All members (including tanks) now vote in the Borda column ranking. Tank
wishlists already strip Salvation, so their vote accurately reflects their
needs. Previously tanks were excluded, which could cause the column greaters
to ignore the majority when tanks outnumber DPS of that class.
### Fixed
- Tank role now takes precedence over spec when selecting a priority group.
Previously a feral druid flagged as MT still matched the generic Feral group
because the spec match ran first; the `tankOnly` fallback never fired. This
also benefits edge cases like a Fury warrior assigned MT.
## 0.5.2
### Fixed
- InfoPanel.lua and SpecPanel.lua were missing from the release zip, causing
load errors for users installing from the packaged distribution.
### Changed
- Author updated to Silkie-Nightslayer.
- Added load message crediting Surveillant & Silkie.
## 0.5.1
### Fixed
- Libs (LibClassicInspector, LibDetours) were missing from the release zip.
Thanks to Popsdabear for diagnosing it.
- Preset load crash: PallyPower's LoadPreset replaces PallyPower_Assignments
wholesale, but AllPallys still contained stale paladin names seeded from the
previous SavedVars, causing a nil BuffInfo error at PP line 3909. The shim now
prunes stale AllPallys entries after a preset load.
## 0.5.0
### Added
- **Tabbed Info Panel**: History, Blessing Report, and Spec Overview are now
unified into a single tabbed panel anchored to the right of the PallyPower
frame. The panel auto-matches the PP frame's height and is visible by default.
Toggle via the "Info" button or right-click menu.
- **Spec Overview tab**: see every group member's detected spec at a glance,
color-coded by confidence (green = inspected/pinned, amber = detected,
orange = unknown). Click any multi-spec member to pin or clear their spec.
Replaces the old right-click submenu for spec overrides.
- **Pre-assign spec warning**: Smart-Assign now prints a warning before running
if any multi-spec members have undetected specs, with a pointer to
`/ppsmart specs`.
- `/ppsmart specs` command to open the Specs tab directly.
### Fixed
- Blessing Report no longer shows paladins from previous groups. AllPallys
entries are now filtered to current group membership.
- Aura auto-assignment removed from Smart-Assign -- players manage their own
auras.
### Changed
- The standalone History, Blessing Report, and Spec Overview windows are
replaced by tabs in the unified Info Panel. Slash commands (`/ppsmart log`,
`/ppsmart blessings`, `/ppsmart specs`) now open the panel to the
corresponding tab.
- "Info" button replaces the old "History" button on the PP frame bottom bar.
## 0.4.0
### Changed
- Inspect engine rewritten to use LibClassicInspector (bundled). Eliminates our
custom inspect queue in favour of LCI's shared cache, queue, and error
suppression. If TacoTip or another addon also bundles LCI, LibStub shares a
single instance — no duplicate inspects.
- "Out of range" suppression is now handled by LCI's targeted hooks on
UIErrorsFrame:AddMessage and PlayVocalErrorSoundID (replaces the CVar toggle).
### Added
- Periodic re-inspect: group members are re-queued for inspection every 10
minutes so mid-raid respecs by players without SmartAssign/LCI are detected.
- Local player respec now updates the local spec registry immediately (previously
only broadcast to others; own entry stayed stale).
### Fixed
- CalcSkillRanks crash on stale paladin names from PallyPower_Assignments
SavedVars: wrapped in pcall, malformed entries removed from AllPallys.
## 0.3.0
### Fixed
- History button no longer overlaps the "Free assignment" checkbox.
- Crash on stale paladin entries left over from previous sessions.
- Compatibility with PallyPower beta/latest (AllPallys made file-local).
### Added
- Inspect engine suppresses "Out of range" error text.
- Inspect engine backs off failed targets for 30 s instead of retrying immediately.
- PallyPower's Refresh button now also re-inspects and re-broadcasts specs.
- Dual-spec switches are detected automatically.
## 0.2.0
- Initial working release.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects