Talent Tree

The Talent Tree replaces the master skill tree window. You build the whole tree in XML: three category columns, rows (tiers) of nodes, and what each node does. Players spend points on nodes, one rank at a time, and can reset the whole tree for Zen.

Opening the Window#

  • Press N, or click the Master button in the Character (C) window.
  • Both only work when the server sent a tree (plugin on and at least one node loaded). Otherwise nothing opens.
  • Reset Tree in the window refunds every point for RespecZen Zen (a confirm box shows the price).

File Location#

Data/Plugins/Characters/TalentTree.xml            the live tree
Data/Plugins/Characters/TalentTree.vanilla.xml    the vanilla S6 master tree as talent nodes (not loaded)

Only TalentTree.xml is read. To use the vanilla tree, copy TalentTree.vanilla.xml over TalentTree.xml and reload.

Dependencies#

Depends OnPurpose
Common.datMasterSkillTreePoint = points per master level when PointSource="MasterLevel"
Skill.txtSkill ids for Target (SKILLMOD / GRANT nodes) and class/evolution rules for granted skills
MasterSkillTree.txtSKILLMOD_VALUE nodes use the master skill index as their node Id
Reset SystemPointSource="Reset" and the SYSTEM_RESET_LEVEL_CUT effect
DataServerTable dbo.TalentTree (Name varchar(10), Blob varbinary(512)). Run the shipped dbo.TalentTree.Table.sql once
ClientReceives the whole tree at login (game data sync type 33). No client file to edit

Root#

<TalentTree Enabled="true" PointSource="MasterLevel" PointsPerLevel="1" MinLevel="1"
            PointsPerReset="5" Respec="true" RespecZen="10000000">
AttributeTypeDefaultShippedEffect
Enabledtrue/falsefalsetrueMaster switch. Off = no tree, no window, nothing applied
PointSourceMasterLevel / Level / Reset / ManualMasterLevelMasterLevelWhere spendable points come from (see below). Unknown value = MasterLevel
PointsPerLevel0-25501Points per level-up. Level source only
MinLevel0-655354001Level-ups below this give no points. Level source only
PointsPerReset0-25505Points per normal reset. Reset source only
Respectrue/falsetruetrueAllow Reset Tree
RespecZen0-42949672951000000010000000Zen price of Reset Tree

Point Sources#

SourcePoints come fromStored in
MasterLevelThe character's Master Points (the ones master levels give, MasterSkillTreePoint per level). Spending a point takes one Master PointThe character row (Master Points)
LevelPointsPerLevel for every level-up at or above MinLeveldbo.TalentTree
ResetPointsPerReset for every normal reset. Grand and master resets give nothingdbo.TalentTree
ManualNothing automatic. Only the GM commanddbo.TalentTree

Category#

Exactly three columns exist, Id 0, 1 and 2.

<Category Id="0" Name="Offense" Filter=""/>
AttributeTypeDefaultEffect
Id0-2-Column. Other values are ignored
Namestring (23 chars)""Column title
Filterclass list"" (all)Default class filter for every node in this column. A node's own Filter wins

Class list: DW, DK, FE, MG, DL, SU, RF, joined with commas and no spaces ("DK,MG").

Node#

<Node Id="1002" Cat="0" Tier="1" Col="0" Name="Infernal Might" Icon="0" Filter="DW"
      Effect="SKILLMOD_DMG_PCT" Target="14" MaxLevel="3" Values="8,18,30" TierPoints="5"
      Desc="Inferno damage +%v%"/>
AttributeTypeDefaultEffect
Id1-65535-Unique node id. 0 is reserved. Saved per character, never renumber a live node
Cat0-20Column (category)
Tier0-2550Row. 0 = top. The window scrolls for deep trees
Col0-2550Order inside the row, left to right. The row's nodes are spread evenly across the column
Icon0-590Skill icon sheet index. Above 59 is set to 0 with a log line. 0 on a SKILLMOD or GRANT node = use the Target skill's icon
MaxLevel1-201Number of ranks. Above 20 is cut to 20
Effectname-What the node does. See Effects. Unknown name = node skipped
Valueslist-Value per rank: "8,18,30". Needs at least MaxLevel numbers, extra numbers are ignored
PerLevelint0Used only when Values is missing: rank N = PerLevel x N
Targetskill id0The skill for SKILLMOD and GRANT effects
Requires"node:rank"noneAnother node must have this rank first. "1002" alone = rank 1
TierPointsint0Points the character must have spent in this column on rows above this one
Filterclass listcategory'sClasses that may take the node. Empty = use the category filter
GatetextnoneEquipment condition (see Gates)
Namestring (31 chars)?Node title
Descstring (95 chars)""Tooltip line. %v is replaced by the value of the current rank

Catalog limit: 400 nodes. Nodes past 400 are dropped with a log line.

Effects#

Stats (apply while the node is ranked and its gate is met):

EffectValue means
STAT_ADD_STRENGTH / _DEXTERITY / _VITALITY / _ENERGY / _LEADERSHIP+ that stat
STAT_ADD_LIFE / STAT_ADD_MANA / STAT_ADD_BP / STAT_ADD_SD+ max HP / mana / AG / SD
STAT_DEFENSE+ defense
STAT_DEFENSE_RATE_PCT+ % of the character's current defense success rate
STAT_DEFENSE_RATE_PVP+ defense success rate vs players
STAT_ATTACK_RATE / STAT_ATTACK_RATE_PVP+ attack success rate (all / vs players)
STAT_CRIT_DMG_RATE+ % chance of critical damage
STAT_EXC_DMG_RATE+ % chance of excellent damage
STAT_DOUBLE_DMG_RATE / STAT_TRIPLE_DMG_RATE+ % chance of double / triple damage
STAT_IGNORE_DEF_RATE+ % chance to ignore defense
STAT_REFLECT+ % chance to reflect a hit's full damage back
STAT_HP_RECOVERY / STAT_MP_RECOVERY / STAT_SD_RECOVERY / STAT_BP_RECOVERY+ regen rate of HP / mana / SD / AG (% of max per tick)
STAT_MP_COST_REDUCE- % mana cost of skills
STAT_RESIST_ICE / _POISON / _LIGHTNING+ resistance to the freeze / poison / shock effect
STAT_HUNT_HP / STAT_HUNT_MP / STAT_HUNT_SD+ % of max HP / mana / SD restored per kill
STAT_RESTORE_HP_OFFENSE / _MP_OFFENSE / _SD_OFFENSE+ % chance to fully restore HP / mana / SD when attacking
STAT_RESTORE_HP_DEFENSE / _MP_DEFENSE+ % chance to fully restore HP / mana when hit
STAT_PHYS_DMG / _MIN / _MAX+ physical damage (min and max / min only / max only)
STAT_MAGIC_DMG / _MIN / _MAX+ wizardry damage (min and max / min only / max only)
STAT_CURSE_DMG+ curse damage (min and max)
STAT_ATTACK_SPEED+ attack speed and magic speed
STAT_DMG_PVP+ damage vs players
STAT_DURA_WEAPON_ARMOR / _JEWELRY / _GUARDIAN / _PETDurability of weapons+armor / rings+pendants / guardian pets / pets lasts % longer
STAT_DEFENSE_BY_LEADERSHIP+ 1 defense per value points of Command
SYSTEM_EXP_PCT / SYSTEM_MASTER_EXP_PCT+ % experience / master experience
SYSTEM_DROP_PCT / SYSTEM_ZEN_PCT+ % item drop rate / Zen drop
SYSTEM_RESET_LEVEL_CUT- levels needed to reset in the Reset System

Skills (use Target = skill id):

EffectValue means
SKILLMOD_DMG_PCT+ % of the skill's own base damage. Physical weapon skills (Twisting Slash, Triple Shot, Killing Blow) have 0 base damage and gain nothing: use SKILLMOD_DMG_FLAT for those
SKILLMOD_DMG_FLAT+ flat damage to that skill
SKILLMOD_UPGRADE_TOSwaps the learned Target skill for the skill id in Values (per rank). See the warning below
SKILLMOD_VALUEFeeds the old master-skill value with the same index. The node Id must equal the MasterSkillTree.txt index. Used for buff strength, summon stats, Dark Spirit, combo damage and similar. Used heavily by the vanilla file
GRANT_SKILLTeaches the Target skill while the node is ranked. Removed again on Reset Tree or when the node is gone

Gates#

A gate makes a node work only with certain gear. Gates apply to STAT effects and SKILLMOD_VALUE. They do not switch off SKILLMOD damage, upgrades or granted skills.

GateActive when
Wing:<index>Wing slot holds item 12,<index>
ArmorSetThe character has a full armor set bonus
ShieldLeft hand holds a shield (group 6)
Weapon:<group>Right hand holds any item of that group
Weapon:<group>,<twohand>Same, and two-handed (1) or one-handed (0)
Weapon:<group>,<twohand>,<slot>,<excludeIndex>Item of the group in that wear slot (0 right, 1 left), held in that hand, and not item index excludeIndex
Item:<slot>,<group>,<index>That exact item is in that wear slot

Important Behavior#

  • Allocate rules, in order: class filter, skill check (GRANT / UPGRADE only), rank not maxed, at least 1 point free, Requires met, TierPoints met. One click = one rank. The allocation saves at once.
  • Load order is forgiving: a node with Id 0, a duplicate Id, Cat above 2, an unknown Effect, or fewer Values than MaxLevel is skipped with a log line. A node whose Requires node does not exist is skipped, and that chain cascades.
  • Removed nodes: ranks in a node that no longer exists are dropped on the player's next login. With Level / Reset / Manual sources those points come back. With MasterLevel they do not: the Master Points were already spent. Tell players to Reset Tree before you remove nodes.
  • Changing PointSource on a live server mixes two point pools. Wipe dbo.TalentTree (and give players a fresh start) when you switch.
  • Turning the tree off keeps every allocation in the database. Turning it back on restores them.
  • A character can hold ranks in up to 120 different nodes.
  • Values reach the client as 16-bit numbers. Keep them between -32768 and 32767 so the tooltip matches.
  • Reload: /reload plugins re-reads the file. The client tree is sent at login, so players relog to see layout or text changes.

The Vanilla File#

TalentTree.vanilla.xml is the S6 master skill tree (257 nodes) written as talent nodes, with per-class filters and the vanilla value curves. It uses PointSource="MasterLevel", so master levels pay for it exactly like the old tree.

Ten vanilla rows that grant a master skill are left out: those skills use ids 300+ that the client cannot cast. Nodes that needed one of them as a prerequisite are left out too.

GM Command#

Needs GM authority (Authority 2 or higher).

CommandEffect
/talent points <n>Gives the character n points. With MasterLevel it adds Master Points

Examples#

Every level from 200 gives 1 point. Reset Tree costs 5M Zen.

<TalentTree Enabled="true" PointSource="Level" PointsPerLevel="1" MinLevel="200"
            Respec="true" RespecZen="5000000">
  <Category Id="0" Name="Offense"/>
  <Category Id="1" Name="Defense"/>
  <Category Id="2" Name="Utility"/>

  <Node Id="2000" Cat="1" Tier="0" Col="0" Name="Toughness" Icon="45"
        Effect="STAT_ADD_LIFE" MaxLevel="5" PerLevel="50" Desc="Maximum Life +%v"/>
  <Node Id="2001" Cat="1" Tier="1" Col="0" Name="Iron Skin" Icon="46"
        Effect="STAT_DEFENSE" MaxLevel="5" PerLevel="6" TierPoints="5" Desc="Defense +%v"/>
</TalentTree>

Common Issues#

Last updated October 1, 2026