• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

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 24
Joined
Feb 9, 2009
Messages
1,787
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.
 
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 24
Joined
Feb 9, 2009
Messages
1,787
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