Have to take back my talk form earlier, in this thread.
Recently I got an Idea and did now some testing. Units beeing Stuned can produce non-target events by themself in 2 ways if they got speicfic abilities.
One can not cast spells while beeing Stuned and most orders won't fire events.
But all spells based on super instants (windwalk, divine shield, manashield, immolation, defend, berserk...) fire a non target event, even during stun. This Order won't be executed cause stun. But the Event notices the ability button click, fires and you can do stuff based on it. If you free the unit from disables during that event it will also execute the spell.
Edit: Berserk and defence are proably the best bases, causes they are also immune to basic silence not sure about beeing banished (etherial) although.
-
Divine Shield useable during stun
-

Events
-


Unit - A unit Is issued an order with no target
-

Conditions
-


(Level of Gottesschild for (Triggering unit)) Not equal to 0
-


(Issued order) Equal to (Order(divineshield))
-

Actions
-


Custom script: set udg_OrderId = GetUnitCurrentOrder(GetTriggerUnit())
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-



Then - Actions
-




Unit - Remove Negative buffs from (Triggering unit)
-



Else - Actions
Also there is another way with toggleing autocasts, there is an selfautocast spell "Frenzy" best option in that case. I had this idea first but it is not as good as the super Instants. Cause you need to check for 2 Orders, check remaining cooldown and make sure the user does not stop casting when freed by toggleing autocast. UnFrenzy / Frenzy
-
Raserei Toogle
-

Events
-


Unit - A unit Is issued an order with no target
-

Conditions
-


(Level of Raserei for (Triggering unit)) Not equal to 0
-


(Ability Cooldown Remaining of (Triggering unit) for ability Raserei) Less than or equal to 0.00
-


Or - Any (Conditions) are true
-



Conditions
-




(Issued order) Equal to (Order(frenzyoff))
-




(Issued order) Equal to (Order(frenzyon))
-

Actions
-


Custom script: set udg_OrderId = GetUnitCurrentOrder(GetTriggerUnit())
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-



Then - Actions
-




Unit - Remove Negative buffs from (Triggering unit)
-




Custom script: call IssueImmediateOrder(GetTriggerUnit(), "frenzy")
-



Else - Actions