Players' ability to unlearn their last 4 class and 3 generic talent points is being interfered with by "corruption" of the unlearn stacks. Donning/doffing certain items and rearranging talent point investment are oft cited precursors to the problem. I think both of these, indeed, contribute.
The root cause is calls to learnTalent() and unlearnTalent() without protection from unlearn stack modification. I've identified 5 definite or possible causes:
- Changes to talent mastery, either via category point spend or item bonuses. darkgod fixed this one back in December (r6170).
- Changes to talent levels from item bonuses. I think I've got this one fixed.
- Removing points from a talent on the levelup dialog may also cause problems since the talent is unlearned, checked to ensure it can be unlearned, and relearned if not. All without unlearn stack protection. I think I've got this sorted, too.
- Missing no_unlearn_last = true fields in side-effect talent declarations. I don't know where the difference lies between class, generic, and a possible "other" kind of talent. Talents I've identified that suffer from this problem are:
- Celestial talents T_JUMPGATE_TWO, T_JUMPGATE_TELEPORT, and T_JUMPGATE_TELEPORT_TWO
- All chronomancy anomaly talents
- Solipsist thought-form talents T_TF_BOWMAN, T_TF_WARRIOR, and T_TF_DEFENDER
- Non-side-effect talents granted by other talents to controllable actors (i.e., the player and golem, if any) that omit {no_unlearn = true} as the extra parameter to learnTalent(). I'm not sure about this one, either, but strongly suspect it given that I've verified 4. Includes:
- T_CORRUPTED_STRENGTH given to golem by Blighted Summoning prodigy
- T_SPIT_POISON and T_EXOTIC_WEAPONS_MASTERY from Legacy of the Naloren prodigy
Edit: Updated the patch.