• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Spell with Damage over time

Status
Not open for further replies.
Level 9
Joined
Apr 22, 2020
Messages
430
Well to be more specific i want the Forked lightning ability to have a damage over time for like 10 damage per second that last through 10 seconds does anyone know how to trigger this?
 
Level 9
Joined
Apr 22, 2020
Messages
430
You would need to trigger it.
Detect the cast > Get Units within X around Target >apply lightning to viable targets & set them up for damage over time (ex dynamic indexing.) > tick.

I was fiddling with lightning earlier so I don't mind whipping this up for you.
Pardon me but i can't really understand what exactly is the trigger that i have make. Can you post me a trigger of it?
 
Level 25
Joined
Feb 9, 2009
Messages
1,798
What version are you using?

Config
  • ReSp Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set ReSp_Config_Spell_ID[1] = Forked Over Time ReSp
      • Set ReSp_Config_Spell_ID[2] = Dummy spell 2 ReSp
      • Set ReSp_Config_Buff = Forked over time ReSp
      • Set ReSp_Config_Dummy_Type = Caster Dummy Unit ReSp
      • Set ReSp_Config_Duration[1] = 10.00
      • Set ReSp_Config_Duration[2] = 10.00
      • Set ReSp_Config_Duration[3] = 10.00
      • Set ReSp_Config_Damage_Distribute[1] = 100.00
      • Set ReSp_Config_Damage_Distribute[2] = 175.00
      • Set ReSp_Config_Damage_Distribute[3] = 225.00
      • Set ReSp_Config_Jump_Max[1] = 3
      • Set ReSp_Config_Jump_Max[2] = 5
      • Set ReSp_Config_Jump_Max[3] = 7
      • Set ReSp_Config_Jump_AOE[1] = 300.00
      • Set ReSp_Config_Jump_AOE[2] = 300.00
      • Set ReSp_Config_Jump_AOE[3] = 300.00
      • Set ReSp_Config_Height[0] = 40.00
      • Set ReSp_Config_Lightning_Type = Forked Lightning
      • Set ReSp_Config_Lightning_Delay = 0.70
      • Set ReSp_A_Point[0] = (Center of (Playable map area))
      • Unit - Create 1 Albatross for Neutral Passive at ReSp_A_Point[0] facing Default building facing degrees
      • Unit - Add ReSp_Config_Spell_ID[1] to (Last created unit)
      • Unit - Add ReSp_Config_Spell_ID[2] to (Last created unit)
      • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
Cast
  • ReSp Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to ReSp_Config_Spell_ID[1]
      • (Current order of (Triggering unit)) Equal to (Order(starfall))
    • Actions
      • -------- --------
      • -------- --------
      • Set ReSp_A_Unit[0] = (Triggering unit)
      • Set ReSp_A_Spell_Level = (Level of ReSp_Config_Spell_ID[1] for ReSp_A_Unit[0])
      • Set ReSp_A_Unit[1] = (Target unit of ability being cast)
      • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[0])
      • Set ReSp_A_Point[0] = (Position of ReSp_A_Unit[1])
      • -------- --------
      • Unit - Create 1 ReSp_Config_Dummy_Type for (Triggering player) at ReSp_A_Point[0] facing Default building facing degrees
      • Set ReSp_A_Unit[2] = (Last created unit)
      • Unit - Add ReSp_Config_Spell_ID[2] to ReSp_A_Unit[2]
      • Unit - Order ReSp_A_Unit[2] to Undead Necromancer - Cripple ReSp_A_Unit[1]
      • Special Effect - Create a special effect attached to the origijn of ReSp_A_Unit[1] using Abilities\Weapons\Bolt\BoltImpact.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- --------
      • Set ReSp_B_Jumps = (ReSp_Config_Jump_Max[ReSp_A_Spell_Level] - 1)
      • -------- --------
      • Set ReSp_A_Index = (ReSp_A_Index + 1)
      • -------- --------
      • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[2])
      • Set ReSp_XYZ[1] = (X of ReSp_A_Point[2])
      • Set ReSp_XYZ[2] = (Y of ReSp_A_Point[2])
      • Set ReSp_XYZ[3] = (((Current flying height of ReSp_A_Unit[0]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
      • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[0])
      • Set ReSp_XYZ2[1] = (X of ReSp_A_Point[0])
      • Set ReSp_XYZ2[2] = (Y of ReSp_A_Point[0])
      • Set ReSp_XYZ2[3] = ((Current flying height of ReSp_A_Unit[1]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
      • Custom script: set udg_ReSp_B_Lightning[(udg_ReSp_A_Index)] = AddLightningEx(udg_ReSp_Config_Lightning_Type, true, udg_ReSp_XYZ[1], udg_ReSp_XYZ[2], udg_ReSp_XYZ[3], udg_ReSp_XYZ2[1], udg_ReSp_XYZ2[2], udg_ReSp_XYZ2[3])
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
      • -------- --------
      • Set ReSp_B_Caster[ReSp_A_Index] = ReSp_A_Unit[0]
      • Set ReSp_B_Target_Previous[ReSp_A_Index] = ReSp_A_Unit[0]
      • Set ReSp_B_Target[ReSp_A_Index] = ReSp_A_Unit[1]
      • Set ReSp_B_Damage_Distribute[ReSp_A_Index] = ReSp_Config_Damage_Distribute[ReSp_A_Spell_Level]
      • Set ReSp_B_Duratiion[ReSp_A_Index] = ReSp_Config_Duration[ReSp_A_Spell_Level]
      • Set ReSp_B_Lightning_Delay[ReSp_A_Index] = ReSp_Config_Lightning_Delay
      • Set ReSp_B_Lightning_State[ReSp_A_Index] = True
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ReSp_A_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on ReSp Periodic <gen>
        • Else - Actions
      • -------- --------
      • For each (Integer ReSp_A_Loop_Cast) from 1 to (ReSp_Config_Jump_Max[ReSp_A_Spell_Level] - 1), do (Actions)
        • Loop - Actions
          • Set ReSp_A_Unit[3] = No unit
          • Set ReSp_A_Point[1] = (Position of ReSp_A_Unit[1])
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units within ReSp_Config_Jump_AOE[ReSp_A_Spell_Level] of ReSp_A_Point[1]) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is A structure) Equal to False
                  • ((Picked unit) is Magic Immune) Equal to False
                  • ((Picked unit) is alive) Equal to True
                  • ((Picked unit) belongs to an enemy of (Owner of ReSp_A_Unit[0])) Equal to True
                  • (Picked unit) Not equal to ReSp_A_Unit[1]
                  • ((Picked unit) has buff ReSp_Config_Buff) Equal to False
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_A_Unit[3] Equal to No unit
                    • Then - Actions
                      • Set ReSp_A_Unit[3] = (Picked unit)
                    • Else - Actions
                  • Set ReSp_A_Unit[4] = (Picked unit)
                  • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[3])
                  • Set ReSp_A_Point[3] = (Position of ReSp_A_Unit[1])
                  • Set ReSp_A_Point[4] = (Position of ReSp_A_Unit[4])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between ReSp_A_Point[3] and ReSp_A_Point[4]) Less than or equal to (Distance between ReSp_A_Point[3] and ReSp_A_Point[2])
                    • Then - Actions
                      • Set ReSp_A_Unit[3] = ReSp_A_Unit[4]
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[4])
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[3])
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
                • Else - Actions
          • Custom script: call RemoveLocation(udg_ReSp_A_Point[1])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ReSp_B_Jumps Greater than 0
              • ReSp_A_Unit[3] Not equal to No unit
            • Then - Actions
              • Set ReSp_B_Jumps = (ReSp_B_Jumps - 1)
              • Unit - Order ReSp_A_Unit[2] to Undead Necromancer - Cripple ReSp_A_Unit[3]
              • Special Effect - Create a special effect attached to the origijn of ReSp_A_Unit[3] using Abilities\Weapons\Bolt\BoltImpact.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set ReSp_A_Point[1] = (Position of ReSp_A_Unit[0])
              • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[3])
              • -------- Negotiate with the triggers about where the lightning will be created --------
              • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[1])
              • Set ReSp_XYZ[1] = (X of ReSp_A_Point[1])
              • Set ReSp_XYZ[2] = (Y of ReSp_A_Point[1])
              • Set ReSp_XYZ[3] = ((Current flying height of ReSp_A_Unit[1]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
              • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[2])
              • Set ReSp_XYZ2[1] = (X of ReSp_A_Point[2])
              • Set ReSp_XYZ2[2] = (Y of ReSp_A_Point[2])
              • Set ReSp_XYZ2[3] = (((Current flying height of ReSp_A_Unit[3]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
              • -------- --------
              • Set ReSp_A_Index = (ReSp_A_Index + 1)
              • -------- --------
              • -------- Create some lighning like some rad 90's wizard on some dad's van --------
              • Custom script: set udg_ReSp_B_Lightning[(udg_ReSp_A_Index)] = AddLightningEx(udg_ReSp_Config_Lightning_Type, true, udg_ReSp_XYZ[1], udg_ReSp_XYZ[2], udg_ReSp_XYZ[3], udg_ReSp_XYZ2[1], udg_ReSp_XYZ2[2], udg_ReSp_XYZ2[3])
              • -------- --------
              • Set ReSp_B_Caster[ReSp_A_Index] = ReSp_A_Unit[0]
              • Set ReSp_B_Target[ReSp_A_Index] = ReSp_A_Unit[3]
              • Set ReSp_B_Target_Previous[ReSp_A_Index] = ReSp_A_Unit[0]
              • Set ReSp_B_Damage_Distribute[ReSp_A_Index] = ReSp_Config_Damage_Distribute[ReSp_A_Spell_Level]
              • Set ReSp_B_Duratiion[ReSp_A_Index] = ReSp_Config_Duration[ReSp_A_Spell_Level]
              • Set ReSp_B_Lightning_Delay[ReSp_A_Index] = ReSp_Config_Lightning_Delay
              • Set ReSp_B_Lightning_State[ReSp_A_Index] = True
              • -------- --------
              • -------- --------
              • Custom script: call RemoveLocation(udg_ReSp_A_Point[1])
              • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
            • Else - Actions
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
Periodic
  • ReSp Periodic
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer ReSp_A_Loop) from 1 to ReSp_A_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ReSp_B_Duratiion[ReSp_A_Loop] Greater than 0.00
            • Then - Actions
              • Set ReSp_B_Duratiion[ReSp_A_Loop] = (ReSp_B_Duratiion[ReSp_A_Loop] - 0.05)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (ReSp_B_Duratiion[ReSp_A_Loop] mod 1.00) Equal to 0.05
                • Then - Actions
                  • Unit - Cause ReSp_B_Caster[ReSp_A_Loop] to damage ReSp_B_Target[ReSp_A_Loop], dealing (ReSp_B_Damage_Distribute[ReSp_A_Loop] / ReSp_Config_Duration[(Level of ReSp_Config_Spell_ID[1] for ReSp_B_Caster[ReSp_A_Loop])]) damage of attack type Spells and damage type Universal
                  • Special Effect - Create a special effect attached to the origin of ReSp_B_Target[ReSp_A_Loop] using Abilities\Weapons\ChimaeraLightningMissile\ChimaeraLightningMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_B_Lightning_Delay[ReSp_A_Loop] Greater than 0.00
                • Then - Actions
                  • Set ReSp_B_Lightning_Delay[ReSp_A_Loop] = (ReSp_B_Lightning_Delay[ReSp_A_Loop] - 0.05)
                  • Lightning - Change color of ReSp_B_Lightning[ReSp_A_Loop] to (1.00 1.00 1.00) with ((1.00 / ReSp_Config_Lightning_Delay) x ReSp_B_Lightning_Delay[ReSp_A_Loop]) alpha
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_B_Target_Previous[ReSp_A_Loop] Not equal to No unit
                    • Then - Actions
                      • Set ReSp_A_Point[4] = (Position of ReSp_B_Target_Previous[ReSp_A_Loop])
                      • Set ReSp_A_Point[5] = (Position of ReSp_B_Target[ReSp_A_Loop])
                      • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[4])
                      • Set ReSp_XYZ[4] = (X of ReSp_A_Point[4])
                      • Set ReSp_XYZ[5] = (Y of ReSp_A_Point[4])
                      • Set ReSp_XYZ[6] = ((Current flying height of ReSp_B_Target_Previous[ReSp_A_Loop]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
                      • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[5])
                      • Set ReSp_XYZ2[4] = (X of ReSp_A_Point[5])
                      • Set ReSp_XYZ2[5] = (Y of ReSp_A_Point[5])
                      • Set ReSp_XYZ2[6] = (((Current flying height of ReSp_B_Target[ReSp_A_Loop]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
                      • Custom script: call MoveLightningEx(udg_ReSp_B_Lightning[(udg_ReSp_A_Loop)], true, udg_ReSp_XYZ[4], udg_ReSp_XYZ[5], udg_ReSp_XYZ[6], udg_ReSp_XYZ2[4], udg_ReSp_XYZ2[5], udg_ReSp_XYZ2[6])
                      • Custom script: call RemoveLocation(udg_ReSp_A_Point[4])
                      • Custom script: call RemoveLocation(udg_ReSp_A_Point[5])
                    • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_B_Lightning_State[ReSp_A_Loop] Equal to True
                    • Then - Actions
                      • Lightning - Destroy ReSp_B_Lightning[ReSp_A_Loop]
                      • Set ReSp_B_Lightning_State[ReSp_A_Loop] = False
                    • Else - Actions
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_B_Lightning_State[ReSp_A_Loop] Equal to True
                • Then - Actions
                  • Lightning - Destroy ReSp_B_Lightning[ReSp_A_Loop]
                  • Set ReSp_B_Lightning_State[ReSp_A_Loop] = False
                • Else - Actions
              • -------- --------
              • Set ReSp_B_Target_Previous[ReSp_A_Loop] = No unit
              • Set ReSp_B_Caster[ReSp_A_Loop] = ReSp_B_Caster[ReSp_A_Index]
              • Set ReSp_B_Damage_Distribute[ReSp_A_Loop] = ReSp_B_Damage_Distribute[ReSp_A_Index]
              • Set ReSp_B_Duratiion[ReSp_A_Loop] = ReSp_B_Duratiion[ReSp_A_Index]
              • Set ReSp_B_Lightning_Delay[ReSp_A_Loop] = ReSp_B_Lightning_Delay[ReSp_A_Index]
              • Set ReSp_B_Target[ReSp_A_Loop] = ReSp_B_Target[ReSp_A_Index]
              • Set ReSp_B_Target_Previous[ReSp_A_Loop] = ReSp_B_Target_Previous[ReSp_A_Index]
              • Set ReSp_B_Lightning[ReSp_A_Loop] = ReSp_B_Lightning[ReSp_A_Index]
              • Set ReSp_B_Lightning_State[ReSp_A_Loop] = ReSp_B_Lightning_State[ReSp_A_Index]
              • Set ReSp_A_Index = (ReSp_A_Index - 1)
              • Set ReSp_A_Loop = (ReSp_A_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_A_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
 
Level 9
Joined
Apr 22, 2020
Messages
430
What version are you using?

Config
  • ReSp Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set ReSp_Config_Spell_ID[1] = Forked Over Time ReSp
      • Set ReSp_Config_Spell_ID[2] = Dummy spell 2 ReSp
      • Set ReSp_Config_Buff = Forked over time ReSp
      • Set ReSp_Config_Dummy_Type = Caster Dummy Unit ReSp
      • Set ReSp_Config_Duration[1] = 10.00
      • Set ReSp_Config_Duration[2] = 10.00
      • Set ReSp_Config_Duration[3] = 10.00
      • Set ReSp_Config_Damage_Distribute[1] = 100.00
      • Set ReSp_Config_Damage_Distribute[2] = 175.00
      • Set ReSp_Config_Damage_Distribute[3] = 225.00
      • Set ReSp_Config_Jump_Max[1] = 3
      • Set ReSp_Config_Jump_Max[2] = 5
      • Set ReSp_Config_Jump_Max[3] = 7
      • Set ReSp_Config_Jump_AOE[1] = 300.00
      • Set ReSp_Config_Jump_AOE[2] = 300.00
      • Set ReSp_Config_Jump_AOE[3] = 300.00
      • Set ReSp_Config_Height[0] = 40.00
      • Set ReSp_Config_Lightning_Type = Forked Lightning
      • Set ReSp_Config_Lightning_Delay = 0.70
      • Set ReSp_A_Point[0] = (Center of (Playable map area))
      • Unit - Create 1 Albatross for Neutral Passive at ReSp_A_Point[0] facing Default building facing degrees
      • Unit - Add ReSp_Config_Spell_ID[1] to (Last created unit)
      • Unit - Add ReSp_Config_Spell_ID[2] to (Last created unit)
      • Unit - Add a 0.01 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
Cast
  • ReSp Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to ReSp_Config_Spell_ID[1]
      • (Current order of (Triggering unit)) Equal to (Order(starfall))
    • Actions
      • -------- --------
      • -------- --------
      • Set ReSp_A_Unit[0] = (Triggering unit)
      • Set ReSp_A_Spell_Level = (Level of ReSp_Config_Spell_ID[1] for ReSp_A_Unit[0])
      • Set ReSp_A_Unit[1] = (Target unit of ability being cast)
      • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[0])
      • Set ReSp_A_Point[0] = (Position of ReSp_A_Unit[1])
      • -------- --------
      • Unit - Create 1 ReSp_Config_Dummy_Type for (Triggering player) at ReSp_A_Point[0] facing Default building facing degrees
      • Set ReSp_A_Unit[2] = (Last created unit)
      • Unit - Add ReSp_Config_Spell_ID[2] to ReSp_A_Unit[2]
      • Unit - Order ReSp_A_Unit[2] to Undead Necromancer - Cripple ReSp_A_Unit[1]
      • Special Effect - Create a special effect attached to the origijn of ReSp_A_Unit[1] using Abilities\Weapons\Bolt\BoltImpact.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- --------
      • Set ReSp_B_Jumps = (ReSp_Config_Jump_Max[ReSp_A_Spell_Level] - 1)
      • -------- --------
      • Set ReSp_A_Index = (ReSp_A_Index + 1)
      • -------- --------
      • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[2])
      • Set ReSp_XYZ[1] = (X of ReSp_A_Point[2])
      • Set ReSp_XYZ[2] = (Y of ReSp_A_Point[2])
      • Set ReSp_XYZ[3] = (((Current flying height of ReSp_A_Unit[0]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
      • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[0])
      • Set ReSp_XYZ2[1] = (X of ReSp_A_Point[0])
      • Set ReSp_XYZ2[2] = (Y of ReSp_A_Point[0])
      • Set ReSp_XYZ2[3] = ((Current flying height of ReSp_A_Unit[1]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
      • Custom script: set udg_ReSp_B_Lightning[(udg_ReSp_A_Index)] = AddLightningEx(udg_ReSp_Config_Lightning_Type, true, udg_ReSp_XYZ[1], udg_ReSp_XYZ[2], udg_ReSp_XYZ[3], udg_ReSp_XYZ2[1], udg_ReSp_XYZ2[2], udg_ReSp_XYZ2[3])
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
      • -------- --------
      • Set ReSp_B_Caster[ReSp_A_Index] = ReSp_A_Unit[0]
      • Set ReSp_B_Target_Previous[ReSp_A_Index] = ReSp_A_Unit[0]
      • Set ReSp_B_Target[ReSp_A_Index] = ReSp_A_Unit[1]
      • Set ReSp_B_Damage_Distribute[ReSp_A_Index] = ReSp_Config_Damage_Distribute[ReSp_A_Spell_Level]
      • Set ReSp_B_Duratiion[ReSp_A_Index] = ReSp_Config_Duration[ReSp_A_Spell_Level]
      • Set ReSp_B_Lightning_Delay[ReSp_A_Index] = ReSp_Config_Lightning_Delay
      • Set ReSp_B_Lightning_State[ReSp_A_Index] = True
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ReSp_A_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on ReSp Periodic <gen>
        • Else - Actions
      • -------- --------
      • For each (Integer ReSp_A_Loop_Cast) from 1 to (ReSp_Config_Jump_Max[ReSp_A_Spell_Level] - 1), do (Actions)
        • Loop - Actions
          • Set ReSp_A_Unit[3] = No unit
          • Set ReSp_A_Point[1] = (Position of ReSp_A_Unit[1])
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units within ReSp_Config_Jump_AOE[ReSp_A_Spell_Level] of ReSp_A_Point[1]) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is A structure) Equal to False
                  • ((Picked unit) is Magic Immune) Equal to False
                  • ((Picked unit) is alive) Equal to True
                  • ((Picked unit) belongs to an enemy of (Owner of ReSp_A_Unit[0])) Equal to True
                  • (Picked unit) Not equal to ReSp_A_Unit[1]
                  • ((Picked unit) has buff ReSp_Config_Buff) Equal to False
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_A_Unit[3] Equal to No unit
                    • Then - Actions
                      • Set ReSp_A_Unit[3] = (Picked unit)
                    • Else - Actions
                  • Set ReSp_A_Unit[4] = (Picked unit)
                  • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[3])
                  • Set ReSp_A_Point[3] = (Position of ReSp_A_Unit[1])
                  • Set ReSp_A_Point[4] = (Position of ReSp_A_Unit[4])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between ReSp_A_Point[3] and ReSp_A_Point[4]) Less than or equal to (Distance between ReSp_A_Point[3] and ReSp_A_Point[2])
                    • Then - Actions
                      • Set ReSp_A_Unit[3] = ReSp_A_Unit[4]
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[4])
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[3])
                  • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
                • Else - Actions
          • Custom script: call RemoveLocation(udg_ReSp_A_Point[1])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ReSp_B_Jumps Greater than 0
              • ReSp_A_Unit[3] Not equal to No unit
            • Then - Actions
              • Set ReSp_B_Jumps = (ReSp_B_Jumps - 1)
              • Unit - Order ReSp_A_Unit[2] to Undead Necromancer - Cripple ReSp_A_Unit[3]
              • Special Effect - Create a special effect attached to the origijn of ReSp_A_Unit[3] using Abilities\Weapons\Bolt\BoltImpact.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set ReSp_A_Point[1] = (Position of ReSp_A_Unit[0])
              • Set ReSp_A_Point[2] = (Position of ReSp_A_Unit[3])
              • -------- Negotiate with the triggers about where the lightning will be created --------
              • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[1])
              • Set ReSp_XYZ[1] = (X of ReSp_A_Point[1])
              • Set ReSp_XYZ[2] = (Y of ReSp_A_Point[1])
              • Set ReSp_XYZ[3] = ((Current flying height of ReSp_A_Unit[1]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
              • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[2])
              • Set ReSp_XYZ2[1] = (X of ReSp_A_Point[2])
              • Set ReSp_XYZ2[2] = (Y of ReSp_A_Point[2])
              • Set ReSp_XYZ2[3] = (((Current flying height of ReSp_A_Unit[3]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
              • -------- --------
              • Set ReSp_A_Index = (ReSp_A_Index + 1)
              • -------- --------
              • -------- Create some lighning like some rad 90's wizard on some dad's van --------
              • Custom script: set udg_ReSp_B_Lightning[(udg_ReSp_A_Index)] = AddLightningEx(udg_ReSp_Config_Lightning_Type, true, udg_ReSp_XYZ[1], udg_ReSp_XYZ[2], udg_ReSp_XYZ[3], udg_ReSp_XYZ2[1], udg_ReSp_XYZ2[2], udg_ReSp_XYZ2[3])
              • -------- --------
              • Set ReSp_B_Caster[ReSp_A_Index] = ReSp_A_Unit[0]
              • Set ReSp_B_Target[ReSp_A_Index] = ReSp_A_Unit[3]
              • Set ReSp_B_Target_Previous[ReSp_A_Index] = ReSp_A_Unit[0]
              • Set ReSp_B_Damage_Distribute[ReSp_A_Index] = ReSp_Config_Damage_Distribute[ReSp_A_Spell_Level]
              • Set ReSp_B_Duratiion[ReSp_A_Index] = ReSp_Config_Duration[ReSp_A_Spell_Level]
              • Set ReSp_B_Lightning_Delay[ReSp_A_Index] = ReSp_Config_Lightning_Delay
              • Set ReSp_B_Lightning_State[ReSp_A_Index] = True
              • -------- --------
              • -------- --------
              • Custom script: call RemoveLocation(udg_ReSp_A_Point[1])
              • Custom script: call RemoveLocation(udg_ReSp_A_Point[2])
            • Else - Actions
      • Custom script: call RemoveLocation(udg_ReSp_A_Point[0])
Periodic
  • ReSp Periodic
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer ReSp_A_Loop) from 1 to ReSp_A_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ReSp_B_Duratiion[ReSp_A_Loop] Greater than 0.00
            • Then - Actions
              • Set ReSp_B_Duratiion[ReSp_A_Loop] = (ReSp_B_Duratiion[ReSp_A_Loop] - 0.05)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (ReSp_B_Duratiion[ReSp_A_Loop] mod 1.00) Equal to 0.05
                • Then - Actions
                  • Unit - Cause ReSp_B_Caster[ReSp_A_Loop] to damage ReSp_B_Target[ReSp_A_Loop], dealing (ReSp_B_Damage_Distribute[ReSp_A_Loop] / ReSp_Config_Duration[(Level of ReSp_Config_Spell_ID[1] for ReSp_B_Caster[ReSp_A_Loop])]) damage of attack type Spells and damage type Universal
                  • Special Effect - Create a special effect attached to the origin of ReSp_B_Target[ReSp_A_Loop] using Abilities\Weapons\ChimaeraLightningMissile\ChimaeraLightningMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_B_Lightning_Delay[ReSp_A_Loop] Greater than 0.00
                • Then - Actions
                  • Set ReSp_B_Lightning_Delay[ReSp_A_Loop] = (ReSp_B_Lightning_Delay[ReSp_A_Loop] - 0.05)
                  • Lightning - Change color of ReSp_B_Lightning[ReSp_A_Loop] to (1.00 1.00 1.00) with ((1.00 / ReSp_Config_Lightning_Delay) x ReSp_B_Lightning_Delay[ReSp_A_Loop]) alpha
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_B_Target_Previous[ReSp_A_Loop] Not equal to No unit
                    • Then - Actions
                      • Set ReSp_A_Point[4] = (Position of ReSp_B_Target_Previous[ReSp_A_Loop])
                      • Set ReSp_A_Point[5] = (Position of ReSp_B_Target[ReSp_A_Loop])
                      • Custom script: set udg_ReSp_Point_Z_Height[0] = GetLocationZ(udg_ReSp_A_Point[4])
                      • Set ReSp_XYZ[4] = (X of ReSp_A_Point[4])
                      • Set ReSp_XYZ[5] = (Y of ReSp_A_Point[4])
                      • Set ReSp_XYZ[6] = ((Current flying height of ReSp_B_Target_Previous[ReSp_A_Loop]) + (ReSp_Config_Height[0] + ReSp_Point_Z_Height[0]))
                      • Custom script: set udg_ReSp_Point_Z_Height[1] = GetLocationZ(udg_ReSp_A_Point[5])
                      • Set ReSp_XYZ2[4] = (X of ReSp_A_Point[5])
                      • Set ReSp_XYZ2[5] = (Y of ReSp_A_Point[5])
                      • Set ReSp_XYZ2[6] = (((Current flying height of ReSp_B_Target[ReSp_A_Loop]) + ReSp_Config_Height[0]) + ReSp_Point_Z_Height[1])
                      • Custom script: call MoveLightningEx(udg_ReSp_B_Lightning[(udg_ReSp_A_Loop)], true, udg_ReSp_XYZ[4], udg_ReSp_XYZ[5], udg_ReSp_XYZ[6], udg_ReSp_XYZ2[4], udg_ReSp_XYZ2[5], udg_ReSp_XYZ2[6])
                      • Custom script: call RemoveLocation(udg_ReSp_A_Point[4])
                      • Custom script: call RemoveLocation(udg_ReSp_A_Point[5])
                    • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ReSp_B_Lightning_State[ReSp_A_Loop] Equal to True
                    • Then - Actions
                      • Lightning - Destroy ReSp_B_Lightning[ReSp_A_Loop]
                      • Set ReSp_B_Lightning_State[ReSp_A_Loop] = False
                    • Else - Actions
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_B_Lightning_State[ReSp_A_Loop] Equal to True
                • Then - Actions
                  • Lightning - Destroy ReSp_B_Lightning[ReSp_A_Loop]
                  • Set ReSp_B_Lightning_State[ReSp_A_Loop] = False
                • Else - Actions
              • -------- --------
              • Set ReSp_B_Target_Previous[ReSp_A_Loop] = No unit
              • Set ReSp_B_Caster[ReSp_A_Loop] = ReSp_B_Caster[ReSp_A_Index]
              • Set ReSp_B_Damage_Distribute[ReSp_A_Loop] = ReSp_B_Damage_Distribute[ReSp_A_Index]
              • Set ReSp_B_Duratiion[ReSp_A_Loop] = ReSp_B_Duratiion[ReSp_A_Index]
              • Set ReSp_B_Lightning_Delay[ReSp_A_Loop] = ReSp_B_Lightning_Delay[ReSp_A_Index]
              • Set ReSp_B_Target[ReSp_A_Loop] = ReSp_B_Target[ReSp_A_Index]
              • Set ReSp_B_Target_Previous[ReSp_A_Loop] = ReSp_B_Target_Previous[ReSp_A_Index]
              • Set ReSp_B_Lightning[ReSp_A_Loop] = ReSp_B_Lightning[ReSp_A_Index]
              • Set ReSp_B_Lightning_State[ReSp_A_Loop] = ReSp_B_Lightning_State[ReSp_A_Index]
              • Set ReSp_A_Index = (ReSp_A_Index - 1)
              • Set ReSp_A_Loop = (ReSp_A_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ReSp_A_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
My God those are some complex triggers i'm currently using the ver 1.24 of WTF and luckily i have my cousin here who has the ver 1.30 of WTF and he told me i can freely use it so that's good for me i guess....
 
Status
Not open for further replies.
Top