> 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/celestial_mastery.md).

# celestial\_mastery

[Tree authoring guide](file:///configuration/trees-and-nodes.md) · [All packaged trees](/stellarskills-docs/readme.md)

## trees/celestial\_mastery.yml

```yaml
id: celestial_mastery
title: Celestial Mastery
description: A complete example showing encounter, capture, quality, training, battle, breeding, loot, utility, keystone, choice, trigger, gateway, penalty, and soft-dependency nodes.
version: 1
state: active
ownership: account
theme: astral_roots
currency: skill_points
graph: celestial_mastery
metadata:
  category: example
  pvp-direct-effects: disabled
  editor-publish: staged
```

## graphs/celestial\_mastery.yml

```yaml
id: celestial_mastery
canvas: { width: 3600, height: 2400 }
nodes:
  - id: awakening
    type: gateway
    title: Awakening
    description: The central root. Every branch demonstrates a different progression family.
    position: { x: 1800, y: 1200 }
    max-rank: 1
    cost: { currency: skill_points, values: [0] }
    root: true
    icon: stellarskills:gateway
    colors: { background: "#132A4F", material: "#FFD166" }

  - id: starlit_trail
    type: minor
    title: Starlit Trail
    description: A small increase to the effective wild encounter level.
    position: { x: 1800, y: 960 }
    max-rank: 3
    cost: { currency: skill_points, values: [1, 2, 3] }
    requires: [awakening]
    effects:
      - { key: pixelmon.spawn_level, operation: add_flat, values: [1, 2, 3], stacking-group: encounter_level, cap: 100 }
    icon: minecraft:glowstone_dust

  - id: radiant_hunter
    type: notable
    title: Radiant Hunter
    description: Multiplies the final personal shiny probability for nearby natural spawns.
    position: { x: 1800, y: 700 }
    max-rank: 3
    cost: { currency: skill_points, values: [3, 4, 5] }
    requires: [starlit_trail]
    effects:
      - key: pixelmon.shiny_chance
        operation: multiply_final
        values: [1.15, 1.30, 1.50]
        stacking-group: shiny_hunting
        cap: 0.02
        filters: { legendary: "false" }
    icon: minecraft:amethyst_shard

  - id: legendary_cartographer
    type: keystone
    title: Legendary Cartographer
    description: A build-defining encounter-weight transformation; conflicts with Quiet Biomes.
    position: { x: 1800, y: 430 }
    max-rank: 1
    cost: { currency: skill_points, values: [8] }
    requires: [radiant_hunter]
    conflicts: [quiet_biomes]
    effects:
      - { key: pixelmon.legendary_weight, operation: weight_multiply, values: [1.20], stacking-group: legendary_focus, cap: 2.0 }
    icon: minecraft:recovery_compass

  - id: quiet_biomes
    type: penalty
    title: Quiet Biomes
    description: Trades encounter frequency for stronger quality bonuses.
    position: { x: 2150, y: 540 }
    max-rank: 1
    cost: { currency: skill_points, values: [4] }
    requires: [radiant_hunter]
    conflicts: [legendary_cartographer]
    effects:
      - { key: pixelmon.encounter_rate, operation: multiply_final, values: [0.80], stacking-group: encounter_frequency }
      - { key: pixelmon.iv_min_total, operation: set_min, values: [105], stacking-group: iv_floor, cap: 186 }
    icon: minecraft:sculk_catalyst

  - id: aura_attunement
    type: notable
    title: Aura Attunement
    description: Soft-dependency example. It disables only this effect when StellarAura is absent.
    position: { x: 1450, y: 540 }
    max-rank: 3
    cost: { currency: skill_points, values: [3, 4, 5] }
    requires: [radiant_hunter]
    effects:
      - key: stellaraura.assignment_chance
        operation: add_percent_points
        values: [0.25, 0.50, 0.75]
        stacking-group: aura_assignment
        cap: 0.10
        when-missing: disable_effect
    icon: minecraft:echo_shard

  - id: steady_hand
    type: minor
    title: Steady Hand
    description: Multiplies Pixelmon's server-calculated ball bonus at capture start.
    position: { x: 2070, y: 1040 }
    max-rank: 3
    cost: { currency: skill_points, values: [1, 2, 3] }
    requires: [awakening]
    effects:
      - { key: pixelmon.capture_ball_bonus, operation: multiply_final, values: [1.04, 1.08, 1.12], stacking-group: capture_ball, cap: 8.0 }
    icon: pixelmon:poke_ball

  - id: critical_artistry
    type: notable
    title: Critical Artistry
    description: Adds explicit percentage points to the critical-capture roll.
    position: { x: 2320, y: 900 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [steady_hand]
    effects:
      - { key: pixelmon.critical_capture_chance, operation: add_percent_points, values: [1.0, 2.0, 3.0], stacking-group: critical_capture, cap: 0.20 }
    icon: minecraft:target

  - id: capture_scholar
    type: trigger
    title: Capture Scholar
    description: Increases the skill-currency reward emitted after a successful capture.
    position: { x: 2580, y: 770 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [critical_artistry]
    effects:
      - { key: pixelmon.capture_skill_currency, operation: add_flat, values: [1, 2, 3], stacking-group: capture_currency, cap: 10 }
    icon: minecraft:book

  - id: compassionate_capture
    type: notable
    title: Compassionate Capture
    description: Adds friendship and post-capture healing.
    position: { x: 2350, y: 1190 }
    max-rank: 2
    cost: { currency: skill_points, values: [2, 4] }
    requires: [steady_hand]
    effects:
      - { key: pixelmon.capture_friendship, operation: add_flat, values: [4, 8], stacking-group: capture_friendship, cap: 32 }
      - { key: pixelmon.capture_heal, operation: add_flat, values: [0.10, 0.25], stacking-group: capture_heal, cap: 1.0 }
    icon: minecraft:glistering_melon_slice

  - id: genetic_foundation
    type: ranked
    title: Genetic Foundation
    description: Establishes a minimum total IV floor with exact clamping.
    position: { x: 2010, y: 1450 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 4, 6] }
    requires: [awakening]
    effects:
      - { key: pixelmon.iv_min_total, operation: set_min, values: [85, 100, 115], stacking-group: iv_floor, cap: 186 }
    icon: minecraft:spawner

  - id: hidden_potential
    type: notable
    title: Hidden Potential
    description: Adds percentage points to the hidden-ability probability.
    position: { x: 2230, y: 1630 }
    max-rank: 3
    cost: { currency: skill_points, values: [3, 4, 5] }
    requires: [genetic_foundation]
    effects:
      - { key: pixelmon.hidden_ability_chance, operation: add_percent_points, values: [1, 2, 3], stacking-group: hidden_ability, cap: 0.25 }
    icon: minecraft:ender_eye

  - id: flawless_stat
    type: mastery
    title: Flawless Stat
    description: Mastery-style minimum per-stat IV selection example.
    position: { x: 1970, y: 1780 }
    max-rank: 1
    cost: { currency: skill_points, values: [7] }
    requires: [genetic_foundation]
    effects:
      - { key: pixelmon.iv_min_stat, operation: set_min, values: [10], stacking-group: iv_stat_floor, cap: 31 }
    icon: minecraft:diamond

  - id: seasoned_partner
    type: minor
    title: Seasoned Partner
    description: Multiplies earned Pokemon experience.
    position: { x: 1550, y: 1430 }
    max-rank: 3
    cost: { currency: skill_points, values: [1, 2, 3] }
    requires: [awakening]
    effects:
      - { key: pixelmon.battle_xp, operation: multiply_final, values: [1.05, 1.10, 1.15], stacking-group: battle_xp, cap: 5.0 }
      - { key: pixelmon.pokemon_xp, operation: multiply_final, values: [1.05, 1.10, 1.15], stacking-group: pokemon_xp, cap: 5.0 }
    icon: minecraft:experience_bottle

  - id: ev_discipline
    type: notable
    title: EV Discipline
    description: Multiplies Pixelmon's EV yield object before it is committed.
    position: { x: 1350, y: 1640 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [seasoned_partner]
    effects:
      - { key: pixelmon.ev_gain, operation: multiply_final, values: [1.10, 1.20, 1.35], stacking-group: ev_training, cap: 4.0 }
    icon: minecraft:iron_sword

  - id: evolution_celebration
    type: reward
    title: Evolution Celebration
    description: Typed trigger reward when a Pokemon evolves.
    position: { x: 1610, y: 1810 }
    max-rank: 2
    cost: { currency: skill_points, values: [3, 5] }
    requires: [seasoned_partner]
    effects:
      - { key: pixelmon.evolution_reward, operation: trigger_action, values: [2, 3], stacking-group: evolution_reward, cap: 10 }
    icon: minecraft:firework_star

  - id: battle_instinct
    type: minor
    title: Battle Instinct
    description: Wild battle victories become a progression source.
    position: { x: 1270, y: 1230 }
    max-rank: 2
    cost: { currency: skill_points, values: [1, 2] }
    requires: [awakening]
    effects:
      - { key: pixelmon.battle_skill_currency, operation: add_flat, values: [1, 2], stacking-group: battle_currency, cap: 10 }
    icon: minecraft:golden_sword

  - id: raid_tactician
    type: notable
    title: Raid Tactician
    description: Demonstrates raid contribution and extra reward-roll effects.
    position: { x: 1030, y: 1080 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 5] }
    requires: [battle_instinct]
    effects:
      - { key: pixelmon.raid_damage, operation: multiply_final, values: [1.03, 1.06, 1.10], stacking-group: raid_damage }
      - { key: pixelmon.raid_reward_rolls, operation: add_flat, values: [0, 1, 1], stacking-group: raid_rolls, cap: 3 }
    icon: minecraft:shield

  - id: ranked_integrity
    type: keystone
    title: Ranked Integrity
    description: Direct combat bonuses remain disabled in ranked PvP by default server policy.
    position: { x: 790, y: 930 }
    max-rank: 1
    cost: { currency: skill_points, values: [6] }
    requires: [raid_tactician]
    effects:
      - { key: pixelmon.battle_damage, operation: multiply_final, values: [1.08], stacking-group: pve_damage, filters: { ranked: "false" } }
    icon: minecraft:trial_key

  - id: nursery_path
    type: minor
    title: Nursery Path
    description: Opens the breeding and egg branch.
    position: { x: 1510, y: 1020 }
    max-rank: 2
    cost: { currency: skill_points, values: [1, 2] }
    requires: [awakening]
    effects:
      - { key: pixelmon.hatch_speed, operation: multiply_final, values: [1.05, 1.12], stacking-group: hatch_speed, cap: 3.0 }
    icon: minecraft:turtle_egg

  - id: hatchling_blessing
    type: trigger
    title: Hatchling Blessing
    description: Hatching emits an idempotent progression reward.
    position: { x: 1280, y: 810 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [nursery_path]
    effects:
      - { key: pixelmon.hatch_reward, operation: trigger_action, values: [1, 2, 3], stacking-group: hatch_reward, cap: 10 }
    icon: minecraft:sniffer_egg

  - id: lineage_mutation
    type: notable
    title: Lineage Mutation
    description: Example breeding mutation chance with an explicit cap.
    position: { x: 1060, y: 650 }
    max-rank: 3
    cost: { currency: skill_points, values: [3, 4, 5] }
    requires: [hatchling_blessing]
    effects:
      - { key: pixelmon.mutation_chance, operation: add_percent_points, values: [0.5, 1.0, 1.5], stacking-group: mutation, cap: 0.10 }
    icon: minecraft:chorus_flower

  - id: gatherers_bough
    type: minor
    title: Gatherer's Bough
    description: Boosts berry and apricorn yields at their native pick events.
    position: { x: 1570, y: 760 }
    max-rank: 3
    cost: { currency: skill_points, values: [1, 2, 3] }
    requires: [awakening]
    effects:
      - { key: pixelmon.apricorn_yield, operation: multiply_final, values: [1.15, 1.30, 1.50], stacking-group: apricorn_yield, cap: 4.0 }
      - { key: pixelmon.berry_yield, operation: multiply_final, values: [1.15, 1.30, 1.50], stacking-group: berry_yield, cap: 4.0 }
    icon: minecraft:sweet_berries

  - id: treasure_sense
    type: notable
    title: Treasure Sense
    description: Multiplies generated Pokemon drop quantity within a bounded safe range.
    position: { x: 1330, y: 570 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 5] }
    requires: [gatherers_bough]
    effects:
      - { key: pixelmon.drop_quantity, operation: multiply_final, values: [1.10, 1.25, 1.50], stacking-group: drop_quantity, cap: 4.0 }
    icon: minecraft:chest

  - id: surveyors_lens
    type: gateway
    title: Surveyor's Lens
    description: Scanner and discovery capability example for integrations.
    position: { x: 2030, y: 780 }
    max-rank: 2
    cost: { currency: skill_points, values: [2, 4] }
    requires: [starlit_trail]
    effects:
      - { key: pixelmon.scanner_range, operation: add_flat, values: [24, 48], stacking-group: scanner_range, cap: 128 }
      - { key: pixelmon.rare_ping, operation: unlock, values: [1, 1], stacking-group: rare_ping }
    icon: minecraft:spyglass

  - id: pathfinders_stride
    type: minor
    title: Pathfinder's Stride
    description: Utility hook example for out-of-battle travel systems.
    position: { x: 2320, y: 1370 }
    max-rank: 3
    cost: { currency: skill_points, values: [1, 2, 3] }
    requires: [awakening]
    effects:
      - { key: minecraft.movement_speed, operation: multiply_final, values: [1.02, 1.04, 1.06], stacking-group: travel_speed, cap: 1.20 }
    icon: minecraft:rabbit_foot

  - id: waystone_memory
    type: notable
    title: Waystone Memory
    description: Teleport cooldown integration surface.
    position: { x: 2590, y: 1500 }
    max-rank: 2
    cost: { currency: skill_points, values: [3, 5] }
    requires: [pathfinders_stride]
    effects:
      - { key: minecraft.teleport_cooldown, operation: multiply_final, values: [0.90, 0.75], stacking-group: teleport_cooldown }
    icon: minecraft:lodestone

  - id: mastery_fork_capture
    type: choice
    title: Mastery Fork - Capture
    description: Purchasing this route conflicts with the breeding specialization.
    position: { x: 2750, y: 1050 }
    max-rank: 1
    cost: { currency: skill_points, values: [6] }
    requires: [capture_scholar]
    conflicts: [mastery_fork_breeding]
    effects:
      - { key: pixelmon.capture_ball_bonus, operation: multiply_final, values: [1.15], stacking-group: capture_mastery, cap: 8.0 }
    icon: pixelmon:ultra_ball

  - id: mastery_fork_breeding
    type: choice
    title: Mastery Fork - Breeding
    description: Purchasing this route conflicts with the capture specialization.
    position: { x: 850, y: 570 }
    max-rank: 1
    cost: { currency: skill_points, values: [6] }
    requires: [lineage_mutation]
    conflicts: [mastery_fork_capture]
    effects:
      - { key: pixelmon.breeding_shiny_chance, operation: multiply_final, values: [1.20], stacking-group: breeding_mastery, cap: 0.02 }
    icon: minecraft:dragon_egg

  - id: secret_observatory
    type: hidden
    title: Secret Observatory
    description: Hidden-node discovery example; appears only when adjacent or purchased.
    position: { x: 2220, y: 420 }
    max-rank: 1
    cost: { currency: skill_points, values: [9] }
    requires: [quiet_biomes]
    hidden: true
    effects:
      - { key: pixelmon.shiny_chance, operation: reroll, values: [1], stacking-group: shiny_reroll, cap: 0.03 }
    icon: minecraft:ender_pearl

  - id: ember_capture
    type: notable
    title: Ember Capture Theory
    description: A real type-targeted bonus that increases Pixelmon ball power only when the target has Fire as either type.
    position: { x: 2640, y: 1220 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [compassionate_capture]
    effects:
      - { key: pixelmon.capture_power.fire, operation: multiply_final, values: [1.05, 1.10, 1.16], stacking-group: fire_capture, cap: 12.0 }
    icon: stellarskills:notable
    colors: { background: "#431B12", material: "#FF7A28" }

  - id: inferno_doctrine
    type: mastery
    title: Inferno Doctrine
    description: PvE-only examples for Fire move damage and damage against Grass-type targets; player-owned opponents are never modified.
    position: { x: 820, y: 1330 }
    max-rank: 3
    cost: { currency: skill_points, values: [3, 4, 5] }
    requires: [battle_instinct]
    effects:
      - { key: pixelmon.move_damage.fire, operation: multiply_final, values: [1.04, 1.08, 1.12], stacking-group: fire_move_damage }
      - { key: pixelmon.damage_vs_type.grass, operation: multiply_final, values: [1.03, 1.06, 1.10], stacking-group: anti_grass_damage }
      - { key: pixelmon.damage_taken_from_type.water, operation: multiply_final, values: [0.98, 0.95, 0.90], stacking-group: water_move_resistance }
    icon: stellarskills:mastery
    colors: { background: "#35120D", material: "#FFB000" }

  - id: celestial_excavator
    type: ranked
    title: Celestial Excavator
    description: Server-authoritative vanilla mining, movement, and safe-fall attributes synchronized through Minecraft's attribute system.
    position: { x: 2570, y: 1700 }
    max-rank: 3
    cost: { currency: skill_points, values: [2, 3, 4] }
    requires: [pathfinders_stride]
    effects:
      - { key: minecraft.mining_speed, operation: multiply_final, values: [1.08, 1.16, 1.25], stacking-group: active_mining, cap: 100.0 }
      - { key: minecraft.safe_fall_distance, operation: add_flat, values: [1, 2, 4], stacking-group: safe_fall, cap: 64 }
      - { key: minecraft.step_height, operation: add_flat, values: [0.25, 0.5, 1.0], stacking-group: step_height, cap: 4 }
    icon: stellarskills:ranked
    colors: { background: "#172A35", material: "#88E8FF" }

  - id: legend_encounters
    type: marker
    title: ENCOUNTERS
    description: Non-purchasable editor label.
    position: { x: 1800, y: 260 }
    max-rank: 1
    cost: { currency: skill_points, values: [0] }
    icon: minecraft:oak_sign

edges:
  - { from: awakening, to: starlit_trail, style: trunk }
  - { from: starlit_trail, to: radiant_hunter, style: constellation }
  - { from: radiant_hunter, to: legendary_cartographer, style: crown }
  - { from: radiant_hunter, to: quiet_biomes, style: shadow_branch }
  - { from: radiant_hunter, to: aura_attunement, style: aura_arc }
  - { from: quiet_biomes, to: secret_observatory, style: hidden, hidden: true }
  - { from: compassionate_capture, to: ember_capture, style: ember }
  - { from: starlit_trail, to: surveyors_lens, style: orbit }
  - { from: awakening, to: steady_hand, style: capture_vine }
  - { from: steady_hand, to: critical_artistry, style: capture_vine }
  - { from: critical_artistry, to: capture_scholar, style: capture_vine }
  - { from: steady_hand, to: compassionate_capture, style: heartline }
  - { from: capture_scholar, to: mastery_fork_capture, style: choice }
  - { from: awakening, to: genetic_foundation, style: helix }
  - { from: genetic_foundation, to: hidden_potential, style: helix }
  - { from: genetic_foundation, to: flawless_stat, style: crystal }
  - { from: awakening, to: seasoned_partner, style: training_path }
  - { from: seasoned_partner, to: ev_discipline, style: training_path }
  - { from: seasoned_partner, to: evolution_celebration, style: training_path }
  - { from: awakening, to: battle_instinct, style: blade }
  - { from: battle_instinct, to: raid_tactician, style: blade }
  - { from: battle_instinct, to: inferno_doctrine, style: flame }
  - { from: raid_tactician, to: ranked_integrity, style: blade }
  - { from: awakening, to: nursery_path, style: vine }
  - { from: nursery_path, to: hatchling_blessing, style: vine }
  - { from: hatchling_blessing, to: lineage_mutation, style: vine }
  - { from: lineage_mutation, to: mastery_fork_breeding, style: choice }
  - { from: awakening, to: gatherers_bough, style: branch }
  - { from: gatherers_bough, to: treasure_sense, style: branch }
  - { from: awakening, to: pathfinders_stride, style: road }
  - { from: pathfinders_stride, to: waystone_memory, style: road }
  - { from: pathfinders_stride, to: celestial_excavator, style: crystal_road }
  - { from: legend_encounters, to: legendary_cartographer, type: cosmetic, style: label }
```
