I made a custom ability using triggers which appears to put lightning shield on a unit, damaging enemies of the caster but not the actual target. I have to trigger this because i want it to deal damage every 0.1 second. Also i don't want the target unit to suffer, only the surrounding enemy units.
From my current trigger, multiple shields on a single target stacks, causing it to deal more damage than intended.
Here's my trigger.
I know that i have to somehow remove the respective dummy damager to make it seem to not stack, but i don't know how because i used array instances.
From my current trigger, multiple shields on a single target stacks, causing it to deal more damage than intended.
Here's my trigger.
Code:
ElectronCloudCast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Electron Cloud
Actions
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 ElectronCloudDummy for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add a 20.00 second Generic expiration timer to (Last created unit)
Unit - Set the custom value of (Last created unit) to ((((Level of Electron Cloud for (Triggering unit)) - 1) x 2) + 1)
Set ElectronCloudInstance = (ElectronCloud + 1)
Set ElectronCloudCarrier[ElectronCloudInstance] = (Target unit of ability being cast)
Set ElectronCloudDamager[ElectronCloudInstance] = (Last created unit)
Custom script: call RemoveLocation(udg_Temp_Point)
Special Effect - Create a special effect attached to the origin of ElectronCloudCarrier[ElectronCloudInstance] using Abilities\Spells\Human\ManaShield\ManaShieldCaster.mdl
Set ElectronCloudSFX[ElectronCloudInstance] = (Last created special effect)
Code:
ElectronCloudPeriodic
Events
Time - Every 0.10 seconds of game time
Conditions
Actions
For each (Integer A) from 1 to ElectronCloudInstance, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(ElectronCloudDamager[(Integer A)] is alive) Equal to True
(ElectronCloudCarrier[(Integer A)] is alive) Equal to True
Then - Actions
Set Temp_Point = (Position of ElectronCloudCarrier[(Integer A)])
Set Temp_Group = (Units within 250.00 of Temp_Point matching ((((Matching unit) belongs to an enemy of (Owner of ElectronCloudDamager[(Integer A)])) Equal to True) and ((Matching unit) Not equal to ElectronCloudCarrier[(Integer A)])))
Unit Group - Pick every unit in Temp_Group and do (Actions)
Loop - Actions
Unit - Cause ElectronCloudDamager[(Integer A)] to damage (Picked unit), dealing (Real((Custom value of ElectronCloudDamager[(Integer A)]))) damage of attack type Spells and damage type Normal
Custom script: call RemoveLocation(udg_Temp_Point)
Custom script: call DestroyGroup(udg_Temp_Group)
Else - Actions
Set ElectronCloudCarrier[(Integer A)] = No unit
Set ElectronCloudDamager[(Integer A)] = No unit
Special Effect - Destroy ElectronCloudSFX[(Integer A)]
I know that i have to somehow remove the respective dummy damager to make it seem to not stack, but i don't know how because i used array instances.