@Light i updated my previous post, under EDIT. Today I will be playing around with the trigger structure you left me. However, here are the big changes to the spell i have made so far from the Spell Editor end. First, i am basing it off Unholy Frenzy. This has advantages on several levels. One being that it is a lot more similar AI wise to what i am making than Spirit Link is. Another, i don't have to deal with the quirks of SL.
But here is what i am doing to replicate the Unholy Armor. Functions to add & then remove 1000000000 armor based on presence of buff. When the buff is initially detected, 2 custom abilities are added to unit: one based on Runed Bracers (spell damage immunity) and the other a modified Item Lifesteal for the melee vampirism. The Trigger you posted works very well at detecting the presence of the buff, allowing for the addition/removal of the passives. Since i have not chosen a DDS meter yet, i am only dealing with melee damage currently. When the buff is first detected, the units life is set to "1 + current life/2". One neat thing i discovered last night while testing it: the trigger ended the bonuses after the buff was dispelled by a creep, exactly as it should have! This was good news! It reinforces the notion that this spell is a high risk, high reward gamble.
EDIT: Ok, here is my current incarnation of the triggers. They seem to work correctly, but again, there is no DDS mechanism yet, & i am unsure which one is the best choice at this point in time, i may post a question about that separately. But take a look at these two triggers & tell me if they are correct.
-
Unholy Link 1 alt
-

Events
-


Unit - A unit Finishes casting an ability
-

Conditions
-


(Ability being cast) Equal to Unholy Reduction (Active)
-

Actions
-


Set VampiricPoint = (Position of (Casting unit))
-


Set VamplinkGroup = (Units in (Playable map area) matching (((Matching unit) has buff Unholy Reduction (UF base)) Equal to True))
-


Unit Group - Pick every unit in VamplinkGroup and do (Actions)
-



Loop - Actions
-




Unit - Set life of (Picked unit) to (1.00 + ((Life of (Picked unit)) / 2.00))
-




Unit - Set Armor of (Picked unit) to 1000000000.00
-




Unit - Add Unholy Reduction to (Picked unit)
-




Unit - Add Vampirism to (Picked unit)
-


Custom script: call RemoveLocation(udg_VampiricPoint)
-


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



If - Conditions
-




(Number of units in VamplinkGroup) Greater than 0
-



Then - Actions
-




Game - Display to (All players) the text: Unholy Link has Awo...
-




Trigger - Turn on Unholy Link 2 alt <gen>
-



Else - Actions
-




Custom script: call DestroyGroup(udg_VamplinkGroup)
And trigger #1 awakens trigger #2, which is asleep by default.
-
Unholy Link 2 alt
-
Events
-

Time - Every 2.00 seconds of game time
-

Conditions
-

Actions
-


Unit Group - Pick every unit in VamplinkGroup and do (Actions)
-



Loop - Actions
-




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





If - Conditions
-






((Picked unit) has buff Unholy Reduction (UF base)) Equal to False
-





Then - Actions
-






Unit - Remove Unholy Reduction from (Picked unit)
-






Unit - Remove Vampirism from (Picked unit)
-






Unit - Set Armor of (Picked unit) to ((Real((Integer((Armor of (Picked unit)))))) - 1000000000.00)
-






Unit Group - Remove (Picked unit) from VamplinkGroup
-






Game - Display to (All players) the text: Unholy Link has sub...
-





Else - Actions
-


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



If - Conditions
-




(Number of units in VamplinkGroup) Equal to 0
-



Then - Actions
-




Custom script: call DestroyGroup(udg_VamplinkGroup)
-




Wait 1.00 game-time seconds
-




Game - Display to (All players) the text: Unholy Link has sub...
-




Trigger - Turn off Unholy Link 2 alt <gen>
-



Else - Actions
NOTE: Yes i have made changes, mostly to simplify the operation, but it doesn't mean i'm wedded to them! What i did was for the purpose of getting the spell to function properly to my expectations.
#1, i removed the second UG (VampiricallyLinked). I do not understand why it was there, & it seemed to serve no purpose in the spells current form. The trigger appears to function normally without it.
#2, i set it up with trigger #2 turned off by default. And it turns itself off whenever the VampLink UG is emptied.
#3, obviously, since there is no DDS yet, i have not incorporated Trigger #3 yet
EDIT#2
Ok... today i DL two DDS Tools. "Damage Engine" & Weep's "GUI Friendly Damage Detection". Damage Engine is waaaay too ambitious -i doubt i will ever be able to use it. Weep's is probably about as simple an application imaginable & even so, i am still struggling with it.
So here is my initial attempt at plugging in Unholy Reduction #3 trigger into Weep's DDS.
-
Unholy Link 3
-

Events
-


Game - DamageEventAmount becomes Equal to 1.00
-

Conditions
-


(PDD_Source has buff Unholy Reduction (UF base)) Equal to True
-


(PDD_Target is A structure) Equal to False
-


(PDD_Target is Magic Immune) Equal to False
-


(PDD_Target is A structure) Equal to False
-


(PDD_Target is an illusion) Equal to False
-


(PDD_Target is dead) Equal to False
-

Actions
-


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



If - Conditions
-




(PDD_Source is A ranged attacker) Equal to True
-



Then - Actions
-




Unit - Set life of GDD_DamageSource to ((Life of GDD_DamageSource) + ((DamageEventAmount / 2.00) x ((Real((Level of GDD_DamagedUnit))) / (Real((Level of GDD_DamageSource))))))
-



Else - Actions
-




Unit - Set life of GDD_DamageSource to ((Life of GDD_DamageSource) + (DamageEventAmount x ((Real((Level of GDD_DamagedUnit))) / (Real((Level of GDD_DamageSource))))))
where
The event responses are the following variables:
// GDD_Damage is the amount of damage, replacing Event Response - Damage Taken.
// GDD_DamagedUnit is the damaged unit, replacing Event Response - Triggering Unit.
// Triggering Unit can still be used, if you need to use waits.
// Read the -- Notes -- section below for more info.
// GDD_DamageSource is the damaging unit, replacing Event Response - Damage Source.
And NO! IT'S NOT WORKJING YET!!!

I really don't know what i am doing with the DDS tool.