Thanks, bugfartboy, found the needed info:
Shadowling promotion:
<Script>Prep Shadowling
<Action>SetString/NewClass,Shadowheart</Action>
<Action>SetString/NewSprite,Shadowheart</Action>
<Action>SetString/NewClassInfo,Gained Max Health +3; Max Energy +5; Shadowport costs 1 less energy and has 1 extra range.</Action>
<Action>SetStat/-STR:PromotingChar-,Max Health,+,3</Action>
<Action>SetStat/-STR:PromotingChar-,Max Energy,+,5</Action>
<Action>AddTag/-STR:PromotingChar-,ModRngForAttack,+,1,Shadowport</Action>
<Action>AddTag/-STR:PromotingChar-,ModCostForAttack,-,1,Shadowport</Action>
</Script>
Mentalist Promotion:
<Script>Prep Mentalist
<Action>SetString/NewClass,Puppetmaster</Action>
<Action>SetString/NewSprite,Puppetmaster</Action>
<Action>SetString/NewClassInfo,Gained Max Energy +5; Psy Power +2; Kinetic Gust and Kinetic Pull cost 50% less energy; Mind Control has 1 extra range.</Action>
<Action>SetStat/-STR:PromotingChar-,Max Energy,+,5</Action>
<Action>SetStat/-STR:PromotingChar-,Psy Power,+,2</Action>
<Action>AddTag/-STR:PromotingChar-,ModRngForAttack,+,1,Mind Control</Action>
<Action>AddTag/-STR:PromotingChar-,ModCostForAttack,%,50,Kinetic Gust</Action>
<Action>AddTag/-STR:PromotingChar-,ModCostForAttack,%,50,Kinetic Pull</Action>
</Script>
So, not sure why the reductions aren't taking place
Edit: Also just tested with my Cryokinetisist as well in-game; promotion said 50% reduction in energy cost for cryo blast and didn't apply.
From the .xml file:
<Script>Prep Cryokineticist
<Action>SetString/NewClass,Cryokurios</Action>
<Action>SetString/NewSprite,Cryokurios</Action>
<Action>SetString/NewClassInfo,Gained Max Health +1; Max Energy +4; Psy Power +3; Cryo Blast costs 50% less energy and has 1 extra range.</Action>
<Action>SetStat/-STR:PromotingChar-,Max Health,+,1</Action>
<Action>SetStat/-STR:PromotingChar-,Max Energy,+,4</Action>
<Action>SetStat/-STR:PromotingChar-,Psy Power,+,3</Action>
<Action>AddTag/-STR:PromotingChar-,ModRngForAttack,+,1,Cryo Blast</Action>
<Action>AddTag/-STR:PromotingChar-,ModCostForAttack,%,50,Cryo Blast</Action>
</Script>