Barathrum the Spirit Breaker Spells v1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This spells created by me, they're similar to DotA hero {Barathrum}.
The spells are GUI and MUI.

I've removed the waits, charge now makes the caster look to the target, empowering haste damage trigger now is shorter, the caster of nether strike now will spawn behind the target and he is magic immune during the duration of the spawning.

Please give me credits if you used it.
BY Storm_hih



Triggers:

1.Charge of Darkness

  • Charge
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Charge of Darkness
    • Actions
      • Set ChargeCount = (ChargeCount + 1)
      • Set ChargeEffectType = Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
      • Set ChargeUnit[ChargeCount] = (Triggering unit)
      • Set ChargeTarget[ChargeCount] = (Target unit of ability being cast)
      • Set ChargeTargetPoint[ChargeCount] = (Position of ChargeTarget[ChargeCount])
      • Cinematic - Ping minimap for (All allies of (Owner of ChargeUnit[ChargeCount])) at ChargeTargetPoint[ChargeCount] for 2.00 seconds
      • Custom script: call RemoveLocation (udg_ChargeTargetPoint[udg_ChargeCount])
      • Custom script: if IsUnitEnemy(GetTriggerUnit(), GetLocalPlayer()) then
      • Set ChargeEffectType = <Empty String>
      • Custom script: endif
      • Animation - Reset ChargeUnit[ChargeCount]'s body-part facing
      • Unit - Turn collision for ChargeUnit[ChargeCount] Off
      • Animation - Change ChargeUnit[ChargeCount]'s vertex coloring to (100.00%, 100.00%, 100.00%) with (10.00 + (15.00 x (Real((Level of Charge of Darkness for ChargeUnit[ChargeCount])))))% transparency
      • Animation - Change ChargeUnit[ChargeCount]'s animation speed to (50.00 + (50.00 x (Real((Level of Charge of Darkness for ChargeUnit[ChargeCount])))))% of its original speed
      • Unit - Grant shared vision of ChargeTarget[ChargeCount] to (Owner of ChargeUnit[ChargeCount])
      • Special Effect - Create a special effect attached to the overhead of ChargeTarget[ChargeCount] using ChargeEffectType
      • Set ChargeEffect[ChargeCount] = (Last created special effect)
      • Custom script: call SetUnitAnimationByIndex(udg_ChargeUnit[udg_ChargeCount], 2)
      • Special Effect - Create a special effect attached to the origin of ChargeUnit[ChargeCount] using war3mapImported\ShockwaveMissilePurple.mdx
      • Set ChargeEffect3[ChargeCount] = (Last created special effect)


2.Charge Runing

  • Events
    • Time - Every 0.03 seconds of game time


3.Stopping the Charge



4.Clearing all types of the Dummy

  • Dummy Clear
    • Events
      • Unit - A unit Dies
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Unit-type of (Triggering unit)) Equal to Dummy
          • (Unit-type of (Triggering unit)) Equal to Knockback Dummy
    • Actions
      • Unit - Remove (Triggering unit) from the game


5.Empowering Haste Learn

  • Empowering Haste
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Empowering Haste
      • ((Triggering unit) is in EmpoweringHasteGroup) Not equal to True
    • Actions
      • Unit - Add Haste Damage Level1 to (Triggering unit)
      • Unit Group - Add (Triggering unit) to EmpoweringHasteGroup


6.Empowering Haste Damage

  • Empowering Haste Damage
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in EmpoweringHasteGroup and do (Actions)
        • Loop - Actions
          • Set EmpoweringHasteDamage = ((Current movement speed of (Picked unit)) / (30.00 - (2.00 x (Real((Level of Empowering Haste for (Picked unit)))))))
          • Set EmpoweringHasteDamage = (EmpoweringHasteDamage - (12.00 - (2.00 x (Real((Level of Empowering Haste for (Picked unit)))))))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • EmpoweringHasteDamage Greater than 20.00
            • Then - Actions
              • Set EmpoweringHasteDamage = 20.00
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EmpoweringHasteDamage Less than 1.00
                • Then - Actions
                  • Set EmpoweringHasteDamage = 1.00
                • Else - Actions
          • Unit - Set level of Haste Damage Level1 for (Picked unit) to (Integer(EmpoweringHasteDamage))


7.Greater Bash Chance

  • Greater Bash Trigger
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • (Level of Greater Bash for (Attacking unit)) Greater than 0
      • ((Attacking unit) is in GreaterBashCooldownGroup) Not equal to True
      • ((Attacked unit) belongs to an enemy of (Owner of (Attacking unit))) Equal to True
      • ((Attacked unit) is A structure) Not equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Attacking unit)) Equal to Knockback Dummy
        • Then - Actions
          • Set GreaterBashChance = 17
        • Else - Actions
          • Set GreaterBashChance = (Random integer number between 1 and 100)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • GreaterBashChance Less than or equal to 17
        • Then - Actions
          • Set GreaterBashCount = (GreaterBashCount + 1)
          • Set GreaterBashCaster[GreaterBashCount] = (Attacking unit)
          • Set GreaterBashTarget[GreaterBashCount] = (Attacked unit)
          • Set GreaterBashPoint = (Position of GreaterBashCaster[GreaterBashCount])
          • Set GreaterBashPoint1[GreaterBashCount] = (Position of GreaterBashTarget[GreaterBashCount])
          • Set GreaterBashAngle[GreaterBashCount] = (Angle from GreaterBashPoint to GreaterBashPoint1[GreaterBashCount])
          • Unit Group - Add GreaterBashCaster[GreaterBashCount] to GreaterBashCooldownGroup
          • Unit - Turn collision for GreaterBashTarget[GreaterBashCount] Off
          • Unit - Cause GreaterBashCaster[GreaterBashCount] to damage GreaterBashTarget[GreaterBashCount], dealing (25.00 x (Real((Level of Greater Bash for GreaterBashCaster[GreaterBashCount])))) damage of attack type Magic and damage type Universal
          • Unit - Create 1 Dummy for (Owner of GreaterBashCaster[GreaterBashCount]) at GreaterBashPoint facing 270.00 degrees
          • Set GreaterBashDummy[1] = (Last created unit)
          • Unit - Add Bash Stun to GreaterBashDummy[1]
          • Unit - Set level of Bash Stun for GreaterBashDummy[1] to (Level of Greater Bash for GreaterBashCaster[GreaterBashCount])
          • Unit - Add a 1.00 second Generic expiration timer to GreaterBashDummy[1]
          • Unit - Order GreaterBashDummy[1] to Neutral - Hurl Boulder GreaterBashTarget[GreaterBashCount]
          • Unit - Create 1 Dummy for (Owner of GreaterBashCaster[GreaterBashCount]) at GreaterBashPoint facing 270.00 degrees
          • Set GreaterBashDummy[2] = (Last created unit)
          • Unit - Add a 1.00 second Generic expiration timer to GreaterBashDummy[2]
          • Unit - Add Bash Speed to GreaterBashDummy[2]
          • Unit - Order GreaterBashDummy[2] to Orc Shaman - Bloodlust GreaterBashCaster[GreaterBashCount]
          • Custom script: call RemoveLocation (udg_GreaterBashPoint)
          • Custom script: call RemoveLocation (udg_GreaterBashPoint1[udg_GreaterBashCount])
        • Else - Actions


8.Greater Bash Knockback

  • Greater Bash Knockback
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer GreaterBashLoop) from 1 to GreaterBashCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • GreaterBashStop[GreaterBashLoop] Not equal to 1
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • GreaterBashCounter[GreaterBashLoop] Less than (0.75 + (0.20 x (Real((Level of Greater Bash for GreaterBashCaster[GreaterBashLoop])))))
                • Then - Actions
                  • Set GreaterBashCounter[GreaterBashLoop] = (GreaterBashCounter[GreaterBashLoop] + 0.04)
                  • Set GreaterBashPoint1[GreaterBashLoop] = (Position of GreaterBashCaster[GreaterBashLoop])
                  • Set GreaterBashPoint2[GreaterBashLoop] = (Position of GreaterBashTarget[GreaterBashLoop])
                  • Set GreaterBashPoint3[GreaterBashLoop] = (GreaterBashPoint2[GreaterBashLoop] offset by (15.00 - (GreaterBashCounter[GreaterBashLoop] x 10.00)) towards GreaterBashAngle[GreaterBashLoop] degrees)
                  • Destructible - Pick every destructible within 150.00 of GreaterBashPoint3[GreaterBashLoop] and do (Actions)
                    • Loop - Actions
                      • Destructible - Kill (Picked destructible)
                  • Special Effect - Create a special effect attached to the chest of GreaterBashTarget[GreaterBashLoop] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call SetUnitX(udg_GreaterBashTarget[udg_GreaterBashLoop] , GetLocationX(udg_GreaterBashPoint3[udg_GreaterBashLoop]) )
                  • Custom script: call SetUnitY(udg_GreaterBashTarget[udg_GreaterBashLoop] , GetLocationY(udg_GreaterBashPoint3[udg_GreaterBashLoop]) )
                  • Custom script: call RemoveLocation (udg_GreaterBashPoint1[udg_GreaterBashLoop])
                  • Custom script: call RemoveLocation (udg_GreaterBashPoint2[udg_GreaterBashLoop])
                  • Custom script: call RemoveLocation (udg_GreaterBashPoint3[udg_GreaterBashLoop])
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • GreaterBashCounter[GreaterBashLoop] Greater than or equal to (0.75 + (0.20 x (Real((Level of Greater Bash for GreaterBashCaster[GreaterBashLoop])))))
                    • Then - Actions
                      • Set GreaterBashStop[GreaterBashLoop] = 1
                      • Unit - Turn collision for GreaterBashTarget[GreaterBashLoop] Off
                      • Set GreaterBashTarget[GreaterBashLoop] = No unit
                    • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • GreaterBashCooldownStop[GreaterBashLoop] Not equal to 1
            • Then - Actions
              • Set GreaterBashCooldown[GreaterBashLoop] = (GreaterBashCooldown[GreaterBashLoop] + 0.03)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • GreaterBashCooldown[GreaterBashLoop] Greater than or equal to 1.50
                • Then - Actions
                  • Set GreaterBashCooldownStop[GreaterBashLoop] = 1
                  • Unit Group - Remove GreaterBashCaster[GreaterBashLoop] from GreaterBashCooldownGroup
                  • Set GreaterBashCaster[GreaterBashLoop] = No unit
                • Else - Actions
            • Else - Actions


9.Nether Strike Cast

  • Nether Strike
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Nether Strike
    • Actions
      • Set NetherCount = (NetherCount + 1)
      • Set NetherCaster[NetherCount] = (Triggering unit)
      • Set NetherTarget[NetherCount] = (Target unit of ability being cast)
      • Set NetherPoint[NetherCount] = (Position of NetherCaster[NetherCount])
      • Set NetherTargetPoint = (Position of NetherTarget[NetherCount])
      • Set NetherAngle[NetherCount] = (Angle from NetherPoint[NetherCount] to NetherTargetPoint)
      • Custom script: call RemoveLocation (udg_NetherPoint[udg_NetherCount])
      • Custom script: call RemoveLocation (udg_NetherTargetPoint)
      • Unit - Add classification of Magic Immune to NetherCaster[NetherCount]
      • Unit Group - Add NetherTarget[NetherCount] to NetherGroup


10.Nether Strike color and damage

  • Nether Strike Damage
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • For each (Integer NetherLoop) from 1 to NetherCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • NetherStop[NetherLoop] Not equal to 1
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • NetherColor[NetherLoop] Less than 100.00
                • Then - Actions
                  • Set NetherColor[NetherLoop] = (NetherColor[NetherLoop] + 4.00)
                  • Animation - Change NetherCaster[NetherLoop]'s vertex coloring to (100.00%, 100.00%, 100.00%) with NetherColor[NetherLoop]% transparency
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • NetherColor[NetherLoop] Greater than or equal to 100.00
                    • Then - Actions
                      • Set NetherStop[NetherLoop] = 1
                      • Set NetherPoint[NetherLoop] = ((Position of NetherTarget[NetherLoop]) offset by 120.00 towards NetherAngle[NetherLoop] degrees)
                      • Unit - Move NetherCaster[NetherLoop] instantly to NetherPoint[NetherLoop]
                      • Unit - Make NetherCaster[NetherLoop] face NetherTarget[NetherLoop] over 0.01 seconds
                      • Unit - Order NetherCaster[NetherLoop] to Attack NetherTarget[NetherLoop]
                      • Animation - Change NetherCaster[NetherLoop]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                      • Unit - Cause NetherCaster[NetherLoop] to damage NetherTarget[NetherLoop], dealing (50.00 + (100.00 x (Real((Level of Nether Strike for NetherCaster[NetherLoop]))))) damage of attack type Magic and damage type Universal
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Level of Greater Bash for NetherCaster[NetherLoop]) Greater than 0
                        • Then - Actions
                          • Unit Group - Add NetherCaster[NetherLoop] to GreaterBashCooldownGroup
                          • Unit - Create 1 Dummy for (Owner of NetherCaster[NetherLoop]) at NetherPoint[NetherLoop] facing 270.00 degrees
                          • Set NetherDummy2[NetherLoop] = (Last created unit)
                          • Unit - Add Bash Speed to NetherDummy2[NetherLoop]
                          • Unit - Order NetherDummy2[NetherLoop] to Orc Shaman - Bloodlust NetherCaster[NetherLoop]
                          • Unit - Add a 1.00 second Generic expiration timer to NetherDummy2[NetherLoop]
                          • Unit - Create 1 Knockback Dummy for (Owner of NetherCaster[NetherLoop]) at NetherPoint[NetherLoop] facing 270.00 degrees
                          • Set NetherDummy[NetherLoop] = (Last created unit)
                          • Unit - Add Greater Bash to NetherDummy[NetherLoop]
                          • Unit - Set level of Greater Bash for NetherDummy[NetherLoop] to (Level of Greater Bash for NetherCaster[NetherLoop])
                          • Unit - Add a 1.60 second Generic expiration timer to NetherDummy[NetherLoop]
                          • Unit - Order NetherDummy[NetherLoop] to Attack NetherTarget[NetherLoop]
                        • Else - Actions
                      • Unit Group - Remove NetherTarget[NetherLoop] from NetherGroup
                      • Unit - Remove classification of Magic Immune from NetherCaster[NetherLoop]
                      • Set NetherTarget[NetherLoop] = No unit
                      • Custom script: call RemoveLocation (udg_NetherPoint[udg_NetherLoop])
                    • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • NetherBashCooldownStop[NetherLoop] Not equal to 1
            • Then - Actions
              • Set NetherBashCooldown[NetherLoop] = (NetherBashCooldown[NetherLoop] + 0.03)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • NetherBashCooldown[NetherLoop] Greater than or equal to 1.50
                • Then - Actions
                  • Set NetherBashCooldownStop[NetherLoop] = 1
                  • Unit Group - Remove NetherCaster[NetherLoop] from GreaterBashCooldownGroup
                  • Set NetherCaster[NetherLoop] = No unit
                • Else - Actions
            • Else - Actions


11.Nether Strike end if the target is killed

  • Nether Stop
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Triggering unit) is in NetherGroup) Equal to True
    • Actions
      • Unit Group - Remove (Triggering unit) from NetherGroup
      • For each (Integer NetherLoop) from 1 to NetherCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to NetherTarget[NetherLoop]
            • Then - Actions
              • Set NetherStop[NetherLoop] = 1
              • Animation - Change NetherCaster[NetherLoop]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
              • Unit - Remove classification of Magic Immune from NetherCaster[NetherLoop]
              • Set NetherCaster[NetherLoop] = No unit
              • Set NetherTarget[NetherLoop] = No unit
            • Else - Actions
Contents

Spirit Breaker spells by Storm_hih (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 16:48, 17th Jul 2012 Magtheridon96: 2.15MB is too big a file size. You don't need most of the models in there. You can instead post a link to where a person could download them if...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

16:48, 17th Jul 2012
Magtheridon96:

  • 2.15MB is too big a file size. You don't need most of the models
    in there. You can instead post a link to where a person could download
    them if you see them fitting.
  • Never set the animation of a unit by the index in a public resource
    without making it configurable, in fact, you should make your spells
    configurable so that the user could modify things like base damage,
    damage per level, duration, etc...
  • In the Nether Strike trigger, you don't need the location arrays,
    you can use temporary location variables instead.
  • You have some leaks. For example:
    • Set NetherPoint[NetherLoop] = ((Position of NetherTarget[NetherLoop]) offset by 120.00 towards NetherAngle[NetherLoop] degrees)
    This leaks. To fix it, use another location, set it to the position of the
    target, and then use that location variable when setting the NetherPoint
    array. Don't forgot to destroy this temporary location though.
  • You never really need to set globals to "No unit".
  • The periodic triggers should be initially off. You would turn them
    on in the cast trigger and then back off when no units are casting
    the spells anymore.

This needs a total overhaul.
 
Charge - uses waits, bad... waits are inaccurate and they can ruin the MUIness of charge... if I have more than one unit casting charge at almost the same time, charge will bug because of the wait...

Empowering haste damage - the trigger is far longer than how it should be... Learn to use FORMULAS as opposed to using a long chain of If-then-elses...

Greater Bash - uses Unit is Attacked = Abusable

Nether stop - you might want to use hashtables so that you don't need to loop through all instances just to get which one is for the unit that died...

and maybe you could finish fixing the other spells first before making a new pack...
 
Use Waits and so is imprecise.

The bash will start before the projectile reach the target if it's not an instant attack. Instead of having a Greater Bash learn trigger, why you don't detect if the unit has the ability when it attack.

Your Empowering Haste is imprecise, and really not precise. Do some calculations and then convert to Integer to have the level of the ability.

Recycle the Id's for your Indexing system.
 
Level 16
Joined
Jul 17, 2011
Messages
1,856
you can simplify the empowered haste damage trigger with something like:
move speed / 10 and setting the level of the ability based on that value
so if its 422/10 ~ 42 for ability level
you will still need a big ability but no conditions this is just ridiculous lol
 
Well you call not true, please provide evidence to back yourself up, Also for a spell to be MUI and use waits, would be rather strange, I can seew howit's possible to create an artificial wait in a loop, since I do it all the time, so please, show us all how to do it.

On another note, Waits are never accurate, they're always very variable, hence why timers are used not waits in other systems.
 
Level 3
Joined
Jan 19, 2009
Messages
27
Well, I've made maps long ago, and started again just recently, but I recall making firebolt - like spells, with waits included, which worked perfectly no matter how many times they are cast at the same time... Had only to use array variable for "target unit of ability beign cast" since "target unit of ability being cast" doesn't work after "wait". "Triggering unit" however, worked for each trigger sepparatly as if it is local variable.
As for waits, it's easy to check. Make one action happen after 0.01 seconds and another after 0.27 and difference is quite obvious. They are inacurate though , I have seen them varying for 0.10-0.20 seconds, but usualy only when a frequent periodic trigger is involved.
 
Not true. As much as I have tested, the shortest wait for me was 0.01.

It also isn't necessarily true that using waits makes spell not-mui. It can still be mui if variables are used properly.
Or you use triggering units instead of variables ?

But no, it will be imprecise in all cases.

It'll be mui with recycling index or with hashtables.

Waits vary for 0.30seconds, and that's always. Using wait in your personnal triggers for a long time (i.e 3minutes) wouldn't be so bad cause you 0.30seconds on 180seconds, is nothing ? But using waits for really short time and when you provide this to the other peoples, it's inacceptable.

Also, MUI and Waits are compatible, but Waits are too imprecise, so it suxx.
 
Level 14
Joined
Jul 25, 2011
Messages
1,065
Well, I've made maps long ago, and started again just recently, but I recall making firebolt - like spells, with waits included, which worked perfectly no matter how many times they are cast at the same time... Had only to use array variable for "target unit of ability beign cast" since "target unit of ability being cast" doesn't work after "wait". "Triggering unit" however, worked for each trigger sepparatly as if it is local variable.
As for waits, it's easy to check. Make one action happen after 0.01 seconds and another after 0.27 and difference is quite obvious. They are inacurate though , I have seen them varying for 0.10-0.20 seconds, but usualy only when a frequent periodic trigger is involved.


I'm telling you it bugs!!! What if someone casts the spell again during the wait? It will bug for sure.
 
Level 21
Joined
Jan 1, 2011
Messages
1,424
Waits are nearly outlawed in these parts. Don't use them. They are inaccurate, and if the game is paused the wait continues. They also tend to make things not MUI, with overlapping variables and such. You can use maps in your own maps, but do NOT go posting spells that other people will use with waits in them. It is setting a bad example for the people who are still learning.
 
Level 3
Joined
May 4, 2011
Messages
35
Actually removing the waits is not good, as it show that instantly the Spirit Breaker will charge instantly, not preparing for Charge. Create new waits and its 5/5.
 
You could just easily manufacture an artificial wait using a loop a stored value and a "wait" duration

Example:

  • Example
    • Events
      • Time - every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each [Indexer] from 1 to [MaxIndex] do (actions)
        • loop - actions
          • Set ArtificalWait[Indexer] = ArtificialWait[Indexer] + 1
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • ArtificalWait[Indexer] > ArtificialWaitTime
              • Then - Actions
                • <<Actions>>
              • Else - Actions


This method will effectively create a delay or wait in the execution of a spell <without> causing problems or being innacurate however requires a basic knowledge of dynamic indexing.
 
Top