Party Spells Interface Overview
The Party Coordinator is a window for viewing and coordinating spells across party members. It compares known and prepared spells side by side, flags duplicates, and includes a synergy analysis view.

Requirements
Section titled “Requirements”The Party Coordinator relies on the system’s group actors:
- A group actor (system type
group) must exist and contain the party’s player characters. - That group should be set as the Primary Party in the system settings, or the viewing actor must belong to a group.
- Group members are included when they have a spellcasting class or spells granted by a feat or species.
If no primary party is configured, you see a warning. Players are prompted to ask you to set one up.
The group-membership fallback above applies to opening the Party Coordinator. The per-spell Party Mode indicators on the Player Spell Book require the Primary Party setting; a member of a group that is not the primary party can open the coordinator but sees no per-spell indicators until you set one.
Opening the Party Coordinator
Section titled “Opening the Party Coordinator”The coordinator can be opened in four ways:
- Group actor sheet (the system’s default): a gold-button variant of the Party Spells button is injected next to the long-rest button, via [[onGroupActorRender|scripts/utils/sheets.mjs]].
- Tidy5e Quadrone group sheet: a
party-coordinator-buttonis injected into the sheet’s header actions container via [[onTidy5eGroupSheetRender|scripts/integrations/tidy5e.mjs]]. - Player Spell Book sidebar: a users icon appears when the viewing actor belongs to a party. Left click opens the coordinator; right click toggles Party Mode on the viewing actor.
- Script: the
openPartyCoordinatorfunction on the API opens it for an actors array or a group actor.
You may open the coordinator for any party, while players may only open it for a party they belong to.
Party Mode (per-spell indicators)
Section titled “Party Mode (per-spell indicators)”When Party Mode is enabled on an actor, each spell row on the Player Spell Book is decorated with small avatar icons showing which other party members have the same spell prepared.
- Icons are built from each party member’s actor image, ringed in the owning player’s user color.
- The number of icons per row is capped by a client setting. See Installation and Settings.
- The viewing actor is excluded from their own row.
Toggling Party Mode fires a notification and reloads the active tab. The toggle lives on the party sidebar button via right-click.
Window layout
Section titled “Window layout”The Party Coordinator window is resizable, with three stacked sections:
- Header. Group name, member count, and action buttons: Refresh and Synergy Analysis.
- Member cards. One card per spellcaster in the party.
- Spell comparison. A per-level chip-list of every known spell in the party.
Member cards
Section titled “Member cards”Each card displays:
- Actor image and name.
- A class line that includes the subclass name when a subclass is present, listing every spellcasting class the actor has.
- Spells granted by a feat or species appear as their own entries alongside the class entries. In those entries, spells with an always, innate, or at-will casting method count as prepared.
- Two count badges: Known and Prepared, computed from the actor’s spell items via [[PartyMode._getActorSpellData|scripts/managers/party-mode.mjs]].
Interactions:
- Click a card to filter the spell list to that member. Clicking the same card again, or clicking elsewhere in the window, clears the filter.
- Hover a card to highlight that member’s prepared spells in the list.
- Right click a card to open a context menu with Open Actor Sheet. The menu only appears when the current user has at least Limited permission on that actor.
Members the current user lacks Observer permission for are rendered with a no-permission state and no spell counts.
Spell comparison
Section titled “Spell comparison”Spells are grouped by level, from cantrips to 9th level. Each row shows:
- The spell name.
- One chip-style tag per party member who has the spell known or prepared, styled as either
preparedorknown.
Level headers:
- Display the level name and a spell count.
- Can be collapsed and expanded. Collapsed state is persisted per user via the
partyCollapsedLevelsflag. - When a member filter is active, the count updates to
(visible/total)and empty levels are hidden.
The Refresh button drops cached analysis and rebuilds the matrix. The window also auto-refreshes on updateActor, createItem, updateItem, and deleteItem hooks scoped to party members and to the group actor itself, so adding or removing a member updates the view.
Data is collected locally: the coordinator iterates the group’s creatures, filters to spellcasters, and reads each actor’s prepared spells directly. There is no socket round-trip.
Synergy Analysis
Section titled “Synergy Analysis”The Synergy Analysis button opens a companion dialog ([[SynergyAnalysis|scripts/dialogs/synergy-analysis.mjs]]) with an aggregate view of the party’s prepared spells. It is analysis only and never modifies actor data.

Recommendations
Section titled “Recommendations”When the numbers cross internal thresholds, the dialog surfaces short text-only recommendations:
- Damage output leaning on a single damage type.
- Duplicate prepared spells across members.
- High concentration usage across prepared spells.
- Limited damage-type diversity.
- Limited saving-throw diversity.
- Low ritual coverage relative to total known spells.
- No prepared healing anywhere in the party.
- Party loadout heavily weighted toward low-level spells.
- Reliance on costly material components.
- Save-based spells clustered on one ability.
- Spells clustered at self or touch range.
Overview
Section titled “Overview”- Total Unique Spells: known spells counted across the party. A spell known by two members counts twice.
- Total Prepared Spells: prepared spells counted across the party.
- Concentration: count and percentage of prepared spells that require concentration. Tooltip lists each contributing member with a spell count.
- Ritual: count of prepared rituals. Tooltip lists each contributing member with a spell count.
Distributions
Section titled “Distributions”The left column presents Damage Types, Saving Throws, Spell Levels, and School in that order.
- Damage Types: aggregate damage-type usage, sorted by localized name, with member tooltips.
- Saving Throws: aggregate spread of the abilities that prepared save-based spells target, sorted by localized ability name, rendered as counts, with member tooltips.
- Spell Levels Distribution: count and percentage per level (only levels with prepared spells), with member tooltips.
- School Distribution: count and percentage per school, with member breakdown tooltips.
- Components: Verbal (V), Somatic (S), Material (M), and Material-costly (M*) counts, each with member tooltips.
- Duplicate Prepared Spells: spells prepared by two or more members, with a count badge.
All breakdown tooltips render via Foundry’s native data-tooltip-html, showing one line per contributing member. Long tooltips truncate with an and-more line.
Only spells on actors the current user can Observe are counted. GM and player views may differ as a result.
Flags and settings
Section titled “Flags and settings”| Name | Type | Purpose |
|---|---|---|
partyModeEnabled | actor flag | Per-actor toggle that drives per-spell party indicators on the Player Spell Book. |
partyCollapsedLevels | user flag | Persists which spell-level headers are collapsed in the Party Coordinator. |
partyModeTokenLimit | client setting | Maximum party-member icons shown per spell row in Party Mode. See Installation and Settings. |
Permissions summary
Section titled “Permissions summary”- Observer on a party actor is required to include their spells in the comparison matrix and in synergy analysis.
- Limited on a party actor is required for the Open Actor Sheet context menu entry.
- You always see every party member’s data.
Code references
Section titled “Code references”- [[party-coordinator.mjs|scripts/apps/party-coordinator.mjs]]: main Party Coordinator app.
- [[synergy-analysis.mjs|scripts/dialogs/synergy-analysis.mjs]]: Synergy Analysis dialog.
- [[party-mode.mjs|scripts/managers/party-mode.mjs]]:
getPrimaryGroupForActor,getPartyActors, and the analysis pipeline. - [[sheets.mjs|scripts/utils/sheets.mjs]]: group-sheet button injection and shared button helpers.
- [[tidy5e.mjs|scripts/integrations/tidy5e.mjs]]: Tidy5e Quadrone group sheet button injection.
- [[main.hbs|templates/apps/party/main.hbs]], [[synergy-analysis.hbs|templates/dialogs/synergy-analysis.hbs]].
- [[constants.mjs|scripts/constants.mjs]]:
PARTY_MODE_TOKEN_LIMIT,FLAGS.PARTY_MODE_ENABLED,FLAGS.PARTY_COLLAPSED_LEVELS.