Talents
Talent Trees let players spend Points on different upgrades and unlocks. They can be attached to an archetype, or defined independently and shared between archetypes.
Where Talent Trees Live
There are two ways to define a talent tree:
- Inline on an archetype — under a
TalentTree:block. The tree's id is the archetype's id, and it's automatically associated with that archetype. - Standalone in
talents.yml— placed in any Mythic pack folder. Each top-level key is a tree id. UseAssociatedArchetypes:to link the tree to one or more archetypes.
Both forms accept the same options.
Talent Tree Options
| Option | Description | Default |
|---|---|---|
| Display | The talent tree's display name | tree id / archetype name |
| Description | The talent tree's description (multi-line list) | |
| Icon | Icon options for menus | |
| PointType | The point type the tree spends | required |
| Menu | Menu opened by the openTalentMenu command function |
|
| TalentsForgettable | Whether players can refund individual talents to recover their points | false |
| AssociatedArchetypes | List of archetype ids this tree applies to. Only valid for standalone trees in talents.yml |
|
| Talents | A map of talents this tree provides | required |
| DefaultInvestmentButton | Icon template (lore/tooltip) applied to this tree's talent buttons in menus. Aliases: InvestmentButton, TalentButton, IconTemplate, Tooltip. Tooltip may instead be a plain lore list |
default talent icon |
Talent Options
| Option | Description | Default |
|---|---|---|
| Display | The talent's display name | id |
| DisplayOrder | Display order when auto-filling a menu | 0 |
| Description | The talent's description (multi-line list) | |
| Icon | Icon options. Spell-component talents inherit the spell icon by default | |
| MaxPoints | The maximum number of points that can be invested in this talent | 1 |
| Cost | The point cost per rank. A plain number is a fixed cost; a placeholder (e.g. <caster.level>) is resolved per player. See Dynamic cost |
1 |
| RequiredPoints | This many points must already be invested elsewhere in the tree before this talent can be taken | 0 |
| Parent | A single parent talent required for this one. May include a number after the id to require that many points in the parent (HeavyArmor 2) |
|
| Parents | List form of Parent. Each entry is <talentId> or <talentId> <pointsRequired>. See Parent requirements |
|
| ExclusiveWith | List of other talents mutually exclusive with this one. If any are taken (any rank), this one cannot be taken | |
| Components | List of component blocks defining what this talent actually does | [] |
| Modifiers | Named rank-scaling values read by the <talent.mod...> placeholder. See Talent Modifiers |
Parent requirements
Every entry under Parents must be satisfied before the talent can be taken. Within a single entry, | separates alternatives and only one of them has to be satisfied.
Cleave:
Parents:
- HeavyArmor 3
- Whirlwind|Rend 2
Cleave here needs 3 points in HeavyArmor, plus either 1 point in Whirlwind or 2 points in Rend.
A single entry may also be written inline, which is the shortest way to express a pure OR:
Parents: Whirlwind|Rend
Dynamic cost
Cost is resolved as a placeholder against the player, so it can vary between players or change over time.
- A plain number (e.g.
2) is a fixed cost. A placeholder (e.g.<caster.level>) is resolved per player. - It is re-resolved on every invest, divest, and reconcile. Spent totals are recomputed from the current cost, so a cost that changes over time changes future refunds.
- If investing itself changes the cost (for example a
Costthat reads a stat this talent grants through aSTATScomponent), all invested ranks are repriced at the new cost. When that repricing would push the total spent past the player's earned points, the invest is rolled back and fails instead of charging more than the player has. Avoid costs that reference stats the same talent grants. - Placeholder and math values require MythicMobs Premium. On non-premium MythicMobs the value degrades to a constant
1at load. Plain numbers and ranges work on all versions. - Avoid random ranges: the cost is re-evaluated on each operation, so invest and divest can disagree.
- A computed cost below
1is clamped to1. Each rank always costs at least one point.
Components
What a talent does is defined by one or more entries in its Components: list. Each entry has a Type: plus type-specific options. A talent without any components loads but has no effect.
Talents:
HeavyArmor:
Display: 'Heavy Armor Training'
MaxPoints: 5
Components:
- Type: STATS
Stats:
- ARMOR 2
- MAX_HEALTH 1
| Component | Description |
|---|---|
| SPELL | Teaches the player a spell. Subsequent points raise the spell level. |
| STATS | Adds stat modifiers to the player. |
| SPELLSTATS | Applies stat modifiers to the caster while they cast the listed spell(s). |
SPELL Component
| Option | Description |
|---|---|
| Spell | The id of the spell to teach |
| Level | The spell level to teach. Placeholder-supported. Falls back to the invested points. Alias: SpellLevel |
Cleave:
Display: 'Cleave'
MaxPoints: 5
Components:
- Type: SPELL
Spell: warrior_cleave
STATS Component
| Option | Description |
|---|---|
| Stats | List of stat modifier lines: <STAT_KEY> <amount> [Operation]. Operation defaults to ADDITIVE. |
HeavyArmor:
Display: 'Heavy Armor Training'
MaxPoints: 5
Components:
- Type: STATS
Stats:
- ARMOR 2
- MAX_HEALTH 1
- DAMAGE 0.05 ADDITIVE_MULTIPLIER
SPELLSTATS Component
While the player casts one of the listed spells, the listed stat modifiers are applied to the caster for that cast, then removed. Requires at least one spell and at least one stat, otherwise the component is skipped.
| Option | Description |
|---|---|
| Spell / Skill | A single spell id the stats apply to |
| Spells / Skills | List form: multiple spell ids the stats apply to |
| Stats | List of stat modifier lines: <STAT_KEY> <amount> [Operation]. Operation defaults to ADDITIVE. |
Amounts scale with the invested rank per operation, unless the amount uses a <talent.mod...> placeholder (then it is used as-is).
Frenzy:
Display: 'Frenzy'
MaxPoints: 5
Components:
- Type: SPELLSTATS
Spell: warrior_cleave
Stats:
- DAMAGE 0.1 ADDITIVE_MULTIPLIER
Talent Modifiers
Modifiers: defines named values that scale with the talent's current rank. They are read by the <talent.mod.KEY> placeholder (alias <talent.modifier...>) wherever the talent is in context: the talent's Description, STATS and SPELLSTATS stat amounts, the SPELL Level, and talent menu tooltips. Append |<default> for a fallback, e.g. <talent.mod.Damage|0>.
Use the section form, where each key is one modifier:
| Option | Description | Default |
|---|---|---|
| Base | Value at rank 1 | 1 |
| PerLevel | Amount added per rank above the first | 0 |
| Min | Lower clamp on the result | ~0 |
| Max | Upper clamp on the result | unbounded |
The value at rank n is Base + (n - 1) * PerLevel, clamped to [Min, Max]. By default the result is clamped to at least ~0, so set Min to a negative value if you need negative results.
Cleave:
Display: 'Cleave'
MaxPoints: 5
Modifiers:
Damage:
Base: 2
PerLevel: 1.5
Description:
- 'Deals <talent.mod.Damage> bonus damage'
Or the line form, where each entry is <key> <formula> and level is the talent's current rank:
Cleave:
Display: 'Cleave'
MaxPoints: 5
Modifiers:
- Damage 2+(level*1.5)
The formula may contain spaces, and the usual math functions and operators are available, including ^, min, max, clamp(value,min,max), round, floor, ceil, abs, sqrt, log, and pow. Unlike the section form there is no implicit clamping. A malformed line logs an error on reload and resolves to 0.
Examples
Inline on an archetype
WARRIOR:
Leveling:
MinLevel: 1
MaxLevel: 50
ExperienceCurve: STANDARD
ExperienceSource: COMBAT
PointRewards:
- Type: TALENT_POINTS
PerLevel: 1
TalentTree:
PointType: TALENT_POINTS
Menu: warrior_talents
TalentsForgettable: true
Talents:
HeavyArmor:
Display: 'Heavy Armor'
MaxPoints: 5
Components:
- Type: STATS
Stats:
- ARMOR 2
Cleave:
Display: 'Cleave'
MaxPoints: 3
RequiredPoints: 5
Parent: HeavyArmor 3
Components:
- Type: SPELL
Spell: warrior_cleave
Standalone in talents.yml
SharedDefenseTree:
Display: '&cDefense Talents'
PointType: TALENT_POINTS
Menu: defense_talents
AssociatedArchetypes:
- WARRIOR
- PALADIN
Talents:
Toughness:
Display: 'Toughness'
MaxPoints: 5
Components:
- Type: STATS
Stats:
- MAX_HEALTH 2
Talent Menu Function
Mythic custom menus can use the talent icon function to make icons that allow the player to invest talent points.
warrior_talents:
Icons:
TALENT_1:
Mapping: 1
Function:
Type: talent
Archetype: WARRIOR
Talent: HeavyArmor
The function type may also be skill_tree. The Archetype option accepts the alias TalentTree; use the tree id to target a standalone tree from talents.yml.
Talent Command Functions
Open Talent Menu
You can make a custom command to open the player's talent tree by using the openTalentMenu command function.
Create a custom command in a Mythic skill file:
command_talent_trees:
Command:
Id: talenttree
Function:
Type: opentalentmenu
Group: CLASS
Skills:
- sound{s=block.note_block.pling} @self
This will create a /talenttree command that opens the menu for the archetype the player currently has in the CLASS archetype group. The archetype must have a Menu defined on its talent tree for it to work.
To open a specific tree directly, set TalentTree (alias Archetype) to the tree id. When set, that tree's Menu is opened and Group is ignored:
command_shared_defense:
Command:
Id: defensetalents
Function:
Type: opentalentmenu
TalentTree: SharedDefenseTree
Talent Tree Hooks
You can run skills whenever any talent is invested or refunded by setting hooks under Configuration.Talents.OnInvest / OnDivest in talent-trees.yml. The skills run with these variables set:
| Variable | Description |
|---|---|
talent |
The talent's id |
talenttree |
The tree's id |
point-type |
The point type the tree uses |
archetype |
The associated archetype id (when applicable) |
talent-ranks |
The current rank the player has in the talent after the action |
talent-point-cost |
The configured per-rank cost of the talent |