Knight, all units have attachment points. If you want a unit to mount, then create the unit u want to be mounted on by the unit. Create a blank passive ability. Have the attachment be a the model of your UNIT (footman, archer, etc). Then set the attachment point to mount.
This method can sometimes be sloppy, so instead:
Example:
Footman Unit
Horse
Knight.
To mount:
Trigger
Event -
Unit casts a spell
Condition -
Ability being cast = Mount
Actions -
If/Then/Else - Multiple Functions
If -
And -
casting unit = footman
target unit of ability being cast = horse
Then -
Create Knight at position of casting unit
remove footman
remove horse
(These arent the exact triggers, but that's basically how you could do it.) You of course might want to use custom script to remove memory leaks.
Another way to do this would simply be use the mount archer as the base ability
Then create your footman, your horse, and then the resultant being the knight.
You would need a model for each mounted unit. Like, a mounted grunt being raider?
There are several ways to do this.