Yes, you can. Although if there are only 20 upgrade levels the method you have only results in 20 triggers, so that's not so bad. I'd also recommend using current player so you don't have to copy the set of triggers for every player. It looks like the rest of your trigger uses current player, but the first condition uses player 1.
Anyway, the method to use fewer triggers (and allow for a greater number of upgrades) is as follows:
| Trigger |
| Conditions: |
¤ Current Player commands at least 16 upgrade
|
| ¤ Anything else... |
| Actions: |
¤ Add 16 minerals for current player
|
| ¤ Give 16 upgrade owned by current player to player 12 |
| Trigger |
| Conditions: |
¤ Current Player commands at least 8 upgrade
|
| ¤ Anything else... |
| Actions: |
¤ Add 8 minerals for current player
|
| ¤ Give 8 upgrade owned by current player to player 12 |
...and so on (dividing by 2), down to:
| Trigger |
| Conditions: |
¤ Current Player commands at least 1 upgrade
|
| ¤ Anything else... |
| Actions: |
¤ Add 1 minerals for current player
|
| ¤ Give 1 upgrade owned by current player to player 12 |
And finally:
| Trigger |
| Conditions: |
| ¤ Always |
| Actions: |
| ¤ Give all upgrade owned by player 12 to current player |
It seems that you wanted 4 minerals for each upgrade; in that case just multiply all the mineral amounts by 4. With the 6 triggers listed here, it will handle up to 31 upgrades.