Moderator
M
Moderator
19:09, 12th Jul 2010
TriggerHappy:
Code and spell were fine.
TriggerHappy:
Code and spell were fine.
Lightning Ball Begin

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to Lightning Path

Actions


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



If - Conditions




LP_Integer[1] Equal to 0



Then - Actions




Trigger - Turn on Lightning Ball Move <gen>



Else - Actions


Set LP_Integer[1] = (LP_Integer[1] + 1)


Set LP_Integer[2] = (LP_Integer[2] + 1)


Set LP_Caster[LP_Integer[2]] = (Triggering unit)


Set LP_Location[LP_Integer[2]] = (Position of LP_Caster[LP_Integer[2]])


Set LP_Location2[LP_Integer[2]] = (Target point of ability being cast)


Set LP_Angle[LP_Integer[2]] = (Angle from LP_Location[LP_Integer[2]] to LP_Location2[LP_Integer[2]])


Set LP_Tick[LP_Integer[2]] = 21


Unit - Create 1 Lightning Ball Dummy for (Owner of LP_Caster[LP_Integer[2]]) at LP_Location[LP_Integer[2]] facing LP_Angle[LP_Integer[2]] degrees


Set LP_Dummy[LP_Integer[2]] = (Last created unit)


Set LP_DummyPoint[LP_Integer[2]] = (Position of LP_Dummy[LP_Integer[2]])


Unit Group - Add (Last created unit) to LP_DummyGroup[LP_Integer[2]]


Lightning - Create a Forked Lightning lightning effect from source LP_Location[LP_Integer[2]] to target LP_DummyPoint[LP_Integer[2]]


Set LP_Lightning[LP_Integer[2]] = (Last created lightning effect)


Custom script: call RemoveLocation ( udg_LP_Location2[udg_LP_Integer[2]] )


Custom script: call RemoveLocation ( udg_LP_DummyPoint[udg_LP_Integer[2]] )
Lightning Ball Move

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer LP_Integer[3]) from 1 to LP_Integer[2], do (Actions)



Loop - Actions




Unit Group - Pick every unit in LP_DummyGroup[LP_Integer[3]] and do (Actions)





Loop - Actions






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







If - Conditions








LP_Tick[LP_Integer[3]] Greater than 0







Then - Actions








Set LP_DummyPoint[LP_Integer[3]] = (Position of (Picked unit))








Set LP_Location2[LP_Integer[3]] = (LP_DummyPoint[LP_Integer[3]] offset by 50.00 towards LP_Angle[LP_Integer[3]] degrees)








Special Effect - Create a special effect at LP_DummyPoint[LP_Integer[3]] using Abilities\Weapons\Bolt\BoltImpact.mdl








Special Effect - Destroy (Last created special effect)








Unit - Move LP_Dummy[LP_Integer[3]] instantly to LP_Location2[LP_Integer[3]]








Lightning - Move LP_Lightning[LP_Integer[3]] to source LP_Location[LP_Integer[3]] and target LP_DummyPoint[LP_Integer[3]]








Set LP_Strike[LP_Integer[3]] = (Units within 125.00 of LP_DummyPoint[LP_Integer[3]] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy








Unit Group - Pick every unit in LP_Strike[LP_Integer[3]] and do (Actions)









Loop - Actions










Set LP_PickedUnit[LP_Integer[3]] = (Picked unit)










Set LP_PositionPickedUnit[LP_Integer[3]] = (Position of LP_PickedUnit[LP_Integer[3]])










Unit - Create 1 Lightning Ball Dummy Slower for (Owner of LP_Caster[LP_Integer[3]]) at LP_DummyPoint[LP_Integer[3]] facing LP_Angle[LP_Integer[3]] degrees










Unit - Hide (Last created unit)










Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)










Unit - Add a 2.00 second Generic expiration timer to (Last created unit)










Special Effect - Create a special effect at LP_PositionPickedUnit[LP_Integer[3]] using Abilities\Weapons\Bolt\BoltImpact.mdl










Special Effect - Destroy (Last created special effect)










Unit - Cause LP_Caster[LP_Integer[3]] to damage (Picked unit), dealing (75.00 x (Real((Level of Lightning Path for LP_Caster[LP_Integer[3]])))) damage of attack type Spells and damage type Normal










Unit Group - Add (Picked unit) to LP_NonStrike[LP_Integer[3]]








Custom script: call RemoveLocation ( udg_LP_DummyPoint[udg_LP_Integer[3]] )








Custom script: call RemoveLocation ( udg_LP_Location2[udg_LP_Integer[3]] )








Custom script: call RemoveLocation ( udg_LP_PositionPickedUnit[udg_LP_Integer[3]] )








Custom script: call DestroyGroup ( udg_LP_Strike[udg_LP_Integer[3]] )








Set LP_Tick[LP_Integer[3]] = (LP_Tick[LP_Integer[3]] - 1)







Else - Actions






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







If - Conditions








LP_Tick[LP_Integer[3]] Equal to 0







Then - Actions








Unit Group - Remove LP_Dummy[LP_Integer[3]] from LP_DummyGroup[LP_Integer[3]]








Unit - Kill (Picked unit)








Lightning - Destroy LP_Lightning[LP_Integer[3]]








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









If - Conditions










(LP_DummyGroup[LP_Integer[3]] is empty) Equal to True









Then - Actions










Set LP_Integer[1] = (LP_Integer[1] - 1)










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











If - Conditions












LP_Integer[1] Equal to 0











Then - Actions












Set LP_Integer[2] = 0












Unit Group - Remove all units from LP_NonStrike[LP_Integer[3]]












Trigger - Turn off (This trigger)











Else - Actions









Else - Actions







Else - Actions