You mean ability levels?
You can do if/then/else to check what level the aura ability is, then change the level demolish for the target units.
Trigger1
Events
Time - Every 1.00 second of game-time
Conditions
((Your unit) is alive) Equal to True
Actions
Set Point1 = (Position of (Your unit))
Set Temp_Group = (Units within 500.00 of (Point1) matching (((Matching unir) belongs to an ally of (Owner of (Your unit)) Equal to True) and ((Matching unit) is a structure) Equal to False))
Unit Group - Pick up every unit in (Temp_Group) and do (Actions)
Loop - Actions
Unit - Add (Picked unit) to Temp_Group2
Unit - Add Demolish to (Picked unit)
Unit Group - Pick up every unit in (Temp_Group2) and do (Actions)
Loop - Actions
Set Point2 = (Position of (Picked unit))
If/Then/Else
If (Conditions)
(Distance between (Point1) and (Point2)) Greater than 500.00
Then (Actions)
Unit - Remove Demolish from (Picked unit)
Unit - Remove (Picked unit) from (Temp_Group2)
Custom script: call RemoveLocation (udg_Point2)
Custom script: call DestroyGroup (udg_Temp_Group)
Custom script: call RemoveLocation (udg_Point1)
There, replace the "Triggering unit" with the unit you want. View attachment 60705
Oh, for god's sake, why not have a buff, and give them the skill. Then set the level with the (jass :S) native.
Where 'A000' is the Demolish ability(with levels etc) and 'B000' the buff. (both rawcodes) .
Events
Every 0.3 seconds
Conditions
Actions
----------TempGroup is a unit group ----------
Set TempGroup = Units in (Playable Map Area) matching ((Matching Unit) has buff BUFF)
Unit Group - Pick every unit in TempGroup and do
Loop - Actions
Unit Add Demolish to (Picked Unit)
Custom script: call SetUnitAbilityLevel(GetEnumUnit(),'A000',GetUnitAbilityLevel(GetEnumUnit(),'B000'))