Step 5 - Enforcement of the selection of the correct ability, unlike the others, which have been eval scripts, we have to use an eval rule here.
Alright, I think that should get you where you need to go. Keep in mind that I haven't tested any of this code, it's off the top of my brain, so no promises it will work right the first time. You might have to modify it yourself, but if you have more trouble, just repost with the details.
Code:
~ Pull the HasAbility tag for our chosen manuever
perform field[usrChosen2].chosen.pulltags[HasAbility.?]
~ We're valid if that tag here matches one on the hero.
validif (hero.tagmatch[HasAbility,HasAbility,initial] <> 0)
Alright, I think that should get you where you need to go. Keep in mind that I haven't tested any of this code, it's off the top of my brain, so no promises it will work right the first time. You might have to modify it yourself, but if you have more trouble, just repost with the details.