> For the complete documentation index, see [llms.txt](https://stellarskills.gitbook.io/stellarskills-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stellarskills.gitbook.io/stellarskills-docs/configuration/effect-choices.md).

# effect choices

A node can contain ordinary always-on effects and several alternative bundles. The player selects the exact number the administrator configures before the purchase commits.

## Choice parameters

Put these parameters under each participating effect's `filters`:

| Field                    | Configuration                                                                                       |
| ------------------------ | --------------------------------------------------------------------------------------------------- |
| `choice_id`              | Stable option ID. Empty = ordinary always-on effect. Same ID groups several effects into one option |
| `choice_count`           | Exact number of options to select, default 1; identical across options in the node                  |
| `choice_title`           | Player-facing option name; supports the server's styled text                                        |
| `choice_icon`            | Item/potion/effect-icon alias; empty uses the node icon fallback                                    |
| `choice_conflicts`       | Comma-separated option IDs that cannot coexist in this tree; symmetric checking                     |
| `choice_exclusive_group` | At most one active option in this group across the tree                                             |

Repeat title/icon/conflict/group metadata consistently for every effect in a bundle. An option with three effects still counts as **one** selection. Counts apply to options, not effect rows.

## Two picks, but never Fire plus Water

The following effects fragment supplies three options. Fire and Water conflict; Fleet Footwork works with either. Append it to a real node whose `max-rank` and cost you configure separately.

```yaml
effects:
  - key: pixelmon.move_damage.fire
    operation: multiply_final
    values: [1.10]
    filters:
      choice_id: fire_power
      choice_count: '2'
      choice_title: Flame Discipline
      choice_icon: minecraft:blaze_powder
      choice_conflicts: water_power
  - key: pixelmon.move_damage.water
    operation: multiply_final
    values: [1.10]
    filters:
      choice_id: water_power
      choice_count: '2'
      choice_title: Tide Discipline
      choice_icon: minecraft:prismarine_crystals
      choice_conflicts: fire_power
  - key: minecraft.movement_speed
    operation: multiply_final
    values: [1.05]
    filters:
      choice_id: fleet_footwork
      choice_count: '2'
      choice_title: Fleet Footwork
      choice_icon: minecraft:potion_swiftness_icon
```

For one elemental choice across several nodes, use the same `choice_exclusive_group: elemental_damage` on the relevant Fire/Water options. The group applies within a tree, not globally across every class/tree. Give options unique IDs within that tree to avoid ambiguous cross-node conflict references.

## Validation and purchase

The publisher checks quantity, identifiers, metadata consistency, references, and whether a conflict-free selection exists. A two-pick node with only mutually exclusive Fire and Water is impossible; add a compatible third option or reduce the count.

The popup previews selected benefits. Confirm sends IDs, not trusted values; the server rechecks access, state version, cost, rank, quantity, conflicts, and current saved selections before committing. Unchosen effects never enter the calculated buff set.

Chronicle uses its constellation ceremony; Parallax uses a rift-panel ceremony; ordinary themes inherit their palette/background. Motion and sound preferences apply. The benefit-detail `?` view scrolls long option descriptions.

## Upgrades, refunds, and existing players

* Later ranks keep the same option IDs. Values change with the node's current rank.
* A complete node refund or tree reset clears the saved selection.
* If admins add choices to an already-owned node with no stored choice, the player can choose without purchasing another rank or paying again, including at maximum rank.
* Keep IDs stable. Deleting/renaming a chosen option is a migration requiring explicit recovery, not a cosmetic edit.
* Build exports/save-loadouts retain choices; applying them revalidates the options and conflicts.
* Choice bundles are for skill nodes, not Journey entry rewards. Validation rejects them on unsupported feature entries.

Without the engine, use `/skills choose <tree> <node> fire_power,fleet_footwork`. No spaces inside the comma-separated options argument. The same authoritative checks apply.

{% hint style="warning" %}
Safety bounds are 64 effect rows/options and 32 simultaneous picks per node. A bundle with many rows consumes the effect-row budget even if it is one option.
{% endhint %}
