I don't think you will be able to avoid triggers.
I tried giving the following abilities to the unit with perma invis:
- Permanent Immolation - didn't work - the effect of this spell is disabled as long as the unit is invisible
- Building Damage Aura (Tornado) - didn't work - the aura damages nearby units, but it does not force the unit out of invis
I thought of two possible solutions, both including triggers:
Option #1
Give the 'Building Damage Aura' to T3 units and via triggers detect when unit is about to take damage (for example via Bribe's DDS, or using native damage events if you are on Reforged).
If unit is about to take damage and the damage source is the T3 unit, attack type is 'spells', damage type is 'force' and the damage amount +- matches what is in object editor, then it's most likely damage caused by the aura, in which case you can remove the Permanent Invisibility (or replace it for the 'Ghost (Visible)' ability)
Option #2
You would place all those T3 units into unit group and have a trigger that periodically checks if there are any enemy units nearby each T3 unit.
Basically, for given T3 unit you would pick all units within X range that are enemies and use the following condition:
-
(Your_T3_unit is masked to (Owner of (Matching unit)).) Equal to False
What the condition checks is if given player has line of sight to 'your_t3_unit', irrespective of whether it is or is not invisible.
If any enemy unit was picked, then your unit is close enough to the enemy and the enemy could see you if you were visible, so in that case you can remove Permanent Invisibility.
--
As for regaining invisibility, for both options you would need to keep track of visible T3 units and keep track of how long it has been since each of those units last dealt damage via the damage aura (#1) or was visible to enemy in range (#2) and if enough time passed, you would add back the Permanent Invisibility
--
Edit:
Generally, I would advise using option #2.
Since option #1's aura deals damage then it would cause units to flee, which is for example the default behavior for idle workers - that may not be wanted behavior in your map