Well as you perhaps have noticed there are no general damage/hit detection event, but can be used for a specific unit "Event - unit <Your_unit> is taking damage.
The main issue with this is that it cant be triggered with a variable, "the event selection way".
There is actually a way to go around this, both in Jass and Gui.
What we need is a "sub-trigger" registering the event for a single unit.
(I saw the way of using WEU, but indeed, its bad, bad, bad!)
Also, there was a damage detection tutorial before if I remember right, but surprisingly I cant find it anymore.
Anyway here we go:
-
Subtrigger Damage Detection
-

Events
-


Map initialization
-


Unit - A unit enters (Entire map)
-

Conditions
-

Actions
-


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



If - Conditions
-




MapInitHasRan Equal to False
-



Then - Actions
-




Set MapInitHasRan = True
-




Custom script: set bj_wantDestroyGroup = true
-




Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
-





Loop - Actions
-






Trigger - Add to Your Spell <gen> the event (Unit - (Picked unit) Takes damage)
-



Else - Actions
-




Trigger - Add to Your Spell <gen> the event (Unit - (Triggering unit) Takes damage)
And then for your passive spell:
-
Your Spell
-

Events
-

Conditions
-


(Level of <SPELL> for (Damage source)) Greater than 0
-

Actions
-


-------- Do Actions --------
As this maybe could be an inffective way, by registring the event to all your triggered damage/hit spells, you could add them all in one:
-
On Attack Spells
-

Events
-

Conditions
-

Actions
-


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



If - Conditions
-




(Level of <Spell 1> for (Damage source)) Greater than 0
-



Then - Actions
-




-------- Do Actions --------
-



Else - Actions
-




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





If - Conditions
-






(Level of <Spell 2> for (Damage source)) Greater than 0
-





Then - Actions
-






-------- Do Actions --------
-





Else - Actions
-






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







If - Conditions
-








(Level of <Spell 3> for (Damage source)) Greater than 0
-







Then - Actions
-








-------- Do Actions --------
-







Else - Actions
There is only one problem with the things I've just posted: It detects all kinds of attacks, even when you cast a spell.
While investigation the whole system I saw a way around this problem.
By using a dummy buff, you can determine whenever your damage is triggered by a spell, or by the passive ability. The best passive "dummy" ability for this would be Frost Attack or Slow Poison, but since you cant modify the frost attack's percent of slowing, Slow Poison would be a better suggestion.
-> When changing the spell, set all values to 0, stacking type to none, and the duration to 0.5 (is enough, you could try smaller value).
-> Also create a dummy buff which is replacing the preexisting buffs used there. (1 buff will be enough even if it is using two otherwise.
-
On Attack Spells
-

Events
-

Conditions
-


((Triggering unit) has buff Buff (dummy buff)) Equal to True
-


(Damage taken) Greater than 0.00 //this should actually be added no matter what
-

Actions
-


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



If - Conditions
-




(Level of <Spell 1> for (Damage source)) Greater than 0
-



Then - Actions
-




-------- Do Actions --------
-



Else - Actions
-




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





If - Conditions
-






(Level of <Spell 2> for (Damage source)) Greater than 0
-





Then - Actions
-






-------- Do Actions --------
-





Else - Actions
-






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







If - Conditions
-








(Level of <Spell 3> for (Damage source)) Greater than 0
-







Then - Actions
-








-------- Do Actions --------
-







Else - Actions
This would work, thus it did when I tested it.
However you may consider to perhaps not do like I suggested, adding all passive spells into one, since then you cant determine if the right unit casts the right buff.
Otherwise do a trigger for every passive skill, and a dummy buff for all of them
/Regards