• 🏆 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!

2011 Spring Spellpack 0.4 by Manasurge

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: 88WaRCraFT3
You can use any spell made by me if you credit Me AND the owner(s) of the respective import(s).

Spells i made this spring. (2011)
// Manasurge

Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.
Frost, Ice, Cold, Holy, Nova, Pulse, Electric, Static, Charge, Thunder, Lightning, Nature, Heal, Light, Teleport, Blink, Debuff, Buff, Manasurge, Mana, GUI, MUI, Hashtables, Efflorescence, Discharge, Static Burst, Burst, Beacon, Beacon of Light, Pack, SFX, Effects, Loop, Shatter.

Tooltips:

Efflorescence
( the buff can be changed/add more to this spell effect )
Heals the target for 300 and if target is affected with Rejuvenation nearby friendly units also gets healed for 20% of the amount.

Static Burst
Hits the target and a few nearby units with a short electrical burst. The burst makes the units Static. A static unit hit with Static Burst will explode dealing AOE damage. |nStatic lasts until dispelled or hit with another Static Burst. |n|nHas a small chance to crit.

Beacon of Light
The caster begins to shine and light burst from the sky dealing damage to nearby enemies and healing allies. |nLasts for 10/11/12 seconds.

Discharge
The caster discharges an electrical pulse. The pulse carries the caster forth in the target direction dealing damage to enemy units in its path. Units affected get inflicted with Static. A unit inflicted with Static takes double damage from Discharge.

Shatter
Freezes target units and throws them into the air. when the frozen targets hits the ground they take 200/250/300 damage.

Shatter Single Target
Freezes target unit and throws him into the air. when the frozen target hits the ground he take 300/400/500 damage and deals 50% as AOE.


Comments

Not using imports wouldn't give the spells their right in SFX.
Some icons where better, and if you don't like the imports YOU CAN CHANGE IT.
More power of choice to the user.

CREDITS:
Credit to Callahan for LightningWrath.mdx http://www.hiveworkshop.com/forums/models-530/lightningstrikelarge-callahan-66762/
Credits to Anarchon for his Nature Revive Icon http://www.hiveworkshop.com/forums/icons-541/btnananaturereviveexplosion-114509/
Credits to JetFangInferno for his Earth Nova Model http://www.hiveworkshop.com/forums/models-530/earth-nova-50406/
Credit to Darkfang for the spell icon. http://www.hiveworkshop.com/forums/icons-541/btnlightningattack-186607/


My first 2 loop spells, with hashtables ( BAD)
Would make them indexed if i could understand indexing, it's really hard to read for me.
Hash is much easier when im just learning.
Will probably learn jass soon. (not promising anything)


2011 Spring Spellpack by Manasurge
============================
//|// How to Import the Spells //|//
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

- Static Burst -

- Ability: Static Burst, Static
- Buff: Static
- Import: LightningWrath.mdx
- Unit: Dummy
- Trigger: Init Static, Static Cast, Static Lightning Clear
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

- Shatter/Shatter Single Target -

- Ability: Shatter/Shatter Single Target, Freeze (Dummy)
- Buff: Frozen
- Import: <empty string>
- Unit: Dummy, Dummy Visual RoF
- Trigger: Init Shatter/Init Shatter Single, Shatter Cast/Shatter Cast Single, Shatter Loop/Shatter Loop Single
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

- Beacon of Light -

- Ability: Beacon of Light
- Buff: <empty string>
- Import: <empty string>
- Unit: <empty string>
- Trigger: Init BoL, BoL Cast, BoL Loop
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

- Efflorescence -

- Ability: Efflorescence
- Buff: <empty string>
- Import: BTNANA_NatureRevive_Explosion.BLP, DISBTNANA_NatureRevive_Explosion.BLP
- Unit: <empty string>
- Trigger: Startup Efflorescence, Cast Efflorescence
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

- Discharge -

- Ability: Discharge
- Buff: Static
- Import: BTNLightningAttack.blp, DISBTNLightningAttack.blp, LightningWrath.mdx
- Unit: Dummy
- Trigger: Init TC, TC Cast, TC Dummy Clear
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[


Spell Codes

  • INIT:
  • Startup Efflorescence
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ======================================================================= --------
      • -------- DON'T TOUCH THIS --------
      • -------- ======================================================================= --------
      • Hashtable - Create a hashtable
      • Set S_Hashtable = (Last created hashtable)
      • -------- ======================================================================= --------
      • -------- Configure this --------
      • -------- Formula: BaseValue + (BonusValue x Level of ability) = ActualValue --------
      • -------- ======================================================================= --------
      • -------- The Crit affects AOE and not single target, low values are good. --------
      • Set S_CritAmount = 125.00
      • Set S_CritAmountSmall = 75.00
      • Set S_CritBonus = 25.00
      • Set S_HealAmount = 150.00
      • Set S_HealAmountBonus = 50.00
      • Set S_HealAmountAOE = 40.00
      • Set S_HealAmountAOEBonus = 40.00
      • Set S_Range = 150.00
      • Set S_RangeBonus = 25.00
      • Set S_SmallCritChance = 20
      • Set S_SmallCritChanceBonus = 5
      • Set S_CritChance = 10
      • Set S_CritChanceBonus = 5
      • -------- ======================================================================= --------
      • -------- Change this to the buff that you use in your heal over time spell --------
      • -------- It's an array so you can use multiple buffs --------
      • -------- If you use multiple buffs then change the condition in the Cast trigger, the condition is highlighted for your convenience --------
      • Set S_Buff[1] = Rejuvenation
      • -------- ======================================================================= --------
      • Set S_FloatingText = True
      • -------- Mana cost, Cooldown, Cast Range and Description is changed in Object Editor --------
      • -------- ======================================================================= --------
  • CAST:
  • Cast Efflorescence
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Efflorescence
    • Actions
      • Set S_Caster = (Triggering unit)
      • Set S_ShowGroup = (Player group((Triggering player)))
      • Set S_Level = (Level of (Ability being cast) for S_Caster)
      • Set S_Point1 = (Position of S_Caster)
      • Set S_Target = (Target unit of ability being cast)
      • Set S_TargetPos = (Position of S_Target)
      • Set Actual_CritAmount = (S_CritAmount + (S_CritBonus x (Real(S_Level))))
      • Set Actual_CritAmountSmall = (S_CritAmountSmall + (S_CritBonus x (Real(S_Level))))
      • Set Actual_CritChance = (S_CritChance + (S_CritChanceBonus x S_Level))
      • Set Actual_SmallCritChance = (S_SmallCritChance + (S_SmallCritChanceBonus x S_Level))
      • Set Actual_HealAmount = (S_HealAmount + (S_HealAmountBonus x (Real(S_Level))))
      • Set Actual_NrHitUnits = (S_NrHitUnits + (S_NrHitUnitsBonus x S_Level))
      • Set Actual_AOEHeal = (S_HealAmountAOE + (S_HealAmountAOEBonus x (Real(S_Level))))
      • Set Actual_Range = (S_Range + (S_RangeBonus x (Real(S_Level))))
      • Set S_Life = (Life of S_Target)
      • Unit - Set life of S_Target to (S_Life + Actual_HealAmount)
      • Set S_AfterLife = (Life of S_Target)
      • Set S_HealText = (+ + (String((Integer((S_AfterLife - S_Life))))))
      • Set S_HealTextSize = 12.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • S_FloatingText Equal to True
          • (S_AfterLife - S_Life) Greater than 0.00
        • Then - Actions
          • Floating Text - Create floating text that reads S_HealText above S_Target with Z offset 0.00, using font size S_HealTextSize, color (0.00%, 100.00%, 50.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the fading age of (Last created floating text) to 1.20 seconds
          • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for S_ShowGroup
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (S_Target has buff S_Buff[1]) Equal to True
        • Then - Actions
          • -------- ^ Copy, Paste and change Array value if you want multiple buff availebility. --------
          • -------- HIGHLIGHT --------
          • Unit - Remove S_Buff[1] buff from S_Target
          • -------- ^ Copy, Paste and change Array value if you want multiple buff availebility. --------
          • -------- HIGHLIGHT --------
          • Special Effect - Create a special effect attached to the origin of S_Target using war3mapImported\EarthNova.mdx
          • Special Effect - Destroy (Last created special effect)
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units within Actual_Range of S_TargetPos matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an ally of (Triggering player)) Equal to True) and (((Percentage life of (M and do (Actions)
            • Loop - Actions
              • Set S_PickedUnit = (Picked unit)
              • Set S_Point2 = (Position of S_PickedUnit)
              • Special Effect - Create a special effect at S_Point2 using Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set S_Life = (Life of S_PickedUnit)
              • Set S_RandomInteger = (Random integer number between 1 and 100)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • S_RandomInteger Less than or equal to Actual_CritChance
                • Then - Actions
                  • Unit - Set life of S_PickedUnit to (S_Life + Actual_CritAmount)
                  • Set S_HealTextSize = 20.00
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • S_RandomInteger Less than or equal to Actual_SmallCritChance
                    • Then - Actions
                      • Unit - Set life of S_PickedUnit to (S_Life + Actual_CritAmountSmall)
                      • Set S_HealTextSize = 16.00
                    • Else - Actions
                      • Unit - Set life of S_PickedUnit to (S_Life + Actual_AOEHeal)
                      • Set S_HealTextSize = 12.00
              • Set S_AfterLife = (Life of S_PickedUnit)
              • Set S_HealText = (+ + (String((Integer((S_AfterLife - S_Life))))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • S_FloatingText Equal to True
                  • (S_AfterLife - S_Life) Greater than 0.00
                • Then - Actions
                  • Floating Text - Create floating text that reads S_HealText above S_PickedUnit with Z offset 0.00, using font size S_HealTextSize, color (0.00%, 100.00%, 50.00%), and 0.00% transparency
                  • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                  • Floating Text - Change (Last created floating text): Disable permanence
                  • Floating Text - Change the fading age of (Last created floating text) to 1.20 seconds
                  • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
                  • Floating Text - Hide (Last created floating text) for (All players)
                  • Floating Text - Show (Last created floating text) for S_ShowGroup
                • Else - Actions
        • Else - Actions
      • Custom script: call RemoveLocation(udg_S_Point1)
      • Custom script: call RemoveLocation(udg_S_Point2)
      • Custom script: call RemoveLocation(udg_S_TargetPos)
      • Custom script: call DestroyForce(udg_S_ShowGroup)


  • INIT:
  • Init Static
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ======================================================================= --------
      • -------- DON'T TOUCH THIS --------
      • -------- ======================================================================= --------
      • Hashtable - Create a hashtable
      • Set St_Hashtable = (Last created hashtable)
      • -------- ======================================================================= --------
      • -------- Configure this --------
      • -------- Formula: BaseValue + (BonusValue x Level of ability) = ActualValue --------
      • -------- St_Duration, St_LightningType, St_LightningDuration, St_FloatingText and St_HitsTrees are the only variables that is not affected by the formula --------
      • -------- ======================================================================= --------
      • -------- Damage --------
      • Set St_CritAmount = 250.00
      • Set St_CritAmountSmall = 200.00
      • Set St_CritBonus = 50.00
      • Set St_DmgAmount = 150.00
      • Set St_DmgAmountBonus = 50.00
      • -------- Area of Effect --------
      • -------- AOE of spell when cast and dmg AOE of the Explode --------
      • Set St_Range = 200.00
      • Set St_RangeBonus = 50.00
      • -------- Sets the number of targets the spell hits --------
      • Set St_NrHitUnits = 2
      • Set St_NrHitUnitsBonus = 1
      • -------- Crit Chance in % --------
      • Set St_SmallCritChance = 20
      • Set St_SmallCritChanceBonus = 5
      • Set St_CritChance = 10
      • Set St_CritChanceBonus = 5
      • -------- St_Duration = 0.00 gives the duration (Until Dispelled) --------
      • Set St_Duration = 0.00
      • -------- Lightning Duration (Recommend under 1 second or it looks wierd) --------
      • Set St_LightningDuration = 0.40
      • -------- Lightning Type --------
      • Set St_LightningType = Chain Lightning - Secondary
      • -------- Booleans --------
      • -------- Default on upload is False, True --------
      • Set St_FloatingText = False
      • Set St_HitsDestructs = True
      • -------- Mana cost, Cooldown, Cast Range and Description is changed in Object Editor --------
      • -------- ======================================================================= --------
  • CAST:
  • Static Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Static Burst
    • Actions
      • -------- Static Burst --------
      • -------- Made by Manasurge --------
      • -------- You don't need to change anything here --------
      • -------- If you do i can't guarantee it will work --------
      • Set St_Caster = (Triggering unit)
      • Set St_Level = (Level of (Ability being cast) for St_Caster)
      • Set St_Point1 = (Position of St_Caster)
      • Set St_LastHit = (Target unit of ability being cast)
      • Set St_LastHitPos = (Position of St_LastHit)
      • Set St_ShowGroup = (Player group((Triggering player)))
      • Set Actual_CritAmount = (St_CritAmount + (St_CritBonus x (Real(St_Level))))
      • Set Actual_CritAmountSmall = (St_CritAmountSmall + (St_CritBonus x (Real(St_Level))))
      • Set Actual_CritChance = (St_CritChance + (St_CritChanceBonus x St_Level))
      • Set Actual_SmallCritChance = (St_SmallCritChance + (St_SmallCritChanceBonus x St_Level))
      • Set Actual_DmgAmount = (St_DmgAmount + (St_DmgAmountBonus x (Real(St_Level))))
      • Set Actual_NrHitUnits = (St_NrHitUnits + (St_NrHitUnitsBonus x St_Level))
      • Set Actual_Range = (St_Range + (St_RangeBonus x (Real(St_Level))))
      • Set St_FirstGroup = (Units within Actual_Range of St_LastHitPos matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an ally of (Triggering player)) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is
      • Set St_LightningGroup = (Random (Actual_NrHitUnits - 1) units from St_FirstGroup)
      • Unit Group - Add St_LastHit to St_LightningGroup
      • Custom script: set udg_x1 = GetLocationX(udg_St_Point1)
      • Custom script: set udg_y1 = GetLocationY(udg_St_Point1)
      • Custom script: set udg_z1 = GetLocationZ(udg_St_Point1) + (GetUnitFlyHeight(udg_St_Caster) + 35)
      • Custom script: // i will not set bj_wantDestroyGroup = true
      • Custom script: // need the target to be added to the group loop OUTSIDE the loop :)
      • Custom script: // To guarantee that the target of the spell is hit.
      • Unit Group - Pick every unit in St_LightningGroup and do (Actions)
        • Loop - Actions
          • Set St_RandomInteger = (Random integer number between 1 and 100)
          • Set St_RandomUnit = (Picked unit)
          • Set St_Point2 = (Position of St_RandomUnit)
          • Custom script: set udg_x2 = GetLocationX(udg_St_Point2)
          • Custom script: set udg_y2 = GetLocationY(udg_St_Point2)
          • Custom script: set udg_z2 = GetLocationZ(udg_St_Point2) + (GetUnitFlyHeight(udg_St_RandomUnit) + 35)
          • Unit - Create 1 Dummy for Neutral Passive at St_LastHitPos facing Default building facing degrees
          • Set St_Dummy = (Last created unit)
          • Unit - Add a St_LightningDuration second Generic expiration timer to St_Dummy
          • Unit - Make St_Dummy Explode on death
          • Unit Group - Add St_Dummy to St_RemoveLightningGroup
          • Custom script: set bj_lastCreatedLightning = AddLightningEx(udg_St_LightningType,true,udg_x1,udg_y1,udg_z1,udg_x2,udg_y2,udg_z2)
          • Hashtable - Save Handle Of(Last created lightning effect) as 0 of (Key (Last created unit)) in St_Hashtable
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • St_RandomInteger Less than or equal to Actual_CritChance
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (St_RandomUnit has buff Static ) Equal to True
                • Then - Actions
                  • Special Effect - Create a special effect at St_Point2 using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at St_Point2 using war3mapImported\LightningWrath.mdx
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within Actual_Range of St_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Triggering player)) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mag and do (Actions)
                    • Loop - Actions
                      • Unit Group - Add (Picked unit) to St_AOEGroup
                      • Set St_Life = (Life of (Picked unit))
                      • Unit - Cause St_Caster to damage (Picked unit), dealing Actual_CritAmount damage of attack type Spells and damage type Normal
                      • Set St_AfterLife = (Life of (Picked unit))
                      • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                      • Set St_DmgTextSize = 20.00
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (St_Life - St_AfterLife) Greater than 0.00
                          • St_FloatingText Equal to True
                        • Then - Actions
                          • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above (Picked unit) with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                          • Set St_TextTag = (Last created floating text)
                          • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                          • Floating Text - Hide St_TextTag for (All players)
                          • Floating Text - Show St_TextTag for St_ShowGroup
                          • Floating Text - Change St_TextTag: Disable permanence
                          • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                          • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                        • Else - Actions
                  • If (St_HitsDestructs Equal to True) then do (Destructible - Pick every destructible within Actual_Range of St_LastHitPos and do (Destructible - Kill (Picked destructible))) else do (Do nothing)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (St_RandomUnit is in St_AOEGroup) Equal to False
                    • Then - Actions
                      • Set St_Life = (Life of St_RandomUnit)
                      • Unit - Cause St_Caster to damage St_RandomUnit, dealing Actual_CritAmount damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the origin of St_RandomUnit using Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Set St_AfterLife = (Life of St_RandomUnit)
                      • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                      • Set St_DmgTextSize = 20.00
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (St_Life - St_AfterLife) Greater than 0.00
                          • St_FloatingText Equal to True
                        • Then - Actions
                          • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above St_RandomUnit with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                          • Set St_TextTag = (Last created floating text)
                          • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                          • Floating Text - Hide St_TextTag for (All players)
                          • Floating Text - Show St_TextTag for St_ShowGroup
                          • Floating Text - Change St_TextTag: Disable permanence
                          • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                          • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                        • Else - Actions
                    • Else - Actions
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • St_RandomInteger Less than or equal to Actual_SmallCritChance
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (St_RandomUnit has buff Static ) Equal to True
                    • Then - Actions
                      • Special Effect - Create a special effect at St_Point2 using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect at St_Point2 using war3mapImported\LightningWrath.mdx
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: set bj_wantDestroyGroup = true
                      • Unit Group - Pick every unit in (Units within Actual_Range of St_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Triggering player)) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mag and do (Actions)
                        • Loop - Actions
                          • Unit Group - Add (Picked unit) to St_AOEGroup
                          • Set St_Life = (Life of (Picked unit))
                          • Unit - Cause St_Caster to damage (Picked unit), dealing Actual_CritAmountSmall damage of attack type Spells and damage type Normal
                          • Set St_AfterLife = (Life of (Picked unit))
                          • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                          • Set St_DmgTextSize = 15.00
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (St_Life - St_AfterLife) Greater than 0.00
                              • St_FloatingText Equal to True
                            • Then - Actions
                              • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above (Picked unit) with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                              • Set St_TextTag = (Last created floating text)
                              • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                              • Floating Text - Hide St_TextTag for (All players)
                              • Floating Text - Show St_TextTag for St_ShowGroup
                              • Floating Text - Change St_TextTag: Disable permanence
                              • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                              • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                            • Else - Actions
                      • If (St_HitsDestructs Equal to True) then do (Destructible - Pick every destructible within Actual_Range of St_LastHitPos and do (Destructible - Kill (Picked destructible))) else do (Do nothing)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (St_RandomUnit is in St_AOEGroup) Equal to False
                        • Then - Actions
                          • Set St_Life = (Life of St_RandomUnit)
                          • Unit - Cause St_Caster to damage St_RandomUnit, dealing Actual_CritAmountSmall damage of attack type Spells and damage type Normal
                          • Special Effect - Create a special effect attached to the origin of St_RandomUnit using Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Set St_AfterLife = (Life of St_RandomUnit)
                          • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                          • Set St_DmgTextSize = 15.00
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (St_Life - St_AfterLife) Greater than 0.00
                              • St_FloatingText Equal to True
                            • Then - Actions
                              • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above St_RandomUnit with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                              • Set St_TextTag = (Last created floating text)
                              • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                              • Floating Text - Hide St_TextTag for (All players)
                              • Floating Text - Show St_TextTag for St_ShowGroup
                              • Floating Text - Change St_TextTag: Disable permanence
                              • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                              • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                            • Else - Actions
                        • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (St_RandomUnit has buff Static ) Equal to True
                    • Then - Actions
                      • Special Effect - Create a special effect at St_Point2 using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect at St_Point2 using war3mapImported\LightningWrath.mdx
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: set bj_wantDestroyGroup = true
                      • Unit Group - Pick every unit in (Units within Actual_Range of St_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Triggering player)) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mag and do (Actions)
                        • Loop - Actions
                          • Unit Group - Add (Picked unit) to St_AOEGroup
                          • Set St_Life = (Life of (Picked unit))
                          • Unit - Cause St_Caster to damage (Picked unit), dealing Actual_DmgAmount damage of attack type Spells and damage type Normal
                          • Set St_AfterLife = (Life of (Picked unit))
                          • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                          • Set St_DmgTextSize = 10.00
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (St_Life - St_AfterLife) Greater than 0.00
                              • St_FloatingText Equal to True
                            • Then - Actions
                              • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above (Picked unit) with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                              • Set St_TextTag = (Last created floating text)
                              • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                              • Floating Text - Hide St_TextTag for (All players)
                              • Floating Text - Show St_TextTag for St_ShowGroup
                              • Floating Text - Change St_TextTag: Disable permanence
                              • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                              • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                            • Else - Actions
                      • If (St_HitsDestructs Equal to True) then do (Destructible - Pick every destructible within Actual_Range of St_LastHitPos and do (Destructible - Kill (Picked destructible))) else do (Do nothing)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (St_RandomUnit is in St_AOEGroup) Equal to False
                        • Then - Actions
                          • Set St_Life = (Life of St_RandomUnit)
                          • Unit - Cause St_Caster to damage St_RandomUnit, dealing Actual_DmgAmount damage of attack type Spells and damage type Normal
                          • Special Effect - Create a special effect attached to the origin of St_RandomUnit using Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Set St_AfterLife = (Life of St_RandomUnit)
                          • Set St_DmgText = (- + (String(((Integer(St_Life)) - (Integer(St_AfterLife))))))
                          • Set St_DmgTextSize = 10.00
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (St_Life - St_AfterLife) Greater than 0.00
                              • St_FloatingText Equal to True
                            • Then - Actions
                              • Floating Text - Create floating text that reads (String(St_DmgText) as Upper case) above St_RandomUnit with Z offset 0.00, using font size St_DmgTextSize, color (100.00%, 30.00%, 20.00%), and 0.00% transparency
                              • Set St_TextTag = (Last created floating text)
                              • Floating Text - Set the velocity of St_TextTag to 64.00 towards 90.00 degrees
                              • Floating Text - Hide St_TextTag for (All players)
                              • Floating Text - Show St_TextTag for St_ShowGroup
                              • Floating Text - Change St_TextTag: Disable permanence
                              • Floating Text - Change the fading age of St_TextTag to 1.20 seconds
                              • Floating Text - Change the lifespan of St_TextTag to 2.00 seconds
                            • Else - Actions
                        • Else - Actions
          • Unit Group - Remove St_RandomUnit from St_LightningGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (St_RandomUnit has buff Static ) Equal to False
            • Then - Actions
              • Unit - Create 1 Dummy for (Owner of St_Caster) at St_LastHitPos facing Default building facing degrees
              • Set St_Dummy = (Last created unit)
              • Unit - Add a St_Duration second Generic expiration timer to St_Dummy
              • Unit - Add Static to St_Dummy
              • Unit - Set level of Static for St_Dummy to St_Level
              • Unit - Order St_Dummy to Human Sorceress - Slow St_RandomUnit
              • Unit - Make St_Dummy Explode on death
              • Unit Group - Add St_Dummy to St_DurationGroup
              • Hashtable - Save Handle OfSt_RandomUnit as 1 of (Key (Last created unit)) in St_Hashtable
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (St_RandomUnit has buff Static ) Equal to True
                • Then - Actions
                  • Unit - Remove Static buff from St_RandomUnit
                • Else - Actions
      • Unit Group - Remove all units of St_AOEGroup from St_AOEGroup
      • Custom script: call RemoveLocation(udg_St_Point1)
      • Custom script: call RemoveLocation(udg_St_Point2)
      • Custom script: call RemoveLocation(udg_St_LastHitPos)
      • Custom script: call DestroyGroup(udg_St_FirstGroup)
      • Custom script: call DestroyGroup(udg_St_LightningGroup)
      • Custom script: call DestroyForce(udg_St_ShowGroup)
  • CLEAR:
  • Static Lightning Clear
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) is in St_RemoveLightningGroup) Equal to True
        • Then - Actions
          • Unit Group - Remove (Triggering unit) from St_RemoveLightningGroup
          • Lightning - Destroy (Load 0 of (Key (Triggering unit)) in St_Hashtable)
          • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in St_Hashtable
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • ((Triggering unit) is in St_DurationGroup) Equal to True
            • Then - Actions
              • Unit Group - Remove (Triggering unit) from St_DurationGroup
              • Unit - Remove Static buff from (Load 1 of (Key (Triggering unit)) in St_Hashtable)
              • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in St_Hashtable
            • Else - Actions


  • INIT:
  • Init TC
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ======================================================================= --------
      • -------- DON'T TOUCH THIS --------
      • -------- ======================================================================= --------
      • Hashtable - Create a hashtable
      • Set TC_Hashtable = (Last created hashtable)
      • Set TC_Speed = 1.00
      • -------- Collision while moving: --------
      • Set TC_CasterSize = 84.00
      • -------- ======================================================================= --------
      • -------- Configure this --------
      • -------- Formula: BaseValue + (BonusValue x Level of ability) = ActualValue --------
      • -------- ======================================================================= --------
      • -------- Special Effects --------
      • -------- Comments are model path to another visual effect on the spell --------
      • Set TC_EffectTarget = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • -------- Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl --------
      • -------- Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl --------
      • Set TC_EffectPath = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • -------- Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl --------
      • -------- Abilities\Spells\Other\Volcano\VolcanoDeath.mdl --------
      • Set TC_EffectWeapon = Abilities\Weapons\Bolt\BoltImpact.mdl
      • -------- Abilities\Spells\Orc\Purge\PurgeBuffTarget.mdl --------
      • -------- Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl --------
      • Set TC_EffectWeapon2 = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • -------- Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl --------
      • -------- Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl --------
      • -------- Special Effect model name finder --------
      • Special Effect - Create a special effect at (Random point in ((Playable map area) offset by (1000000000.00, 100000000.00))) using Abilities\Weapons\Bolt\BoltImpact.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ////////////////////////////////////////////////////////////////// --------
      • -------- Formula: BaseValue + (BonusValue x Level of ability) = ActualValue --------
      • -------- Damage --------
      • -------- If target is affected by Static the dmg is doubled on that target. --------
      • Set TC_DmgAmount = 300.00
      • Set TC_DmgAmountBonus = 50.00
      • -------- Range --------
      • Set TC_Range = 600.00
      • Set TC_RangeBonus = 50.00
      • -------- Area of Effect --------
      • -------- Width of the trail --------
      • Set TC_Radius = 200.00
      • -------- Duration --------
      • -------- 0 = until dispelled or hit with Static Burst or another Thundercharge (this can be toggled on and off using a boolean) --------
      • Set TC_Duration = 0.00
      • -------- Animation Duration --------
      • -------- Don't set it to 0 --------
      • -------- Experiment with this value until it's well adjusted to the TC_Caster --------
      • Set TC_AnimationDuration = 0.60
      • -------- Booleans --------
      • -------- True = First hit adds debuff, second hit removes and deals extra dmg. --------
      • Set TC_UseStatic = True
      • -------- Mana cost, Cooldown, Cast Range and Description is changed in Object Editor --------
      • -------- ======================================================================= --------
  • CAST:
  • TC Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Discharge
    • Actions
      • -------- Lightning is fast :P:P:P:P --------
      • Set TC_Caster = (Triggering unit)
      • Set TC_CasterPoint = (Position of TC_Caster)
      • Set TC_Level = (Level of (Ability being cast) for TC_Caster)
      • Set TC_Target = (Target unit of ability being cast)
      • Set TC_Angle = (Facing of TC_Caster)
      • Set Actual_DmgAmount = (TC_DmgAmount + (TC_DmgAmountBonus x (Real(TC_Level))))
      • Set Actual_Range = (TC_Range + (TC_RangeBonus x (Real(TC_Level))))
      • If ((TC_Target is alive) Equal to True) then do (Set TC_TargetPoint = (Position of TC_Target)) else do (Set TC_TargetPoint = (Target point of ability being cast))
      • Set TC_Angle = (Angle from TC_CasterPoint to TC_TargetPoint)
      • Set TC_MovePoint = (TC_CasterPoint offset by 1.00 towards TC_Angle degrees)
      • Set TC_EffectInteger = 0
      • Set TC_EffectGroup = (Units in (Playable map area) matching ((Matching unit) Equal to TC_Target))
      • Unit Group - Remove TC_Target from TC_EffectGroup
      • Set TC_PickedPoint = (Position of TC_Target)
      • Set TC_PickedPoint = TC_TargetPoint
      • Animation - Play TC_Caster's attack slam animation
      • Animation - Change TC_Caster's animation speed to 200.00% of its original speed
      • For each (Integer TC_Integer) from 1 to (Integer(Actual_Range)), do (Actions)
        • Loop - Actions
          • Set TC_MovePoint = (TC_MovePoint offset by TC_Speed towards TC_Angle degrees)
          • Set TC_EffectInteger = (TC_EffectInteger + 1)
          • Custom script: call SetUnitX(udg_TC_Caster, GetLocationX(udg_TC_MovePoint))
          • Custom script: call SetUnitY(udg_TC_Caster, GetLocationY(udg_TC_MovePoint))
          • Destructible - Pick every destructible within TC_CasterSize of TC_MovePoint and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked destructible) is alive) Equal to True
                • Then - Actions
                  • Unit - Turn collision for TC_Caster On
                  • Set Actual_Range = (Actual_Range - (Distance between TC_MovePoint and TC_PickedPoint))
                • Else - Actions
                  • Unit - Turn collision for TC_Caster Off
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TC_EffectInteger Equal to (Integer((Actual_Range / 10.00)))
            • Then - Actions
              • Set TC_EffectInteger = 0
              • Special Effect - Create a special effect at TC_MovePoint using TC_EffectPath
              • Special Effect - Destroy (Last created special effect)
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within TC_Radius of TC_MovePoint matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) belongs to an enemy of and do (Actions)
                • Loop - Actions
                  • Unit Group - Add (Picked unit) to TC_EffectGroup
                  • Unit - Cause TC_Caster to damage (Picked unit), dealing Actual_DmgAmount damage of attack type Normal and damage type Normal
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) has buff Static ) Equal to False
                      • TC_UseStatic Equal to True
                    • Then - Actions
                      • Unit - Create 1 Dummy for (Triggering player) at TC_MovePoint facing Default building facing degrees
                      • Set TC_Dummy = (Last created unit)
                      • If (TC_Duration Greater than 0.00) then do (Unit - Add a TC_Duration second Generic expiration timer to (Last created unit)) else do (Unit - Add a 0.70 second Generic expiration timer to (Last created unit))
                      • Unit - Add Static to TC_Dummy
                      • Unit - Set level of Static for TC_Dummy to TC_Level
                      • Unit - Order TC_Dummy to Human Sorceress - Slow (Picked unit)
                      • Unit - Make TC_Dummy Explode on death
                      • Unit Group - Add TC_Dummy to TC_DurationGroup
                      • Hashtable - Save Handle Of(Picked unit) as 1 of (Key (Last created unit)) in TC_Hashtable
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) has buff Static ) Equal to True
                      • TC_UseStatic Equal to True
                    • Then - Actions
                      • Unit - Cause TC_Caster to damage (Picked unit), dealing Actual_DmgAmount damage of attack type Normal and damage type Normal
                      • Unit - Remove Static buff from (Picked unit)
                      • Special Effect - Create a special effect attached to the origin of (Picked unit) using war3mapImported\LightningWrath.mdx
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Special Effect - Create a special effect attached to the weapon of TC_Caster using TC_EffectWeapon2
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Playable map area) contains TC_Caster) Equal to False
            • Then - Actions
              • -------- Turns the caster around if he's out of the map. --------
              • Set TC_Return = (TC_CasterPoint offset by 10.00 towards (Angle from TC_MovePoint to TC_CasterPoint) degrees)
              • Set TC_Angle = (Angle from TC_MovePoint to TC_Return)
            • Else - Actions
      • Unit Group - Pick every unit in TC_EffectGroup and do (Special Effect - Create a special effect attached to the origin of (Picked unit) using TC_EffectTarget)
      • Unit Group - Pick every unit in TC_EffectGroup and do (Unit Group - Remove (Picked unit) from TC_EffectGroup)
      • Unit - Turn collision for TC_Caster On
      • Special Effect - Destroy (Last created special effect)
      • Animation - Change TC_Caster's animation speed to 300.00% of its original speed
      • Animation - Play TC_Caster's attack animation
      • Unit - Create 1 Dummy for (Triggering player) at TC_MovePoint facing Default building facing degrees
      • Set TC_Dummy = (Last created unit)
      • Unit - Add a TC_AnimationDuration second Generic expiration timer to TC_Dummy
      • Unit - Make TC_Dummy Explode on death
      • Unit Group - Add TC_Dummy to TC_AnimationGroup
      • Hashtable - Save Handle OfTC_Caster as 0 of (Key (Last created unit)) in TC_Hashtable
      • Custom script: call RemoveLocation(udg_TC_CasterPoint)
      • Custom script: call RemoveLocation(udg_TC_MovePoint)
      • Custom script: call RemoveLocation(udg_TC_TargetPoint)
      • Custom script: call RemoveLocation(udg_TC_PickedPoint)
      • Custom script: call RemoveLocation(udg_TC_Return)
      • Custom script: call DestroyGroup(udg_TC_EffectGroup)
  • CLEAR:
  • TC Dummy Clear
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • And - All (Conditions) are true
            • Conditions
              • ((Triggering unit) is in TC_DurationGroup) Equal to True
              • TC_Duration Greater than 0.00
        • Then - Actions
          • Unit Group - Remove (Triggering unit) from TC_DurationGroup
          • Unit - Remove Static buff from (Load 1 of (Key (Triggering unit)) in TC_Hashtable)
          • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in TC_Hashtable
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • And - All (Conditions) are true
            • Conditions
              • ((Triggering unit) is in TC_AnimationGroup) Equal to True
              • TC_AnimationDuration Greater than 0.00
        • Then - Actions
          • Unit Group - Remove (Triggering unit) from TC_AnimationGroup
          • Unit - Order (Load 0 of (Key (Triggering unit)) in TC_Hashtable) to Stop
          • Animation - Reset (Load 0 of (Key (Triggering unit)) in TC_Hashtable)'s animation
          • Animation - Change (Load 0 of (Key (Triggering unit)) in TC_Hashtable)'s animation speed to 100.00% of its original speed
          • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in TC_Hashtable
        • Else - Actions


  • INIT:
  • Init BoL
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Configureable Values --------
      • -------- Formula: Base Value + (Bonus Value * Level of Ability Cast) = Actual Value --------
      • Hashtable - Create a hashtable
      • Set ER_Hashtable = (Last created hashtable)
      • Set ER_Integer = 1
      • Set ER_Index = 0
      • -------- Area of Effect --------
      • Set ER_AreaBase = 350.00
      • Set ER_AreaBonus = 50.00
      • -------- Effects --------
      • -------- Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl --------
      • -------- Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl --------
      • -------- Abilities\Spells\Items\ResourceItems\ResourceEffectTarget.mdl --------
      • -------- Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl --------
      • Set ER_CasterEffect = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
      • Set ER_ProjectileEffect = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
      • Set ER_TargetEffect = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
      • -------- Speed which at the effects travel when they move. --------
      • Set ER_Speed = 10.00
      • -------- Damage per 0.30 seconds (Depending on ER_LoopIntervalReal * ER_EffectIntervalSmoothness) / Heal per 0.30 seconds (Depending on ER_LoopIntervalReal * ER_EffectIntervalSmoothness) --------
      • -------- Damage is PER PROJECTILE --------
      • Set ER_EffectIntervalSmoothness = 5
      • Set ER_DamageBase = 5.00
      • Set ER_DamageBonus = 5.00
      • -------- Interval on loop --------
      • -------- Damage interval is this value * ER_EffectIntervalSmoothness --------
      • Set ER_LoopIntervalReal = 0.03
      • Trigger - Add to BoL Loop <gen> the event (Time - Every ER_LoopIntervalReal seconds of game time)
      • Set ER_BaseDuration = 4.00
      • Set ER_BonusDuration = 2.00
      • -------- Number of projectiles in the loop --------
      • Set ER_BaseProjectiles = 5
      • Set ER_BonusProjectiles = 5
      • -------- If true, caster can't move or take any action for the duration of the spell --------
      • Set ER_PauseBoolean = False
      • -------- Mana cost, Cooldown, Cast Range and Description is changed in Object Editor --------
  • CAST:
  • BoL Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Beacon of Light
    • Actions
      • Set ER_Index = 0
      • Set ER_Caster = (Triggering unit)
      • Set ER_Point = (Position of ER_Caster)
      • Set ER_Owner = (Triggering player)
      • Set ER_LVL = (Real((Level of (Ability being cast) for ER_Caster)))
      • Set ER_ActualArea = (ER_AreaBase + (ER_AreaBonus x ER_LVL))
      • Set ER_ActualDamage = (ER_DamageBase + (ER_DamageBonus x ER_LVL))
      • Set ER_ActualDuration = (ER_BaseDuration + (ER_BonusDuration x ER_LVL))
      • Set ER_ActualProjectiles = (ER_BaseProjectiles + (ER_BonusProjectiles x (Integer(ER_LVL))))
      • Set ER_Real2 = 0.00
      • Set ER_Real = 0.00
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units in (Playable map area) matching ((Matching unit) Equal to ER_Caster)) and do (Actions)
        • Loop - Actions
          • Hashtable - Save Handle OfER_Caster as 0 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_ActualArea as 1 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_ActualDamage as 2 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_ActualDuration as 3 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save Handle OfER_Owner as 4 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_Index as 5 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_ActualProjectiles as 6 of (Key (Picked unit)) in ER_Hashtable
          • Hashtable - Save ER_Real2 as 7 of (Key (Picked unit)) in ER_Hashtable
          • Unit Group - Add (Picked unit) to ER_LoopGroup
      • Trigger - Turn on BoL Loop <gen>
      • Custom script: call RemoveLocation(udg_ER_Point)
  • LOOP:
  • BoL Loop
    • Events
    • Conditions
    • Actions
      • Unit Group - Pick every unit in ER_LoopGroup and do (Actions)
        • Loop - Actions
          • Set ER_Caster = (Load 0 of (Key (Picked unit)) in ER_Hashtable)
          • Set ER_ActualArea = (Load 1 of (Key (Picked unit)) from ER_Hashtable)
          • Set ER_ActualDamage = (Load 2 of (Key (Picked unit)) from ER_Hashtable)
          • Set ER_ActualDuration = (Load 3 of (Key (Picked unit)) from ER_Hashtable)
          • Set ER_ActualProjectiles = (Load 6 of (Key (Picked unit)) from ER_Hashtable)
          • Set ER_Owner = (Load 4 of (Key (Picked unit)) in ER_Hashtable)
          • Set ER_Index = (Load 5 of (Key (Picked unit)) from ER_Hashtable)
          • Set ER_Real2 = (Load 7 of (Key (Picked unit)) from ER_Hashtable)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • If (ER_PauseBoolean Equal to True) then do (Unit - Pause ER_Caster) else do (Do nothing)
              • Set ER_Index = (ER_Index + 1)
              • Hashtable - Save ER_Index as 5 of (Key (Picked unit)) in ER_Hashtable
              • Set ER_IndexMax = (ER_ActualDuration / ER_LoopIntervalReal)
              • Set ER_Point = (Position of ER_Caster)
              • Set ER_Real = 0.00
              • Set ER_Real2 = (ER_Real2 + ER_Speed)
              • Hashtable - Save ER_Real2 as 7 of (Key (Picked unit)) in ER_Hashtable
              • Set ER_EffectInteger = (Load 9 of (Key (Picked unit)) from ER_Hashtable)
              • Set ER_EffectInteger = (ER_EffectInteger + 1)
              • Hashtable - Save ER_EffectInteger as 9 of (Key (Picked unit)) in ER_Hashtable
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ER_Real2 Greater than or equal to ER_ActualArea
                • Then - Actions
                  • Set ER_Real2 = 0.00
                  • Hashtable - Save ER_Real2 as 7 of (Key (Picked unit)) in ER_Hashtable
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ER_EffectInteger Equal to ER_EffectIntervalSmoothness
                • Then - Actions
                  • Set ER_EffectInteger = 0
                  • Hashtable - Save ER_EffectInteger as 9 of (Key (Picked unit)) in ER_Hashtable
                  • Unit - Set life of ER_Caster to ((Life of ER_Caster) + (ER_ActualDamage / (Real(ER_ActualProjectiles))))
                  • Special Effect - Create a special effect at ER_Point using ER_CasterEffect
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer ER_Integer) from 1 to ER_ActualProjectiles, do (Actions)
                    • Loop - Actions
                      • Set ER_Point2 = (ER_Point offset by ER_Real2 towards ER_Real degrees)
                      • Set ER_Real = (ER_Real + (360.00 / (Real(ER_ActualProjectiles))))
                      • Special Effect - Create a special effect at ER_Point2 using ER_ProjectileEffect
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: set bj_wantDestroyGroup = true
                      • Unit Group - Pick every unit in (Units within 100.00 of ER_Point2 matching (((Current flying height of (Matching unit)) Less than or equal to 100.00) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an and do (Actions)
                        • Loop - Actions
                          • Unit - Cause ER_Caster to damage (Picked unit), dealing ER_ActualDamage damage of attack type Spells and damage type Normal
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using ER_TargetEffect
                          • Special Effect - Destroy (Last created special effect)
                      • Custom script: set bj_wantDestroyGroup = true
                      • Unit Group - Pick every unit in (Units within 100.00 of ER_Point2 matching (((Current flying height of (Matching unit)) Less than or equal to 100.00) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an a and do (Actions)
                        • Loop - Actions
                          • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + ER_ActualDamage)
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using ER_TargetEffect
                          • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation(udg_ER_Point2)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ER_Index Greater than or equal to (Integer(ER_IndexMax))
                • Then - Actions
                  • For each (Integer ER_Integer) from 1 to ER_ActualProjectiles, do (Actions)
                    • Loop - Actions
                      • Set ER_Real2 = (ER_ActualArea - 50.00)
                      • Set ER_Point2 = (ER_Point offset by ER_Real2 towards ER_Real degrees)
                      • Set ER_Real = (ER_Real + (360.00 / (Real(ER_ActualProjectiles))))
                      • Special Effect - Create a special effect at ER_Point2 using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation(udg_ER_Point2)
                  • Unit Group - Remove ER_Caster from ER_LoopGroup
                  • If (ER_PauseBoolean Equal to True) then do (Unit - Unpause ER_Caster) else do (Do nothing)
                  • Set ER_Index = 0
                  • Set ER_Integer = 1
                  • Set ER_Real = 0.00
                  • Set ER_Real2 = 0.00
                • Else - Actions
            • Else - Actions
              • Unit Group - Remove (Picked unit) from ER_LoopGroup
              • Set ER_Index = 0
              • Set ER_Integer = 1
              • Set ER_Real = 0.00
              • Set ER_Real2 = 0.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ER_LoopGroup) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions


  • INIT:
  • Init Shatter
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Configureable Values --------
      • -------- Formula: Base Value + (Bonus Value * Level of Ability Cast) = Actual Value --------
      • Hashtable - Create a hashtable
      • Set SH_Hashtable = (Last created hashtable)
      • Set SH_AreaBase = 300.00
      • Set SH_AreaBonus = 50.00
      • Set SH_DamageBase = 100.00
      • Set SH_DamageBonus = 50.00
      • Set SH_CurrentHeight = 0.00
      • Set SH_Height = 600.00
      • Set SH_DownHeight = SH_Height
      • Set SH_SpeedUp = 10.00
      • Set SH_SpeedDown = 50.00
      • Set SH_Integer = 1
      • Hashtable - Save SH_SpeedUp as 1 of 1 in SH_Hashtable
      • Hashtable - Save SH_SpeedDown as 2 of 1 in SH_Hashtable
      • -------- Mana cost, Cooldown, Cast Range, size of targeting image and Description is changed in Object Editor --------
  • CAST:
  • Shatter Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shatter
    • Actions
      • Set SH_Integer = 0
      • Set SH_DownHeight = SH_Height
      • Set SH_Caster = (Triggering unit)
      • Set SH_Lvl = (Real((Level of (Ability being cast) for SH_Caster)))
      • Set SH_Owner = (Triggering player)
      • Set SH_Point = (Target point of ability being cast)
      • Set SH_ActualArea = (SH_AreaBase + (SH_AreaBonus x SH_Lvl))
      • Set SH_ActualDamage = (SH_DamageBase + (SH_DamageBonus x SH_Lvl))
      • Set SH_Real = 0.00
      • Set SH_SpeedUp = (Load 1 of 1 from SH_Hashtable)
      • Set SH_SpeedDown = (Load 2 of 1 from SH_Hashtable)
      • For each (Integer SH_Integer) from 1 to 15, do (Actions)
        • Loop - Actions
          • Set SH_Point2 = (SH_Point offset by SH_ActualArea towards SH_Real degrees)
          • Set SH_Real = (SH_Real + (360.00 / 15.00))
          • Unit - Create 1 Dummy (Visual RoF) for SH_Owner at SH_Point facing SH_Real degrees
          • Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_SH_Point2)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within SH_ActualArea of SH_Point matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of SH_Owner) and do (Actions)
        • Loop - Actions
          • Unit - Cause SH_Caster to damage (Picked unit), dealing 1.00 damage of attack type Spells and damage type Magic
          • Set SH_CurrentHeight = 0.00
          • Hashtable - Save Handle OfSH_Caster as 0 of (Key (Picked unit)) in SH_Hashtable
          • Hashtable - Save SH_CurrentHeight as 1 of (Key (Picked unit)) in SH_Hashtable
          • Hashtable - Save SH_ActualArea as 2 of (Key (Picked unit)) in SH_Hashtable
          • Hashtable - Save SH_ActualDamage as 3 of (Key (Picked unit)) in SH_Hashtable
          • Hashtable - Save SH_DownHeight as 6 of (Key (Picked unit)) in SH_Hashtable
          • Unit - Pause (Picked unit)
          • Unit - Turn collision for (Picked unit) Off
          • Unit - Create 1 Dummy for SH_Owner at SH_Point facing 0.00 degrees
          • Unit - Add Freeze (Dummy) to (Last created unit)
          • Unit - Set level of Freeze (Dummy) for (Last created unit) to (Integer(SH_Lvl))
          • Unit - Remove classification of A flying unit from (Picked unit)
          • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
          • Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
          • Unit - Add Storm Crow Form to (Picked unit)
          • Unit - Remove Storm Crow Form from (Picked unit)
          • Unit Group - Add (Picked unit) to SH_LoopGroup
          • Unit - Add classification of A flying unit to (Picked unit)
      • Trigger - Turn on Shatter Loop <gen>
      • Custom script: call RemoveLocation(udg_SH_Point)
  • LOOP:
  • Shatter Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in SH_LoopGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is dead) Equal to True
            • Then - Actions
              • Unit Group - Remove (Picked unit) from SH_LoopGroup
              • Unit - Remove Frozen buff from (Picked unit)
              • Unit - Remove classification of A flying unit from (Picked unit)
              • Unit - Unpause (Picked unit)
              • Unit - Turn collision for (Picked unit) On
              • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SH_Hashtable
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • ((Picked unit) is alive) Equal to True
                      • (Current flying height of (Picked unit)) Less than SH_Height
                      • (Load 6 of (Key (Picked unit)) from SH_Hashtable) Equal to SH_Height
                • Then - Actions
                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FreezingBreath\FreezingBreathTargetArt.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set SH_CurrentHeight = ((Load 1 of (Key (Picked unit)) from SH_Hashtable) + SH_SpeedUp)
                  • Animation - Change (Picked unit) flying height to SH_CurrentHeight at 9999999.00
                  • Hashtable - Save SH_CurrentHeight as 1 of (Key (Picked unit)) in SH_Hashtable
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • ((Picked unit) is alive) Equal to True
                          • (Load 1 of (Key (Picked unit)) from SH_Hashtable) Greater than (Default flying height of (Picked unit))
                    • Then - Actions
                      • Set SH_DownHeight = (SH_Height - 1.00)
                      • Hashtable - Save SH_DownHeight as 6 of (Key (Picked unit)) in SH_Hashtable
                      • Set SH_CurrentHeight = ((Load 1 of (Key (Picked unit)) from SH_Hashtable) - SH_SpeedDown)
                      • Hashtable - Save SH_CurrentHeight as 1 of (Key (Picked unit)) in SH_Hashtable
                      • Animation - Change (Picked unit) flying height to SH_CurrentHeight at 9999999.00
                    • Else - Actions
                      • Set SH_DownHeight = SH_Height
                      • Hashtable - Save SH_DownHeight as 6 of (Key (Picked unit)) in SH_Hashtable
                      • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
                      • Unit - Cause (Load 0 of (Key (Picked unit)) in SH_Hashtable) to damage (Picked unit), dealing (Load 3 of (Key (Picked unit)) from SH_Hashtable) damage of attack type Spells and damage type Magic
                      • Unit Group - Remove (Picked unit) from SH_LoopGroup
                      • Unit - Remove Frozen buff from (Picked unit)
                      • Unit - Remove classification of A flying unit from (Picked unit)
                      • Unit - Unpause (Picked unit)
                      • Unit - Turn collision for (Picked unit) On
                      • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SH_Hashtable
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is alive) Equal to True
                        • Then - Actions
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.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
          • (Number of units in SH_LoopGroup) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions


  • INIT:
  • Init Shatter Single
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Configureable Values --------
      • -------- Formula: Base Value + (Bonus Value * Level of Ability Cast) = Actual Value --------
      • Hashtable - Create a hashtable
      • Set SF_Hashtable = (Last created hashtable)
      • Set SF_AreaBase = 150.00
      • Set SF_AreaBonus = 50.00
      • Set SF_DamageBase = 150.00
      • Set SF_DamageBonus = 50.00
      • Set SF_CurrentHeight = 0.00
      • Set SF_Height = 600.00
      • Set SF_DownHeight = SF_Height
      • Set SF_SpeedUp = 10.00
      • Set SF_SpeedDown = 50.00
      • Set SF_Integer = 1
      • Hashtable - Save SF_SpeedUp as 1 of 1 in SF_Hashtable
      • Hashtable - Save SF_SpeedDown as 2 of 1 in SF_Hashtable
      • -------- Mana cost, Cooldown, Cast Range, size of targeting image and Description is changed in Object Editor --------
  • CAST:
  • Shatter Cast Single
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shatter Single Target
    • Actions
      • Set SF_Integer = 0
      • Set SF_DownHeight = SF_Height
      • Set SF_Caster = (Triggering unit)
      • Set SF_LVL = (Real((Level of (Ability being cast) for SH_Caster)))
      • Set SF_Owner = (Triggering player)
      • Set SF_Point = (Position of (Target unit of ability being cast))
      • Set SF_ActualArea = (SF_AreaBase + (SF_AreaBonus x SF_LVL))
      • Set SF_ActualDamage = (SF_DamageBase + (SF_DamageBonus x SF_LVL))
      • Set SF_Real = 0.00
      • Set SF_SpeedUp = (Load 1 of 1 from SF_Hashtable)
      • Set SF_SpeedDown = (Load 2 of 1 from SF_Hashtable)
      • For each (Integer SF_Integer) from 1 to 15, do (Actions)
        • Loop - Actions
          • Set SF_Point2 = (SF_Point offset by SF_ActualArea towards SF_Real degrees)
          • Set SF_Real = (SF_Real + (360.00 / 15.00))
          • Unit - Create 1 Dummy (Visual RoF) for SF_Owner at SF_Point facing SF_Real degrees
          • Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_SF_Point2)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 50.00 of SF_Point matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of SF_Owner) Equal t and do (Actions)
        • Loop - Actions
          • Unit - Cause SF_Caster to damage (Picked unit), dealing 1.00 damage of attack type Spells and damage type Magic
          • Set SF_CurrentHeight = 0.00
          • Hashtable - Save Handle OfSF_Caster as 0 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save SF_CurrentHeight as 1 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save SF_ActualArea as 2 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save SF_ActualDamage as 3 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save Handle OfSF_Owner as 5 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save SF_DownHeight as 6 of (Key (Picked unit)) in SF_Hashtable
          • Hashtable - Save Handle OfSF_Point as 7 of (Key (Picked unit)) in SF_Hashtable
          • Unit - Pause (Picked unit)
          • Unit - Turn collision for (Picked unit) Off
          • Unit - Create 1 Dummy for SF_Owner at SF_Point facing 0.00 degrees
          • Unit - Add Freeze (Dummy) to (Last created unit)
          • Unit - Set level of Freeze (Dummy) for (Last created unit) to (Integer(SF_LVL))
          • Unit - Remove classification of A flying unit from (Picked unit)
          • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
          • Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
          • Unit - Add Storm Crow Form to (Picked unit)
          • Unit - Remove Storm Crow Form from (Picked unit)
          • Unit Group - Add (Picked unit) to SF_LoopGroup
          • Unit - Add classification of A flying unit to (Picked unit)
      • Trigger - Turn on Shatter Loop Single <gen>
      • Custom script: call RemoveLocation(udg_SF_Point)
  • LOOP:
  • Shatter Loop Single
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in SF_LoopGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is dead) Equal to True
            • Then - Actions
              • Unit Group - Remove (Picked unit) from SF_LoopGroup
              • Unit - Remove Frozen buff from (Picked unit)
              • Unit - Remove classification of A flying unit from (Picked unit)
              • Unit - Unpause (Picked unit)
              • Unit - Turn collision for (Picked unit) On
              • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SF_Hashtable
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • (Current flying height of (Picked unit)) Less than SF_Height
                      • (Load 6 of (Key (Picked unit)) from SF_Hashtable) Equal to SF_Height
                      • ((Picked unit) is alive) Equal to True
                • Then - Actions
                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FreezingBreath\FreezingBreathTargetArt.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set SF_CurrentHeight = ((Load 1 of (Key (Picked unit)) from SF_Hashtable) + SF_SpeedUp)
                  • Animation - Change (Picked unit) flying height to SF_CurrentHeight at 9999999.00
                  • Hashtable - Save SF_CurrentHeight as 1 of (Key (Picked unit)) in SF_Hashtable
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (Load 1 of (Key (Picked unit)) from SH_Hashtable) Greater than (Default flying height of (Picked unit))
                          • ((Picked unit) is alive) Equal to True
                    • Then - Actions
                      • Set SF_DownHeight = (SF_Height - 1.00)
                      • Hashtable - Save SF_DownHeight as 6 of (Key (Picked unit)) in SF_Hashtable
                      • Set SF_CurrentHeight = ((Load 1 of (Key (Picked unit)) from SF_Hashtable) - SF_SpeedDown)
                      • Hashtable - Save SF_CurrentHeight as 1 of (Key (Picked unit)) in SF_Hashtable
                      • Animation - Change (Picked unit) flying height to SF_CurrentHeight at 9999999.00
                    • Else - Actions
                      • Set SF_DownHeight = SF_Height
                      • Hashtable - Save SF_DownHeight as 6 of (Key (Picked unit)) in SF_Hashtable
                      • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
                      • Unit Group - Remove (Picked unit) from SF_LoopGroup
                      • Unit - Remove Frozen buff from (Picked unit)
                      • Unit - Remove classification of A flying unit from (Picked unit)
                      • Unit - Unpause (Picked unit)
                      • Unit - Turn collision for (Picked unit) On
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is alive) Equal to True
                        • Then - Actions
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Unit - Cause (Load 0 of (Key (Picked unit)) in SF_Hashtable) to damage (Picked unit), dealing (Load 3 of (Key (Picked unit)) from SF_Hashtable) damage of attack type Spells and damage type Magic
                          • Unit Group - Pick every unit in (Units within (Load 2 of (Key (Picked unit)) from SF_Hashtable) of (Load 7 of (Key (Picked unit)) in SF_Hashtable) matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an and do (Actions)
                            • Loop - Actions
                              • Unit - Cause (Load 0 of (Key (Picked unit)) in SF_Hashtable) to damage (Picked unit), dealing (Load 3 of (Key (Picked unit)) from SF_Hashtable) damage of attack type Spells and damage type Magic
                          • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SF_Hashtable
                        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in SF_LoopGroup) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions



Enjoy!
Rate and Comment please.

TRIGGERS POSTED HERE MAY OR MAY NOT BE INACCURATE DUE TO A BAD UPDATE/EDIT SYSTEM
For Full Triggers View in WE, please do not post on triggers without seeing the triggers in WE (Preferably as posted triggers May be/is incorrect)

Updated 2012-01-24 | Fixed leak and polished some of the spells.

Keywords:
Efflorescence, Discharge, Charge, Thunder, Static, Electric, Heal, Holy, Nova, Loop, Spellpack, Pack, SFX, Multi, MUI, GUI, Shatter, Ice, Frost, Cold,
Contents

Spring Spellpack 2011 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Required changes Point2 is removed in a wrong place in Static Cast In Static Lightning Clear, don't do number of units in group checks when any unit dies Shatter messes up with the...

Moderator

M

Moderator

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

Reviewed by Maker, Spring Spellpack 2011 v0.4, 26th Jan 2012

Required changes
  • Point2 is removed in a wrong place in Static Cast
  • In Static Lightning Clear, don't do number of units in group checks when any unit dies
  • Shatter messes up with the classification of the unit. Store the original classification
  • Shatter -> Proper use of Crow Form
  • In Shatter Loop, do the turn off check only after you remove a unit from the group
  • In BoL Cast, don't use a group enumeration
  • There's no point in saving the handle of the caster for the caster
  • In BoL Loop you load stuff that you don't necessarily need
  • TC Cast seems to leak the effect group. I don't see a point in picking a group only to add the target into it and then instantly removing it from the group
Also don't create player groups if the floating text booleans are false.


Suggested changes
  • You could use tree detection in Static Cast
  • Share variables between spells. The spell pack has so many variables. For example you have 20 point variables, you only need about 4 or 5. You could use only one hashtable instead of 7
  • Improve tooltips, make them more like standard Blizzard tooltips

Is the spell pack really v0.4? That alone would have been a reason for me not to review this, since going from v0.4 to v1.0 implies major changes, and it is not worth it to revie incomplete resources.

11:26, 3rd Jun 2011
Maker:
Discharge:
Offest by 1.0 is quite useless:
  • Set TC_MovePoint = (TC_CasterPoint offset by 1.00 towards TC_Angle degrees)
Leaks:
  • Set TC_MovePoint = (TC_MovePoint offset by TC_Speed towards TC_Angle degrees)
Good job otherwise, fix those and it can be approved.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
Static Lightning

Static Lightning Cleat shouldn't be on all the time.
Why are these custom scripts:
  • Custom script: set udg_x1 = GetLocationX(udg_St_Point1)
Remove the or
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • ((Triggering unit) is in St_DurationGroup) Equal to True
    • Then - Actions
Learn tooltip has no hotkey, and you could list the damage.
Shatter

Use ...at 0:
  • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
Somehow when units rise and come back down, it doesn't look good. I think you could try to change it. Like make the drop speed have acceleration.
Increase the follow through time so the caster has time to complete the casting animation.
Beacon of Light

I like the moving effects
Increase the follow through time.
Efflorescence

This is in wrong place, causing leaks:
  • Custom script: call RemoveLocation(udg_S_Point2)
Increase the follow through time.
Can be cast even if target's health is full.
Discharge

Special effect leaks:
  • Unit Group - Pick every unit in TC_EffectGroup and do (Special Effect - Create a special effect attached to the origin of (Picked unit) using TC_EffectTarget)
TC Dummy Clear could be turned on/off.
This is in a wrong place:
  • Custom script: call RemoveLocation(udg_TC_Return)
You could load the 0 into a variable in the Dummy Clear trigger.

General:

Improve the tooltips.
Only do this after you remove a unit from the group:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Number of units in *Group*) Equal to 0
    • Then - Actions
      • Trigger - Turn off (This trigger)
    • Else - Actions
Remove the and, it adds an unneeded function:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • And - All (Conditions) are true
        • Conditions
          • Condition 1
          • Condition 2
You have way too many variables. You should share variables between spells.


Good job overall.
 
Level 7
Joined
Apr 12, 2011
Messages
124
Static Lightning

Static Lightning Cleat shouldn't be on all the time.
Why are these custom scripts:
  • Custom script: set udg_x1 = GetLocationX(udg_St_Point1)
Remove the or
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • ((Triggering unit) is in St_DurationGroup) Equal to True
    • Then - Actions
Learn tooltip has no hotkey, and you could list the damage.
Shatter

Use ...at 0:
  • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 9999999.00
Somehow when units rise and come back down, it doesn't look good. I think you could try to change it. Like make the drop speed have acceleration.
Increase the follow through time so the caster has time to complete the casting animation.
Beacon of Light

I like the moving effects
Increase the follow through time.
Efflorescence

This is in wrong place, causing leaks:
  • Custom script: call RemoveLocation(udg_S_Point2)
Increase the follow through time.
Can be cast even if target's health is full.
Discharge

Special effect leaks:
  • Unit Group - Pick every unit in TC_EffectGroup and do (Special Effect - Create a special effect attached to the origin of (Picked unit) using TC_EffectTarget)
TC Dummy Clear could be turned on/off.
This is in a wrong place:
  • Custom script: call RemoveLocation(udg_TC_Return)
You could load the 0 into a variable in the Dummy Clear trigger.

General:

Improve the tooltips.
Only do this after you remove a unit from the group:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Number of units in *Group*) Equal to 0
    • Then - Actions
      • Trigger - Turn off (This trigger)
    • Else - Actions
Remove the and, it adds an unneeded function:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • And - All (Conditions) are true
        • Conditions
          • Condition 1
          • Condition 2
You have way too many variables. You should share variables between spells.


Good job overall.

Tyvm, will take a look to my triggers when i get home round 3, 3.30
And I will share the ActualXXX variables, such as AOE and DMG, but Specific dmg sets and range set should be specific for each spell.

the screenshot says, "I am THOR!!!"
indeed :xxd:
 
Last edited:
Top