Frost Fissure
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frost Fissure
Actions
Set FF_unit = (Triggering unit)
Set FF_loc[0] = (Position of FF_unit)
Set FF_loc[1] = (Target point of ability being cast)
Set FF_damage = ((Real((Strength of FF_unit (Include bonuses)))) + (1200.00 x (Real((Level of Frost Fissure for FF_unit)))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between FF_loc[0] and FF_loc[1]) Less than or equal to 100.00
Then - Actions
Set FF_angle = (Facing of FF_unit)
Else - Actions
Set FF_angle = (Angle from FF_loc[0] to FF_loc[1])
For each (Integer A) from 1 to 6, do (Actions)
Loop - Actions
Set FF_distance = (FF_distance + 150.00)
Set FF_loc[2] = (FF_loc[0] offset by FF_distance towards FF_angle degrees)
Special Effect - Create a special effect at FF_loc[2] using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at FF_loc[2] using FreezingRing.mdx
Special Effect - Destroy (Last created special effect)
Set FF_group = (Units within 150.00 of FF_loc[2] matching (((((Matching unit) belongs to an enemy of (Owner of (Picked unit))) Equal to True) and (((Matching unit) is A ground unit) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is in FF_group equal to False)))))
Unit Group - Pick every unit in FF_group and do (Actions)
Loop - Actions
Set FF_loc[3] = (Position of (Picked unit))
Unit - Create 1 Dummy for (Owner of FF_unit) at FF_loc[3] facing Default building facing degrees
Unit - Add Freeze (Frost Fissure) to (Last created unit)
Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Custom script: call RemoveLocation (udg_FF_loc[3])
Unit Group - Pick every unit in FF_group and do (Actions)
Loop - Actions
Unit - Cause FF_unit to damage (Picked unit), dealing FF_damage damage of attack type Spells and damage type Universal
Custom script: call RemoveLocation (udg_FF_loc[2])
Custom script: call DestroyGroup (udg_FF_group)
Set FF_distance = 0.00
Custom script: call RemoveLocation (udg_FF_loc[0])
Custom script: call RemoveLocation (udg_FF_loc[1])
Custom script: set udg_FF_unit = null
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frost Fissure
Actions
Set FF_unit = (Triggering unit)
Set FF_loc[0] = (Position of FF_unit)
Set FF_loc[1] = (Target point of ability being cast)
Set FF_damage = ((Real((Strength of FF_unit (Include bonuses)))) + (1200.00 x (Real((Level of Frost Fissure for FF_unit)))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between FF_loc[0] and FF_loc[1]) Less than or equal to 100.00
Then - Actions
Set FF_angle = (Facing of FF_unit)
Else - Actions
Set FF_angle = (Angle from FF_loc[0] to FF_loc[1])
For each (Integer A) from 1 to 6, do (Actions)
Loop - Actions
Set FF_distance = (FF_distance + 150.00)
Set FF_loc[2] = (FF_loc[0] offset by FF_distance towards FF_angle degrees)
Special Effect - Create a special effect at FF_loc[2] using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at FF_loc[2] using FreezingRing.mdx
Special Effect - Destroy (Last created special effect)
Set FF_group = (Units within 150.00 of FF_loc[2] matching (((((Matching unit) belongs to an enemy of (Owner of (Picked unit))) Equal to True) and (((Matching unit) is A ground unit) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is in FF_group equal to False)))))
Unit Group - Pick every unit in FF_group and do (Actions)
Loop - Actions
Set FF_loc[3] = (Position of (Picked unit))
Unit - Create 1 Dummy for (Owner of FF_unit) at FF_loc[3] facing Default building facing degrees
Unit - Add Freeze (Frost Fissure) to (Last created unit)
Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Custom script: call RemoveLocation (udg_FF_loc[3])
Unit Group - Pick every unit in FF_group and do (Actions)
Loop - Actions
Unit - Cause FF_unit to damage (Picked unit), dealing FF_damage damage of attack type Spells and damage type Universal
Custom script: call RemoveLocation (udg_FF_loc[2])
Custom script: call DestroyGroup (udg_FF_group)
Set FF_distance = 0.00
Custom script: call RemoveLocation (udg_FF_loc[0])
Custom script: call RemoveLocation (udg_FF_loc[1])
Custom script: set udg_FF_unit = null
This is a line spell. And every time I cast it, it damages units more than once. I've already set the the unit group to filter out units that have already been picked so they don't get damaged more than once. But if I clear the unit group, the spell goes back to damaging them more than once. How do I fix that?
Here's the map, so you can test out the spell.