um, well the event would be a hero gains a level up.
This is the random way.
<div class='triggertop'>TRIGGER</div><div class='triggermain'> Hero AI
Events
Unit - A unit Gains a level
Conditions
(Unit-type of (Leveling Hero)) Equal to <YOUR HERO HERE>
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Leveling Hero)) Equal to 6
Then - Actions
Hero - Learn skill for (Leveling Hero): Your Ult Skill
Else - Actions
Set randInt = (Random integer number between 1 and 3)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
randInt Equal to 1
Then - Actions
Hero - Learn skill for (Leveling Hero): Your 1st skill
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
randInt Equal to 2
Then - Actions
Hero - Learn skill for (Leveling Hero): Your 2nd skill
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
randInt Equal to 3
Then - Actions
Hero - Learn skill for (Leveling Hero): Your 3rd skill
Else - Actions
Do nothing
</div>
if you have more then one hero (i think you do), you will have to sort them out first, either set up an if statement before everything or put it in the conditions and make multiple triggers.
~Xeridanus
PS: im doing this from uni so i don't have WE here, so i can't get the correct functions names. i'll fix it up when i get home.
PPS: I have fixed it up. all you have to do to make it non-random is fill in the other levels using the same thing i did for the ult. and of course put it in the right order. or you could make an array of skills with the skills in the right order (you will have to double up in the array). then just use the level of the hero as the array index. call your leveling trigger at map initialisation. otherwise he'll have one skill point left over all the time.