oops sorry didn't realize that it needed a map description, should of read map submission rules, anyway.
http://www.wc3sear.ch/?p=Maps&ID=8124
it might have a few bugs in it such. If you try to combine two units that don't have a corresponding value then there total value will be 0 (Heavy Footman), but that can be fixed by giving the fused units their own values. To use more than 10 units in combining i would, in unit identifiers, just go past 9 on to 10 11 12.. and in fusion check in the second function where it says
For each (Integer A) from 0 to 9, do (If (UnitNames[1] Equal to UnitIdentifiers[(Integer A)]) then do (Set FusionCodeOutcomes = (FusionCodeOutcomes + ((Integer A) x 10))) else do (Do nothing))
i would change the * 10 to * 100 so you could add 100 units and the largest fusion code you could get would be 9999, and you could do combinations with 3 units and just do
For each (Integer A) from 0 to 9, do (If (UnitNames[3] Equal to UnitIdentifiers[(Integer A)]) then do (Set FusionCodeOutcomes = (FusionCodeOutcomes + ((Integer A) x 10000))) else do (Do nothing))
so that with combining 100 different units with 3 units in the region you could get a fusion code of 999999 and the number of possible combinations for this size fusion code would be around 500000 (would you even bother making that many units?)
you might want to change the entering region trigger to
entering region
Events
Unit - A unit enters Region 000 <gen>
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
[random upgrade here] Equal to (Researched tech-type)
Then - Actions
Set UnitNames[UnitsInFusionRegion] = (Name of (Triggering unit))
Set UnitRefferals[UnitsInFusionRegion] = (Triggering unit)
Game - Display to (All players) for 5.00 seconds the text: UnitNames[UnitsInFusionRegion]
Set UnitsInFusionRegion = (UnitsInFusionRegion + 1)
If (UnitsInFusionRegion Equal to 2) then do (Trigger - Run fusion check <gen> (ignoring conditions)) else do (Do nothing)
Else - Actions
Game - Display to (All players) for 5.00 seconds the text: unit is not at a high enough level!
Unit - Move (Triggering unit) instantly to (Center of (Playable map area))
or something like that to add the check for whether the unit is at a high enough level. the upgrade would be the highest upgrade for that unit. Im assuming with this that you are using upgrades that work on all units of a type. If you are not then you would have to change the condition to something more suited to your map.
also you should probably change the place to where the units are moved if they dont combine to another region just infront of the fusion region instead of the centre of playable area.