Moderator
M
Moderator
Pristimatic Shift v1.3 | Reviewed by Maker | 28th May 2013 | ||||
| APPROVED | ||||
|
PR

Events


Map initialization

Conditions

Actions


-------- CONFIGURING --------


Set PR_Ability = PristmaticRift


Set PR_Buff = Prismatic Rift


Set PR_SFX = Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl


Set PR_Percentage[1] = 15.00


Set PR_Percentage[2] = 20.00


Set PR_Percentage[3] = 25.00


Set PR_Percentage[4] = 30.00


-------- CORE --------


Custom script: set udg_PR_Loop = 0.03125


Trigger - Add to Prismatic Rift Loop <gen> the event (Time - Every PR_Loop seconds of game time)


-------- REDUCE MEMORY LEAK --------


Custom script: call DestroyTrigger( GetTriggeringTrigger())
Prismatic Rift Cast

Events


Unit - A unit Is attacked

Conditions


((Triggering unit) has buff PR_Buff) Equal to True


((Triggering unit) is an illusion) Equal to False


((Unit-type of (Attacking unit)) is A ranged attacker) Equal to False

Actions


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



If - Conditions




(Random percentage) Less than or equal to PR_Percentage[(Level of PR_Ability for (Triggering unit))]



Then - Actions




Set maxIndexKnockback = (maxIndexKnockback + 1)




Set tempPoint1 = (Position of (Triggering unit))




Set tempPoint2 = (Position of (Attacking unit))




Unit - Create 1 Dummy for (Owner of (Triggering unit)) at tempPoint1 facing Default building facing degrees




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




Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Attacking unit)




Set Knockback_Angle[maxIndexKnockback] = (Angle from tempPoint1 to tempPoint2)




Set Knockback_Distance[maxIndexKnockback] = 25




Set Knockback_UnitTarget[maxIndexKnockback] = (Attacking unit)




Special Effect - Create a special effect at tempPoint1 using PR_SFX




Special Effect - Destroy (Last created special effect)




Custom script: call RemoveLocation( udg_tempPoint1)




Custom script: call RemoveLocation( udg_tempPoint2)




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





If - Conditions






maxIndexKnockback Equal to 1





Then - Actions






Trigger - Turn on Prismatic Rift Loop <gen>





Else - Actions



Else - Actions
Prismatic Rift Loop

Events

Conditions

Actions


For each (Integer tempInt) from 1 to maxIndexKnockback, do (Actions)



Loop - Actions




Set tempPoint1 = (Position of Knockback_UnitTarget[tempInt])




Set tempPoint2 = (tempPoint1 offset by (Real(Knockback_Distance[tempInt])) towards Knockback_Angle[tempInt] degrees)




Unit - Move Knockback_UnitTarget[tempInt] instantly to tempPoint2




Custom script: call RemoveLocation( udg_tempPoint1)




Custom script: call RemoveLocation( udg_tempPoint2)




Set Knockback_Distance[tempInt] = (Knockback_Distance[tempInt] - 1)




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





If - Conditions






Knockback_Distance[tempInt] Equal to 0





Then - Actions






Set Knockback_Angle[tempInt] = Knockback_Angle[maxIndexKnockback]






Set Knockback_Distance[tempInt] = Knockback_Distance[maxIndexKnockback]






Set Knockback_UnitTarget[tempInt] = Knockback_UnitTarget[maxIndexKnockback]






Set Knockback_UnitTarget[maxIndexKnockback] = No unit






Set maxIndexKnockback = (maxIndexKnockback - 1)






Set tempInt = (tempInt - 1)






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







If - Conditions








maxIndexKnockback Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions
Prismatic Rift Cast

Events


Unit - A unit Is attacked

Conditions


((Triggering unit) has buff Prismatic Rift ) Equal to True


((Triggering unit) is an illusion) Equal to False


((Unit-type of (Attacking unit)) is A ranged attacker) Equal to False

Actions


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



If - Conditions




(Random integer number between 1 and 100) Less than or equal to (10 + (5 x (Level of PristmaticRift for (Triggering unit))))



Then - Actions




Set maxIndexKnockback = (maxIndexKnockback + 1)




Set tempPoint1 = (Position of (Triggering unit))




Set tempPoint2 = (Position of (Attacking unit))




Unit - Create 1 Dummy for (Owner of (Triggering unit)) at tempPoint1 facing Default building facing degrees




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




Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Attacking unit)




Set Knockback_Angle[maxIndexKnockback] = (Angle from tempPoint1 to tempPoint2)




Custom script: call RemoveLocation( udg_tempPoint1)




Custom script: call RemoveLocation( udg_tempPoint2)




Set Knockback_Distance[maxIndexKnockback] = 25




Set Knockback_UnitTarget[maxIndexKnockback] = (Attacking unit)




Set effectKnockback = Abilities\Weapons\Bolt\BoltImpact.mdl




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





If - Conditions






maxIndexKnockback Equal to 1





Then - Actions






Trigger - Turn on Prismatic Rift Loop <gen>





Else - Actions



Else - Actions
Prismatic Rift Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer tempInt) from 1 to maxIndexKnockback, do (Actions)



Loop - Actions




Set tempPoint1 = (Position of Knockback_UnitTarget[tempInt])




Set tempPoint2 = (tempPoint1 offset by (Real(Knockback_Distance[tempInt])) towards Knockback_Angle[tempInt] degrees)




Unit - Move Knockback_UnitTarget[tempInt] instantly to tempPoint2




Special Effect - Create a special effect at tempPoint2 using effectKnockback




Special Effect - Destroy (Last created special effect)




Custom script: call RemoveLocation( udg_tempPoint1)




Custom script: call RemoveLocation( udg_tempPoint2)




Set Knockback_Distance[tempInt] = (Knockback_Distance[tempInt] - 1)




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





If - Conditions






Knockback_Distance[tempInt] Equal to 0





Then - Actions






Set Knockback_Angle[tempInt] = Knockback_Angle[maxIndexKnockback]






Set Knockback_Distance[tempInt] = Knockback_Distance[maxIndexKnockback]






Set Knockback_UnitTarget[tempInt] = Knockback_UnitTarget[maxIndexKnockback]






Set Knockback_UnitTarget[maxIndexKnockback] = No unit






Set maxIndexKnockback = (maxIndexKnockback - 1)






Set tempInt = (tempInt - 1)






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







If - Conditions








maxIndexKnockback Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions