Originally Posted by snowpie
Does anyone know exactly how Larian sorts out the listing of abilities and their points?


The position of the <Attributes> node determines which attribute it applies to. 1st node is attribute #0, second is attribute #1, etc. The same applies to traits and abilities.

Attributes:
(Note: These are the internal names from the engine; some of them were renamed in the actual game)

eAttribute_Str = 0x0,
eAttribute_Dex = 0x1,
eAttribute_Int = 0x2,
eAttribute_Con = 0x3,
eAttribute_Spd = 0x4,
eAttribute_Per = 0x5


Abilities:

eAbility_WarriorLore = 0x0,
eAbility_RangerLore = 0x1,
eAbility_RogueLore = 0x2,
eAbility_SingleHanded = 0x3,
eAbility_TwoHanded = 0x4,
eAbility_Blackrock = 0x5,
eAbility_Bow = 0x6,
eAbility_Crossbow = 0x7,
eAbility_Shield = 0x8,
eAbility_Reflexes = 0x9,
eAbility_ArmorMastery = 0x0A,
eAbility_Sourcery = 0x0B,
eAbility_Telekinesis = 0x0C,
eAbility_Willpower = 0x0D,
eAbility_FireSpecialist = 0x0E,
eAbility_WaterSpecialist = 0x0F,
eAbility_AirSpecialist = 0x10,
eAbility_EarthSpecialist = 0x11,
eAbility_Repair = 0x12,
eAbility_Sneaking = 0x13,
eAbility_Pickpocket = 0x14,
eAbility_Lockpicking = 0x15,
eAbility_Loremaster = 0x16,
eAbility_Crafting = 0x17,
eAbility_Barter = 0x18,
eAbility_Charm = 0x19,
eAbility_Intimidate = 0x1A,
eAbility_Reason = 0x1B,
eAbility_Charisma = 0x1C,
eAbility_Leadership = 0x1D,
eAbility_Luck = 0x1E,
eAbility_BodyBuilding = 0x1F


Talents:

eTalent_ItemMovement = 0x1,
eTalent_ItemCreation = 0x2,
eTalent_Flanking = 0x3,
eTalent_AttackOfOpportunity = 0x4,
eTalent_Backstab = 0x5,
eTalent_Trade = 0x6,
eTalent_Lockpick = 0x7,
eTalent_ChanceToHitRanged = 0x8,
eTalent_ChanceToHitMelee = 0x9,
eTalent_Damage = 0x0A,
eTalent_ActionPoints = 0x0B,
eTalent_ActionPoints2 = 0x0C,
eTalent_Criticals = 0x0D,
eTalent_IncreasedArmor = 0x0E,
eTalent_Sight = 0x0F,
eTalent_ResistFear = 0x10,
eTalent_ResistKnockdown = 0x11,
eTalent_ResistStun = 0x12,
eTalent_ResistPoison = 0x13,
eTalent_ResistSilence = 0x14,
eTalent_ResistDead = 0x15,
eTalent_Carry = 0x16,
eTalent_Throwing = 0x17,
eTalent_Repair = 0x18,
eTalent_ExpGain = 0x19,
eTalent_ExtraStatPoints = 0x1A,
eTalent_ExtraSkillPoints = 0x1B,
eTalent_Durability = 0x1C,
eTalent_Awareness = 0x1D,
eTalent_Vitality = 0x1E,
eTalent_FireSpells = 0x1F,
eTalent_WaterSpells = 0x20,
eTalent_AirSpells = 0x21,
eTalent_EarthSpells = 0x22,
eTalent_Charm = 0x23,
eTalent_Intimidate = 0x24,
eTalent_Reason = 0x25,
eTalent_Luck = 0x26,
eTalent_Initiative = 0x27,
eTalent_InventoryAccess = 0x28,
eTalent_AvoidDetection = 0x29,
eTalent_AnimalEmpathy = 0x2A,
eTalent_Escapist = 0x2B,
eTalent_StandYourGround = 0x2C,
eTalent_SurpriseAttack = 0x2D,
eTalent_LightStep = 0x2E,
eTalent_ResurrectToFullHealth = 0x2F,
eTalent_Scientist = 0x30,
eTalent_Raistlin = 0x31,
eTalent_MrKnowItAll = 0x32,
eTalent_WhatARush = 0x33,
eTalent_FaroutDude = 0x34,
eTalent_Leech = 0x35,
eTalent_ElementalAffinity = 0x36,
eTalent_FiveStarRestaurant = 0x37,
eTalent_Bully = 0x38,
eTalent_ElementalRanger = 0x39,
eTalent_LightningRod = 0x3A,
eTalent_Politician = 0x3B,
eTalent_WeatherProof = 0x3C,
eTalent_LoneWolf = 0x3D,
eTalent_Zombie = 0x3E,
eTalent_Demon = 0x3F,
eTalent_IceKing = 0x40,
eTalent_Courageous = 0x41,
eTalent_GoldenMage = 0x42,
eTalent_WalkItOff = 0x43,
eTalent_FolkDancer = 0x44,
eTalent_SpillNoBlood = 0x45,
eTalent_Stench = 0x46,
eTalent_Kickstarter = 0x47,
eTalent_WaLo_NaturalArmor = 0x48,
eTalent_WaLo_NaturalHealth = 0x49,
eTalent_WaLo_NaturalResistance = 0x4A,
eTalent_RaLo_ArrowRecover = 0x4B,
eTalent_RaLo_EvasionBonus = 0x4C,
eTalent_RaLo_RangedAPBonus = 0x4D,
eTalent_RoLo_DaggerAPBonus = 0x4E,
eTalent_RoLo_DaggerBackStab = 0x4F,
eTalent_RoLo_MovementBonus = 0x50,
eTalent_RoLo_HoldResistance = 0x51


Traits:


eTrait_Forgiving = 0x0,
eTrait_Vindictive = 0x1,
eTrait_Bold = 0x2,
eTrait_Timid = 0x3,
eTrait_Altruistic = 0x4,
eTrait_Egotistical = 0x5,
eTrait_Independent = 0x6,
eTrait_Obedient = 0x7,
eTrait_Pragmatic = 0x8,
eTrait_Romantic = 0x9,
eTrait_Spiritual = 0x0A,
eTrait_Materialistic = 0x0B,
eTrait_Righteous = 0x0C,
eTrait_Renegade = 0x0D,
eTrait_Blunt = 0x0E,
eTrait_Considerate = 0x0F,
eTrait_Compassionate = 0x10,
eTrait_Heartless = 0x11