You can't detect them. They are passives and to detect them, you'll practically have to trigger them yourself... And if in the trigger they succeed, hooray, that's when you can say you detected them. I may be wrong but I don't think there is another way.
Evaision is a bit difficult to simulate I think. But mabey it can be detected in a little bit crapy way. Make a trigger that registers any unit attacked. Save the attackeds' life in a variable. Wait a short period of time and then se if it's life is lower than the saved vaule. Just an idea.
Event (generic unit) - unit is attacked Condition (unit has specific buff) - unit has Stunned(pause) buff Action - pick all units within playable map area matching condition, picked unit has Stunned(pause)buff
then use picked unit to do whatever u want with that unit (i think, or matching unit, i always forget)
Critical strike and evasion... now thats a tough one...
iplaystarcraftmake a real variable and set it to random number between 1 and 100
if true real var is less than or = to %of evasion then else
Man, you don't get the point. He want to detect event when the attacker deal critical strike or bash.
Actually, you can't detect it real smooth, you must create a trigger to detect it, depend on what ability you want to check (evasion, bash, or critical strike).