1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. The long-awaited results for Concept Art Contest #11 have finally been released!
    Dismiss Notice
  3. Join Texturing Contest #30 now in a legendary battle of mythological creatures!
    Dismiss Notice
  4. The 20th iteration of the Terraining Contest is upon us! Join and create exquisite Water Structures for it.
    Dismiss Notice
  5. Hivers united and created a bunch of 2v2 melee maps. Vote for the best in our Melee Mapping Contest #4 - Poll!
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice

Trigger Viewer

Pristmatic Shift v1.4 .w3x
Variables
Initialization
Add lol
Prismatic Rift
PR
Prismatic Rift Cast
Prismatic Rift Loop
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.

		
Name Type Is Array Initial Value
effectKnockback string No
Knockback_Angle real Yes
Knockback_Distance integer Yes
Knockback_UnitTarget unit Yes
maxIndexKnockback integer No
PR_Ability abilcode No
PR_Buff buffcode No
PR_Loop real No
PR_Percentage real Yes
PR_SFX string No
tempInt integer No
tempPoint1 location No
tempPoint2 location No
Add lol
  Events
    Map initialization
  Conditions
  Actions
    Hero - Add 1000000000 experience to Blood Mage 0000 <gen>, Hide level-up graphics
    Visibility - Disable fog of war
    Visibility - Disable black mask
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 (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