I got an idea that should absolutely work. Just w8 a min or five.. (Editing this post)
[EDIT]:
This should be it:
-
Charge
-
Events
-
Unit - A unit Starts the effect of an ability
-
Conditions
-
(Ability being cast) Equal to Charge
-
Actions
-
For each (Integer A) from 1 to 50, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Custom value of (Triggering unit)) Not equal to (Integer A)
-
Then - Actions
-
Unit - Set the custom value of (Triggering unit) to (Integer A)
-
Else - Actions
-
Set Charge_Caster[(Custom value of (Triggering unit))] = (Position of (Triggering unit))
-
Set Charge_Target[(Custom value of (Triggering unit))] = (Position of (Target unit of ability being cast))
-
Set Range_Between_Units[(Custom value of (Triggering unit))] = (Distance between Charge_Caster[(Custom value of (Triggering unit))] and Charge_Target[(Custom value of (Triggering unit))])
-
Unit - Order (Triggering unit) to Stop
-
Unit - Make (Triggering unit) face Charge_Target[(Custom value of (Triggering unit))] over 0.00 seconds
-
For each (Integer A) from 1 to 100, do (Actions)
-
Loop - Actions
-
Set RemovablePoint = (Charge_Caster[(Custom value of (Triggering unit))] offset by (Range_Between_Units[(Custom value of (Triggering unit))] / 100.00) towards (Facing of (Triggering unit)) degrees)
-
Unit - Move (Triggering unit) instantly to RemovablePoint
-
Custom script: call RemoveLocation(udg_RemovablePoint)
-
Wait 0.01 seconds
-
Wait 1.01 seconds
-
Custom script: call RemoveLocation(udg_Charge_Caster[GetUnitUserData(GetTriggerUnit())])
-
Custom script: call RemoveLocation(udg_Charge_Target[GetUnitUserData(GetTriggerUnit())])
-
Unit - Set the custom value of (Triggering unit) to 0
Extras: It's MUI (With 50 units. change the first "For each.." to more if u want it to be for more units), the unit is charging over 1 second (Tell me if u want me to change) and there are no leaks, with my knowledge.
[EDIT2]: Forgot the variables ^^ here they are: RemoveLocation (point), Range_Between_Units
[*] (real array), Charge_Caster[] (point array), Charge_Target[] (point array)
[EDIT3]: hmm.. i tested it now.. didn't work. the unit just stopped and faced the target :/ trying to fix it
[EDIT4]: got the prob now.. can't solve it thou.. need to use JASS to make this spell, sadly. Else it will look very weird.. :S Still working on fixing it with GUI ^^
[EDIT5]: yey.. got an idea ^^ gonna test it and put it here
[EDIT5]: my other version did work, but i found another version by Phish-Paste here:
http://www.hiveworkshop.com/resources_new/spells/861/
The triggers are:
-
Charge
-
Events
-
Unit - A unit Begins casting an ability
-
Conditions
-
(Ability being cast) Equal to Charge
-
Actions
-
Set ChargeUnitArray[1] = (Casting unit)
-
Set ChargeUnitArray[2] = (Target unit of ability being cast)
-
Set ChargePointArray[1] = (Position of ChargeUnitArray[1])
-
Set ChargePointArray[2] = (Position of ChargeUnitArray[2])
-
Set ChargeRealArray[1] = (Distance between ChargePointArray[1] and ChargePointArray[2])
-
Unit - Make ChargeUnitArray[1] face ChargeUnitArray[2] over 0.00 seconds
-
Wait 0.10 seconds
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Distance between ChargePointArray[1] and ChargePointArray[2]) Less than or equal to 350.00
-
Then - Actions
-
Game - Display to (All players controlled by a ((Owner of ChargeUnitArray[1]) controller) player) for 10.00 seconds the text: Too Close To Charge...
-
Unit - Order ChargeUnitArray[1] to Stop
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
Custom script: call RemoveLocation(udg_ChargePointArray[2])
-
Set ChargeUnitArray[1] = No unit
-
Set ChargeUnitArray[2] = No unit
-
Else - Actions
-
Wait 0.10 seconds
-
Unit - Pause ChargeUnitArray[1]
-
Unit - Turn collision for ChargeUnitArray[1] Off
-
Unit - Make ChargeUnitArray[1] Invulnerable
-
Trigger - Turn on Charge Dash <gen>
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
Custom script: call RemoveLocation(udg_ChargePointArray[2])
-
Charge Dash
-
Events
-
Time - Every 0.03 seconds of game time
-
Conditions
-
Actions
-
Set ChargePointArray[1] = (Position of ChargeUnitArray[1])
-
Set ChargePointArray[2] = (Position of ChargeUnitArray[2])
-
Unit - Move ChargeUnitArray[1] instantly to (ChargePointArray[1] offset by 40.00 towards (Facing of ChargeUnitArray[1]) degrees)
-
Unit - Make ChargeUnitArray[1] face ChargeUnitArray[2] over 0.00 seconds
-
Set ChargeRealArray[1] = (Distance between ChargePointArray[1] and ChargePointArray[2])
-
Special Effect - Create a special effect at ChargePointArray[1] using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
-
Special Effect - Destroy (Last created special effect)
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
Custom script: call RemoveLocation(udg_ChargePointArray[2])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ChargeRealArray[1] Less than or equal to 100.00
-
Then - Actions
-
Unit - Make ChargeUnitArray[1] Vulnerable
-
Unit - Unpause ChargeUnitArray[1]
-
Unit - Turn collision for ChargeUnitArray[1] On
-
Unit - Turn collision for ChargeUnitArray[2] Off
-
Trigger - Turn off (This trigger)
-
Trigger - Turn on Knock Back <gen>
-
Set ChargeRealArray[2] = 325.00
-
Set ChargeRealArray[3] = 0.00
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(ChargeUnitArray[2] is dead) Equal to True
-
Then - Actions
-
Trigger - Turn off (This trigger)
-
Unit - Make ChargeUnitArray[1] Vulnerable
-
Unit - Unpause ChargeUnitArray[1]
-
Unit - Turn collision for ChargeUnitArray[1] On
-
Unit - Turn collision for ChargeUnitArray[2] On
-
Set ChargeUnitArray[1] = No unit
-
Set ChargeUnitArray[2] = No unit
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
Custom script: call RemoveLocation(udg_ChargePointArray[2])
-
Else - Actions
-
Knock Back
-
Events
-
Time - Every 0.03 seconds of game time
-
Conditions
-
Actions
-
Set ChargePointArray[1] = (Position of ChargeUnitArray[2])
-
Set ChargeRealArray[3] = (ChargeRealArray[3] + 25.00)
-
Special Effect - Create a special effect at ChargePointArray[1] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
-
Special Effect - Destroy (Last created special effect)
-
Unit - Move ChargeUnitArray[2] instantly to (ChargePointArray[1] offset by 25.00 towards (Facing of ChargeUnitArray[1]) degrees)
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ChargeRealArray[3] Greater than or equal to ChargeRealArray[2]
-
Then - Actions
-
Unit - Unpause ChargeUnitArray[1]
-
Unit - Turn collision for ChargeUnitArray[2] On
-
Trigger - Turn off (This trigger)
-
Unit - Cause ChargeUnitArray[1] to damage ChargeUnitArray[2], dealing (100.00 x (Real((Level of Charge for ChargeUnitArray[1])))) damage of attack type Spells and damage type Normal
-
Trigger - Turn off Charge Dash <gen>
-
Set ChargeUnitArray[1] = No unit
-
Set ChargeUnitArray[2] = No unit
-
Custom script: call RemoveLocation(udg_ChargePointArray[1])
-
Custom script: call RemoveLocation(udg_ChargePointArray[2])
-
Else - Actions
The ability he's using is Storm Bolt.