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

Lich King Spellpack v1.03

Lich King spellpack v1.02 by Maker.

GUI/MUI/Leakless

The pack contains 6 abilities:

Frostmourne's Hunger
The Lich King charges to the targeted unit pushing all other enemies back isolating the victim. Units that are knocked back get frozen. With each consecutive hit on the target, the Lich King transfers more and more of the victim's attack speed and damage to increase his own. The ability auto levels and is capped by the hero's level, maximum level of 10. The ability charges with each blow, but the charge will quickly vanish after changing the target.

  • FH Init Hash
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set FH_Hash = (Last created hashtable)
      • -------- -------------------- --------
      • -------- -------------------- --------
      • -------- Charge speed, initial --------
      • -------- -------------------- --------
      • Set FH_Reals[0] = 8.00
      • -------- -------------------- --------
      • -------- Charge speed, max --------
      • -------- -------------------- --------
      • Set FH_Reals[1] = 22.00
      • -------- -------------------- --------
      • -------- Charge acceleration --------
      • -------- -------------------- --------
      • Set FH_Reals[2] = 1.10
      • -------- -------------------- --------
      • -------- Charge knockback radius --------
      • -------- -------------------- --------
      • Set FH_Reals[3] = 256.00
      • -------- -------------------- --------
      • -------- Charge final knockback radius --------
      • -------- -------------------- --------
      • Set FH_Reals[4] = 400.00
      • -------- -------------------- --------
      • -------- Angle of charge knockback --------
      • -------- -------------------- --------
      • Set FH_Reals[5] = 45.00
      • -------- -------------------- --------
      • -------- Freeze time --------
      • -------- -------------------- --------
      • Set FH_Reals[6] = 3.00
      • -------- -------------------- --------
      • -------- Lich King unit type --------
      • -------- -------------------- --------
      • Set FH_Unit_Type = Lich King
      • -------- -------------------- --------
      • Set Temp_Group_1 = (Units in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to FH_Unit_Type))
      • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
        • Loop - Actions
          • Unit - Set level of |c00FF00FFFrostmourne's Hunger|r for (Picked unit) to (Level of (Picked unit))
      • Custom script: call DestroyGroup(udg_Temp_Group_1)
  • FH Increase Level
    • Events
      • Unit - A unit Gains a level
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to FH_Unit_Type
    • Actions
      • Unit - Set level of |c00FF00FFFrostmourne's Hunger|r for (Triggering unit) to (Level of (Triggering unit))
  • Frostmournes Hunger
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to |c00FF00FFFrostmourne's Hunger|r
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Unit_2 = (Target unit of ability being cast)
      • -------- ------------------------- --------
      • Special Effect - Create a special effect attached to the left foot of Temp_Unit_1 using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect1) of (Key (Triggering unit)) in FH_Hash
      • Special Effect - Create a special effect attached to the left hand of Temp_Unit_1 using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect2) of (Key (Triggering unit)) in FH_Hash
      • Special Effect - Create a special effect attached to the right foot of Temp_Unit_1 using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect3) of (Key (Triggering unit)) in FH_Hash
      • Special Effect - Create a special effect attached to the right hand of Temp_Unit_1 using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect4) of (Key (Triggering unit)) in FH_Hash
      • Special Effect - Create a special effect attached to the origin of Temp_Unit_1 using Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect5) of (Key (Triggering unit)) in FH_Hash
      • -------- ------------------------- --------
      • -------- The target that gets pwned --------
      • -------- ------------------------- --------
      • Hashtable - Save FH_Reals[0] as (Key speed) of (Key (Triggering unit)) in FH_Hash
      • Hashtable - Save Handle OfTemp_Unit_2 as (Key target) of (Key (Triggering unit)) in FH_Hash
      • -------- ------------------------- --------
      • Unit Group - Add Temp_Unit_1 to FH_Charge_Group
      • -------- ------------------------- --------
      • Trigger - Turn on FH Loop <gen>
      • Trigger - Turn on FH Knockback <gen>
  • FH Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in FH_Charge_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Unit_2 = (Load (Key target) of (Key (Picked unit)) in FH_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is alive) Equal to True
              • (Temp_Unit_2 is alive) Equal to True
              • (Load (Key boolean) of (Key (Picked unit)) from FH_Hash) Not equal to True
            • Then - Actions
              • Set Temp_Loc_1 = (Position of Temp_Unit_1)
              • Set Temp_Loc_2 = (Position of Temp_Unit_2)
              • -------- ------------------------- --------
              • Set Temp_Real_1 = (Distance between Temp_Loc_1 and Temp_Loc_2)
              • Set Temp_Real_2 = (Angle from Temp_Loc_1 to Temp_Loc_2)
              • Set Temp_Real_3 = (Load (Key speed) of (Key (Picked unit)) from FH_Hash)
              • Set Temp_Loc_3 = (Temp_Loc_1 offset by Temp_Real_3 towards Temp_Real_2 degrees)
              • -------- ------------------------- --------
              • -------- Set new speed --------
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_3 Less than (FH_Reals[1] / FH_Reals[2])
                • Then - Actions
                  • Hashtable - Save (Temp_Real_3 x FH_Reals[2]) as (Key speed) of (Key (Picked unit)) in FH_Hash
                • Else - Actions
                  • Hashtable - Save FH_Reals[1] as (Key speed) of (Key (Picked unit)) in FH_Hash
              • -------- ------------------------- --------
              • -------- Have we not arrived at the target --------
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_1 Greater than 192.00
                • Then - Actions
                  • Set Temp_Real_3 = (Facing of Temp_Unit_1)
                  • Set Temp_Group_1 = (Units within FH_Reals[3] of Temp_Loc_3)
                  • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                    • Loop - Actions
                      • Set Temp_Unit_3 = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Temp_Unit_3 is alive) Equal to True
                          • Temp_Unit_3 Not equal to Temp_Unit_2
                          • (Temp_Unit_3 is A structure) Equal to False
                          • (Temp_Unit_3 is in FH_Loop_Group_2) Equal to False
                          • (Temp_Unit_3 is in FH_Knockback_Group) Equal to False
                          • (Temp_Unit_3 belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True
                        • Then - Actions
                          • Set Temp_Loc_4 = (Position of Temp_Unit_3)
                          • -------- ------------------------- --------
                          • -------- Picks units that are on front left of the caster --------
                          • -------- ------------------------- --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Cos(((Temp_Real_3 + 45.00) - (Angle from Temp_Loc_3 to Temp_Loc_4)))) Greater than (Cos(45.00))
                            • Then - Actions
                              • Special Effect - Destroy (Load (Key eff1) of (Key (Picked unit)) in FH_Hash)
                              • Special Effect - Create a special effect attached to the origin of Temp_Unit_3 using Abilities\Spells\Other\Tornado\Tornado_Target.mdl
                              • -------- ------------------------- --------
                              • Hashtable - Save 0.00 as (Key loop) of (Key (Picked unit)) in FH_Hash
                              • Hashtable - Save 1000.00 as (Key offset) of (Key (Picked unit)) in FH_Hash
                              • Hashtable - Save (Temp_Real_2 + FH_Reals[5]) as (Key angle) of (Key (Picked unit)) in FH_Hash
                              • Hashtable - Save Handle Of(Last created special effect) as (Key eff1) of (Key (Picked unit)) in FH_Hash
                              • -------- ------------------------- --------
                              • Unit Group - Add Temp_Unit_3 to FH_Knockback_Group
                            • Else - Actions
                              • -------- ------------------------- --------
                              • -------- Picks units that are on front right of the caster --------
                              • -------- ------------------------- --------
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Cos(((Temp_Real_3 - 45.00) - (Angle from Temp_Loc_3 to Temp_Loc_4)))) Greater than (Cos(45.00))
                                • Then - Actions
                                  • Special Effect - Destroy (Load (Key eff1) of (Key (Picked unit)) in FH_Hash)
                                  • Special Effect - Create a special effect attached to the origin of Temp_Unit_3 using Abilities\Spells\Other\Tornado\Tornado_Target.mdl
                                  • -------- ------------------------- --------
                                  • Hashtable - Save 0.00 as (Key loop) of (Key (Picked unit)) in FH_Hash
                                  • Hashtable - Save 1000.00 as (Key offset) of (Key (Picked unit)) in FH_Hash
                                  • Hashtable - Save (Temp_Real_2 - FH_Reals[5]) as (Key angle) of (Key (Picked unit)) in FH_Hash
                                  • Hashtable - Save Handle Of(Last created special effect) as (Key eff1) of (Key (Picked unit)) in FH_Hash
                                  • -------- ------------------------- --------
                                  • Unit Group - Add Temp_Unit_3 to FH_Knockback_Group
                                • Else - Actions
                          • Custom script: call RemoveLocation(udg_Temp_Loc_4)
                        • Else - Actions
                  • -------- ------------------------- --------
                  • Trigger - Turn on FH Knockback <gen>
                  • -------- ------------------------- --------
                  • Custom script: call DestroyGroup(udg_Temp_Group_1)
                • Else - Actions
                  • Hashtable - Save True as (Key boolean) of (Key (Picked unit)) in FH_Hash
                  • -------- ------------------------- --------
                  • Set Temp_Group_1 = (Units within FH_Reals[4] of Temp_Loc_3)
                  • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                    • Loop - Actions
                      • Set Temp_Unit_3 = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Temp_Unit_3 is alive) Equal to True
                          • Temp_Unit_3 Not equal to Temp_Unit_2
                          • (Temp_Unit_3 is A structure) Equal to False
                          • (Temp_Unit_3 belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True
                        • Then - Actions
                          • Set Temp_Loc_4 = (Position of Temp_Unit_3)
                          • -------- ------------------------- --------
                          • Special Effect - Destroy (Load (Key eff1) of (Key (Picked unit)) in FH_Hash)
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_3 using Abilities\Spells\Other\Tornado\Tornado_Target.mdl
                          • -------- ------------------------- --------
                          • Hashtable - Save 0.00 as (Key loop) of (Key (Picked unit)) in FH_Hash
                          • Hashtable - Save 1000.00 as (Key offset) of (Key (Picked unit)) in FH_Hash
                          • Hashtable - Save (Angle from Temp_Loc_3 to Temp_Loc_4) as (Key angle) of (Key (Picked unit)) in FH_Hash
                          • Hashtable - Save Handle Of(Last created special effect) as (Key eff1) of (Key (Picked unit)) in FH_Hash
                          • -------- ------------------------- --------
                          • Unit Group - Add Temp_Unit_3 to FH_Knockback_Group
                          • -------- ------------------------- --------
                          • Custom script: call RemoveLocation(udg_Temp_Loc_4)
                        • Else - Actions
                  • Trigger - Turn on FH Knockback <gen>
                  • Custom script: call DestroyGroup(udg_Temp_Group_1)
              • -------- ------------------------- --------
              • Set Temp_Real_3 = (X of Temp_Loc_3)
              • Set Temp_Real_4 = (Y of Temp_Loc_3)
              • -------- ------------------------- --------
              • Custom script: call SetUnitX(udg_Temp_Unit_1, udg_Temp_Real_3)
              • Custom script: call SetUnitY(udg_Temp_Unit_1, udg_Temp_Real_4)
              • -------- ------------------------- --------
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
              • Custom script: call RemoveLocation(udg_Temp_Loc_3)
            • Else - Actions
              • Hashtable - Save False as (Key boolean) of (Key (Picked unit)) in FH_Hash
              • Hashtable - Save FH_Reals[0] as (Key speed) of (Key (Picked unit)) in FH_Hash
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key effect1) of (Key (Picked unit)) in FH_Hash)
              • Special Effect - Destroy (Load (Key effect2) of (Key (Picked unit)) in FH_Hash)
              • Special Effect - Destroy (Load (Key effect3) of (Key (Picked unit)) in FH_Hash)
              • Special Effect - Destroy (Load (Key effect4) of (Key (Picked unit)) in FH_Hash)
              • Special Effect - Destroy (Load (Key effect5) of (Key (Picked unit)) in FH_Hash)
              • -------- ------------------------- --------
              • Unit Group - Remove Temp_Unit_1 from FH_Charge_Group
              • Unit Group - Add Temp_Unit_1 to FH_Group
              • -------- ------------------------- --------
              • Trigger - Turn on FH Attack <gen>
              • -------- ------------------------- --------
              • Unit - Unpause Temp_Unit_1
              • Unit - Order Temp_Unit_1 to Attack Temp_Unit_2
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (FH_Charge_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • FH Knockback
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in FH_Knockback_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_1 = (Load (Key loop) of (Key (Picked unit)) from FH_Hash)
          • Set Temp_Real_2 = (Load (Key angle) of (Key (Picked unit)) from FH_Hash)
          • Set Temp_Real_3 = (Load (Key offset) of (Key (Picked unit)) from FH_Hash)
          • -------- ------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is alive) Equal to True
              • Temp_Real_3 Greater than or equal to 2.00
            • Then - Actions
              • Set Temp_Loc_1 = (Position of Temp_Unit_1)
              • Set Temp_Real_4 = (30.00 x (Power(0.90, Temp_Real_1)))
              • Set Temp_Loc_2 = (Temp_Loc_1 offset by Temp_Real_4 towards Temp_Real_2 degrees)
              • -------- ------------------------- --------
              • Hashtable - Save Temp_Real_4 as (Key offset) of (Key (Picked unit)) in FH_Hash
              • Hashtable - Save (Temp_Real_1 + 1.00) as (Key loop) of (Key (Picked unit)) in FH_Hash
              • -------- ------------------------- --------
              • -------- Pathability check --------
              • -------- ------------------------- --------
              • Item - Create Claws of Attack +15 at Temp_Loc_2
              • Set Temp_Loc_3 = (Position of (Last created item))
              • Set Temp_Real_1 = (X of Temp_Loc_2)
              • Set Temp_Real_2 = (Y of Temp_Loc_2)
              • Set Temp_Real_3 = (X of Temp_Loc_3)
              • Set Temp_Real_4 = (Y of Temp_Loc_3)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Abs((Temp_Real_1 - Temp_Real_3))) Less than 6.00
                  • (Abs((Temp_Real_2 - Temp_Real_4))) Less than 6.00
                • Then - Actions
                  • Custom script: call SetUnitX(udg_Temp_Unit_1, udg_Temp_Real_3)
                  • Custom script: call SetUnitY(udg_Temp_Unit_1, udg_Temp_Real_4)
                • Else - Actions
              • Item - Remove (Last created item)
              • -------- ------------------------- --------
              • Set Temp_Integer_1 = (Random integer number between 1 and 4)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Integer_1 Equal to 1
                • Then - Actions
                  • Unit - Make Temp_Unit_1 face ((Facing of Temp_Unit_1) - 180.00) over 0.00 seconds
                • Else - Actions
              • -------- ------------------------- --------
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
              • Custom script: call RemoveLocation(udg_Temp_Loc_3)
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from FH_Knockback_Group
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key eff1) of (Key (Picked unit)) in FH_Hash)
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Temp_Unit_1 is alive) Equal to True
                • Then - Actions
                  • Unit - Pause Temp_Unit_1
                  • Animation - Change Temp_Unit_1's animation speed to 0.00% of its original speed
                  • -------- ------------------------- --------
                  • Special Effect - Destroy (Load (Key ice) of (Key (Picked unit)) in FH_Hash)
                  • Special Effect - Create a special effect attached to the origin of Temp_Unit_1 using Abilities\Spells\Undead\FreezingBreath\FreezingBreathTargetArt.mdl
                  • -------- ------------------------- --------
                  • Hashtable - Save Handle Of(Last created special effect) as (Key ice) of (Key (Picked unit)) in FH_Hash
                  • Hashtable - Save FH_Reals[6] as (Key freeze_timer) of (Key (Picked unit)) in FH_Hash
                  • -------- ------------------------- --------
                  • Unit Group - Add Temp_Unit_1 to FH_Loop_Group_2
                  • -------- ------------------------- --------
                  • Trigger - Turn on FH Freeze <gen>
                • Else - Actions
                  • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in FH_Hash
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (FH_Knockback_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • FH Freeze
    • Events
      • Time - Every 0.25 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in FH_Loop_Group_2 and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_1 = (Load (Key freeze_timer) of (Key (Picked unit)) from FH_Hash)
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_1 Greater than 0.00
              • (Temp_Unit_1 is alive) Equal to True
            • Then - Actions
              • Hashtable - Save (Temp_Real_1 - 0.25) as (Key freeze_timer) of (Key (Picked unit)) in FH_Hash
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from FH_Loop_Group_2
              • -------- -------------------- --------
              • Special Effect - Destroy (Load (Key ice) of (Key (Picked unit)) in FH_Hash)
              • -------- -------------------- --------
              • Unit - Unpause Temp_Unit_1
              • Animation - Change Temp_Unit_1's animation speed to 100.00% of its original speed
              • -------- -------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in FH_Hash
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (FH_Loop_Group_2 is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • FH Attack
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) is in FH_Group) Equal to True
    • Actions
      • Set Temp_Unit_1 = (Attacking unit)
      • -------- -------------------- --------
      • -------- Check if the attacked unit is the original spell target --------
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Attacked unit) Equal to (Load (Key target) of (Key (Attacking unit)) in FH_Hash)
        • Then - Actions
          • Set Temp_Unit_2 = (Triggering unit)
          • Set Temp_Loc_1 = (Position of Temp_Unit_1)
          • -------- -------------------- --------
          • Set Temp_Integer_1 = (Load (Key buff_lvl) of (Key (Attacking unit)) from FH_Hash)
          • -------- -------------------- --------
          • -------- Check/increase spell level for caster --------
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Integer_1 Less than 10
              • Temp_Integer_1 Less than (Level of Temp_Unit_1)
            • Then - Actions
              • Set Temp_Integer_1 = (Temp_Integer_1 + 1)
            • Else - Actions
          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
          • Unit - Add FH Cripple - (boost) to (Last created unit)
          • Unit - Set level of FH Cripple - (boost) for (Last created unit) to Temp_Integer_1
          • Unit - Order (Last created unit) to Undead Necromancer - Cripple Temp_Unit_1
          • -------- -------------------- --------
          • Hashtable - Save 4 as (Key timer) of (Key (Attacking unit)) in FH_Hash
          • Hashtable - Save Temp_Integer_1 as (Key buff_lvl) of (Key (Attacking unit)) in FH_Hash
          • -------- -------------------- --------
          • Set Temp_Integer_1 = (Load (Key buff_lvl) of (Key (Triggering unit)) from FH_Hash)
          • -------- -------------------- --------
          • -------- Check/increase spell level for target --------
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Integer_1 Less than 10
              • Temp_Integer_1 Less than (Level of Temp_Unit_1)
            • Then - Actions
              • Set Temp_Integer_1 = (Temp_Integer_1 + 1)
            • Else - Actions
          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
          • Unit - Add FH Cripple - (nerf) to (Last created unit)
          • Unit - Set level of FH Cripple - (nerf) for (Last created unit) to Temp_Integer_1
          • Unit - Order (Last created unit) to Undead Necromancer - Cripple Temp_Unit_2
          • -------- -------------------- --------
          • Hashtable - Save 4 as (Key timer) of (Key (Triggering unit)) in FH_Hash
          • Hashtable - Save Temp_Integer_1 as (Key buff_lvl) of (Key (Triggering unit)) in FH_Hash
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is in FH_Loop_Group_1) Equal to False
            • Then - Actions
              • Unit Group - Add Temp_Unit_1 to FH_Loop_Group_1
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_2 is in FH_Loop_Group_1) Equal to False
            • Then - Actions
              • Unit Group - Add Temp_Unit_2 to FH_Loop_Group_1
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (FH Pick Units <gen> is on) Equal to False
            • Then - Actions
              • Trigger - Turn on FH Pick Units <gen>
            • Else - Actions
          • -------- -------------------- --------
          • Custom script: call RemoveLocation(udg_Temp_Loc_1)
        • Else - Actions
          • Unit Group - Remove Temp_Unit_1 from FH_Group
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (FH_Group is empty) Equal to True
            • Then - Actions
              • Trigger - Turn off (This trigger)
            • Else - Actions
  • FH Pick Units
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in FH_Loop_Group_1 and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Integer_2 = (Load (Key timer) of (Key (Picked unit)) from FH_Hash)
          • -------- -------------------- --------
          • Set Temp_Integer_2 = (Temp_Integer_2 - 1)
          • -------- -------------------- --------
          • Hashtable - Save Temp_Integer_2 as (Key timer) of (Key (Picked unit)) in FH_Hash
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Integer_2 Greater than 0
              • (Temp_Unit_1 is alive) Equal to True
            • Then - Actions
            • Else - Actions
              • Set Temp_Integer_1 = (Load (Key buff_lvl) of (Key (Picked unit)) from FH_Hash)
              • Set Temp_Integer_1 = (Temp_Integer_1 - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Integer_1 Greater than 0
                • Then - Actions
                  • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                  • -------- -------------------- --------
                  • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • -------- -------------------- --------
                  • -------- Boost caster, nerf target --------
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Temp_Unit_1 has buff Cripple - (FH boost) ) Equal to True
                          • ((Key unit) is stored as a Handle of (Key (Picked unit)) in FH_Hash) Equal to True
                    • Then - Actions
                      • Unit - Add FH Cripple - (boost) to (Last created unit)
                      • Unit - Set level of FH Cripple - (boost) for (Last created unit) to Temp_Integer_1
                    • Else - Actions
                      • Unit - Add FH Cripple - (nerf) to (Last created unit)
                      • Unit - Set level of FH Cripple - (nerf) for (Last created unit) to Temp_Integer_1
                  • -------- -------------------- --------
                  • Unit - Order (Last created unit) to Undead Necromancer - Cripple (Picked unit)
                  • -------- -------------------- --------
                  • Hashtable - Save Temp_Integer_1 as (Key buff_lvl) of (Key (Picked unit)) in FH_Hash
                  • -------- -------------------- --------
                  • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                • Else - Actions
                  • Unit Group - Remove Temp_Unit_1 from FH_Loop_Group_1
                  • -------- -------------------- --------
                  • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in FH_Hash
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (FH_Loop_Group_1 is empty) Equal to True
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
Distortion Wave
Launches a wave of unholy magic in front of the Lich King causing horrible burn damage. Units under the effect of Distortion Wave have a chance to get confused due to the pain they suffer from being burned by the unholy magic of the wave. Confused units have a chance to attack allies once per second.



  • DW Initialize
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • -------- -------------------- --------
      • Hashtable - Create a hashtable
      • Set DW_Hash = (Last created hashtable)
      • -------- -------------------- --------
      • -------- Range --------
      • Set DW_Reals[0] = 700.00
      • -------- -------------------- --------
      • -------- Base damage per second --------
      • Set DW_Reals[1] = 18.00
      • -------- -------------------- --------
      • -------- Ability level bonus damage per second --------
      • Set DW_Reals[2] = 12.00
      • -------- -------------------- --------
      • -------- Damage over time duration --------
      • Set DW_Reals[3] = 6.00
      • -------- -------------------- --------
      • -------- Angle of effects, the width of the cone is this times two in angles --------
      • Set DW_Reals[4] = 30.00
      • -------- -------------------- --------
      • -------- Damage intelligence modifier --------
      • -------- 1 means every point in int increases the damage by 1 %. --------
      • Set DW_Reals[5] = 1.00
      • -------- -------------------- --------
      • -------- Chance to confuse, base --------
      • Set DW_Reals[6] = 15.00
      • -------- -------------------- --------
      • -------- Chance to confuse, ability level bonus --------
      • Set DW_Reals[7] = 5.00
      • -------- -------------------- --------
      • -------- Don't change these --------
      • Set DW_Reals[1] = (DW_Reals[1] / 10.00)
      • Set DW_Reals[2] = (DW_Reals[2] / 10.00)
  • Distortion Wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to |c00FF00FFDistortion Wave|r
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
      • Set Temp_Loc_2 = (Target point of ability being cast)
      • Set Temp_Real_1 = (Angle from Temp_Loc_1 to Temp_Loc_2)
      • Set Temp_Integer_1 = (Level of |c00FF00FFDistortion Wave|r for Temp_Unit_1)
      • -------- -------------------- --------
      • -------- Calculate damage --------
      • Set Temp_Real_2 = ((DW_Reals[1] + ((Real(Temp_Integer_1)) x DW_Reals[2])) x (1.00 + ((Real((Intelligence of Temp_Unit_1 (Include bonuses)))) / (100.00 / DW_Reals[5]))))
      • -------- -------------------- --------
      • Set Temp_Group_1 = (Units within DW_Reals[0] of Temp_Loc_1 matching ((((Owner of (Matching unit)) is an enemy of (Owner of Temp_Unit_1)) Equal to True) and (((Matching unit) is alive) Equal to True)))
      • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_2 = (Picked unit)
          • Set Temp_Loc_3 = (Position of Temp_Unit_2)
          • -------- -------------------- --------
          • -------- Check if the units are inside the cone --------
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Cos((Temp_Real_1 - (Angle from Temp_Loc_1 to Temp_Loc_3)))) Greater than (Cos(DW_Reals[4]))
            • Then - Actions
              • -------- -------------------- --------
              • -------- Create dummy and order it to cast slow on picked units --------
              • -------- -------------------- --------
              • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Default building facing degrees
              • Set Temp_Unit_3 = (Last created unit)
              • Unit - Add DW Cripple to Temp_Unit_3
              • Unit - Set level of DW Cripple for Temp_Unit_3 to Temp_Integer_1
              • Unit - Order Temp_Unit_3 to Undead Necromancer - Cripple Temp_Unit_2
              • Unit - Add a 1.00 second Generic expiration timer to Temp_Unit_3
              • -------- -------------------- --------
              • Hashtable - Save 0.00 as (Key time) of (Key (Picked unit)) in DW_Hash
              • Hashtable - Save DW_Reals[3] as (Key loops) of (Key (Picked unit)) in DW_Hash
              • Hashtable - Save Temp_Real_2 as (Key damage) of (Key (Picked unit)) in DW_Hash
              • Hashtable - Save Handle OfTemp_Unit_1 as (Key caster) of (Key (Picked unit)) in DW_Hash
              • -------- -------------------- --------
              • Unit Group - Add Temp_Unit_2 to DW_Group
            • Else - Actions
          • Custom script: call RemoveLocation(udg_Temp_Loc_3)
      • -------- -------------------- --------
      • -------- These are used to create the effects on ground --------
      • -------- -------------------- --------
      • Hashtable - Save 0.00 as (Key loop) of (Key (Triggering unit)) in DW_Hash
      • Hashtable - Save Temp_Real_1 as (Key angle) of (Key (Triggering unit)) in DW_Hash
      • -------- -------------------- --------
      • Unit Group - Pick every unit in DW_Group and do (Actions)
        • Loop - Actions
          • Custom script: set udg_Temp_Group_2 = CreateGroup()
          • Unit Group - Add all units of Temp_Group_1 to Temp_Group_2
          • Unit Group - Remove (Picked unit) from Temp_Group_2
          • Unit - Order (Picked unit) to Attack Once (Random unit from Temp_Group_2)
          • Custom script: call DestroyGroup(udg_Temp_Group_2)
      • -------- -------------------- --------
      • Unit Group - Add Temp_Unit_1 to DW_Effects
      • -------- -------------------- --------
      • Trigger - Turn on DW Ground Effects <gen>
      • -------- -------------------- --------
      • Custom script: call DestroyGroup(udg_Temp_Group_1)
      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
      • Custom script: call RemoveLocation(udg_Temp_Loc_2)
  • DW Ground Effects
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in DW_Effects and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_2 = (Load (Key loop) of (Key (Picked unit)) from DW_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_2 Less than 10.00
            • Then - Actions
              • Set Temp_Loc_1 = (Position of Temp_Unit_1)
              • -------- -------------------- --------
              • Set Temp_Real_1 = (Load (Key angle) of (Key (Picked unit)) from DW_Hash)
              • -------- -------------------- --------
              • Set Temp_Loc_2 = (Temp_Loc_1 offset by 128.00 towards Temp_Real_1 degrees)
              • -------- -------------------- --------
              • Hashtable - Save (Temp_Real_2 + 1.00) as (Key loop) of (Key (Picked unit)) in DW_Hash
              • -------- -------------------- --------
              • -------- Create effects --------
              • -------- -------------------- --------
              • For each (Integer A) from 0 to ((Integer(DW_Reals[4])) / 2), do (Actions)
                • Loop - Actions
                  • Set Temp_Loc_3 = (Temp_Loc_2 offset by (Temp_Real_2 x 70.00) towards ((Temp_Real_1 - DW_Reals[4]) + ((Real((Integer A))) x 4.00)) degrees)
                  • -------- -------------------- --------
                  • Special Effect - Create a special effect at Temp_Loc_3 using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at Temp_Loc_3 using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- -------------------- --------
                  • Custom script: call RemoveLocation(udg_Temp_Loc_3)
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from DW_Effects
              • -------- -------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DW_Hash
              • -------- -------------------- --------
              • Trigger - Turn on DW Burn <gen>
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in DW_Effects) Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • DW Burn
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in DW_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • -------- -------------------- --------
          • Set Temp_Real_1 = (Load (Key loops) of (Key (Picked unit)) from DW_Hash)
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_1 Greater than 0.00
            • Then - Actions
              • -------- -------------------- --------
              • Set Temp_Unit_2 = (Load (Key caster) of (Key (Picked unit)) in DW_Hash)
              • Set Temp_Real_2 = (Load (Key time) of (Key (Picked unit)) from DW_Hash)
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Temp_Unit_2 is alive) Equal to True
                • Then - Actions
                  • Unit - Cause Temp_Unit_2 to damage Temp_Unit_1, dealing (Load (Key damage) of (Key (Picked unit)) from DW_Hash) damage of attack type Spells and damage type Cold
                • Else - Actions
                  • Unit - Cause Temp_Unit_1 to damage Temp_Unit_1, dealing (Load (Key damage) of (Key (Picked unit)) from DW_Hash) damage of attack type Spells and damage type Cold
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_2 Equal to 1.00
                • Then - Actions
                  • Set Temp_Real_2 = 0.00
                  • -------- -------------------- --------
                  • Hashtable - Save (Temp_Real_1 - 1.00) as (Key loops) of (Key (Picked unit)) in DW_Hash
                  • -------- -------------------- --------
                  • Special Effect - Create a special effect attached to the chest of Temp_Unit_1 using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect attached to the left hand of Temp_Unit_1 using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect attached to the right hand of Temp_Unit_1 using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Random real number between 1.00 and 100.00) Less than or equal to (DW_Reals[6] + (DW_Reals[7] x (Real((Level of |c00FF00FFDistortion Wave|r for Temp_Unit_2)))))
                    • Then - Actions
                      • Custom script: set udg_Temp_Group_1 = CreateGroup()
                      • Unit Group - Add all units of DW_Group to Temp_Group_1
                      • Unit Group - Remove Temp_Unit_1 from Temp_Group_1
                      • Unit - Order Temp_Unit_1 to Attack Once (Random unit from Temp_Group_1)
                      • Custom script: call DestroyGroup(udg_Temp_Group_1)
                    • Else - Actions
                • Else - Actions
                  • Set Temp_Real_2 = (Temp_Real_2 + 0.10)
              • Hashtable - Save Temp_Real_2 as (Key time) of (Key (Picked unit)) in DW_Hash
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from DW_Group
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DW_Hash
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in DW_Group) Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions

Distort Reality

Using his immense mental powers, the Lich King is able to partially transfer his physical existence into another reality making him more difficult to be hit and able to pass through enemy units. Spirits from beyond get summoned to aid the Lich King. When transferring between different realities, lightnings are summoned, damaging all enemy units hit by them.


  • DR Initialize
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • -------- -------------------- --------
      • Hashtable - Create a hashtable
      • Set DR_Hash = (Last created hashtable)
      • -------- -------------------- --------
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Player - Disable Spell Book - (DR) for (Player((Integer A)))
      • -------- -------------------- --------
      • -------- Number of lightning effects --------
      • -------- -------------------- --------
      • Set DR_Reals[0] = 8.00
      • -------- -------------------- --------
      • -------- Lightning initial offset --------
      • -------- -------------------- --------
      • Set DR_Reals[1] = 350.00
      • -------- -------------------- --------
      • -------- Lightning rotation speed --------
      • -------- -------------------- --------
      • Set DR_Reals[2] = 10.00
      • -------- -------------------- --------
      • -------- Lightning converging/diverging speed --------
      • -------- -------------------- --------
      • Set DR_Reals[3] = 10.50
      • -------- -------------------- --------
      • -------- Level 1 evasion chance --------
      • -------- -------------------- --------
      • Set DR_Reals[4] = 40.00
      • -------- -------------------- --------
      • -------- Lightning damage, base --------
      • -------- -------------------- --------
      • Set DR_Reals[5] = 5.00
      • -------- -------------------- --------
      • -------- Lightning damage, ability level bonus --------
      • -------- -------------------- --------
      • Set DR_Reals[6] = 5.00
      • -------- -------------------- --------
      • -------- Spell duration --------
      • -------- -------------------- --------
      • Set DR_Reals[7] = 10.00
      • -------- -------------------- --------
      • -------- Blinking speed --------
      • -------- -------------------- --------
      • Set DR_Reals[8] = 6.00
      • -------- -------------------- --------
      • -------- Lightning damage radius --------
      • -------- -------------------- --------
      • Set DR_Reals[9] = 48.00
      • -------- -------------------- --------
      • -------- Damage intelligence modifier; 1 means 1 point in int gives 1 % boost to spell damage --------
      • -------- -------------------- --------
      • Set DR_Reals[10] = 1.00
      • -------- -------------------- --------
      • -------- Lightning speed 2 --------
      • -------- -------------------- --------
      • Set DR_Reals[11] = 30.00
      • -------- -------------------- --------
      • -------- Spirit appearance interval, min --------
      • -------- -------------------- --------
      • Set DR_Reals[12] = 0.25
      • -------- -------------------- --------
      • -------- Spirit appearance interval, max --------
      • -------- -------------------- --------
      • Set DR_Reals[13] = 0.50
      • -------- -------------------- --------
      • -------- Turn unit collision off when spell is enabled --------
      • -------- This allows the unit to pass through anything --------
      • -------- 1 = collision is turned off, other values = collision stays on --------
      • -------- -------------------- --------
      • Set DR_Reals[14] = 1.00
      • -------- -------------------- --------
      • -------- Max values of the map --------
      • -------- -------------------- --------
      • Set DR_Reals[15] = (Min X of (Playable map area))
      • Set DR_Reals[16] = (Max X of (Playable map area))
      • Set DR_Reals[17] = (Min Y of (Playable map area))
      • Set DR_Reals[18] = (Max Y of (Playable map area))
      • -------- -------------------- --------
      • -------- Offset of moving the unit when out of map area --------
      • -------- -------------------- --------
      • Set DR_Reals[19] = 16.00
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • DR_Reals[13] Less than DR_Reals[12]
        • Then - Actions
          • Set DR_Reals[13] = DR_Reals[12]
        • Else - Actions
  • Distort Reality
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to |c00FF00FFDistort Reality|r
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
      • Set Temp_Real_1 = (Real((Level of |c00FF00FFDistort Reality|r for Temp_Unit_1)))
      • -------- -------------------- --------
      • Set Temp_Real_2 = (Random angle)
      • -------- -------------------- --------
      • -------- Calculate damage --------
      • -------- -------------------- --------
      • Set Temp_Real_3 = ((DR_Reals[5] + ((Real((Level of |c00FF00FFDistort Reality|r for Temp_Unit_1))) x DR_Reals[6])) x (1.00 + ((Real((Intelligence of Temp_Unit_1 (Include bonuses)))) / (100.00 / DR_Reals[10]))))
      • -------- -------------------- --------
      • Hashtable - Save Temp_Real_2 as (Key orig_angle) of (Key (Triggering unit)) in DR_Hash
      • -------- -------------------- --------
      • -------- Create lightning effects --------
      • -------- -------------------- --------
      • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
        • Loop - Actions
          • Set Temp_Loc_2 = (Temp_Loc_1 offset by DR_Reals[1] towards Temp_Real_2 degrees)
          • -------- -------------------- --------
          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Default building facing degrees
          • Set Temp_Unit_2 = (Last created unit)
          • Unit - Add a 2.00 second Generic expiration timer to Temp_Unit_2
          • -------- -------------------- --------
          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
          • Hashtable - Save Handle Of(Last created special effect) as (Key (effect + (String((Integer A))))) of (Key (Triggering unit)) in DR_Hash
          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
          • Hashtable - Save Handle Of(Last created special effect) as (Key (effect + (String(((Integer(DR_Reals[0])) + (Integer A)))))) of (Key (Triggering unit)) in DR_Hash
          • -------- -------------------- --------
          • Hashtable - Save Handle OfTemp_Unit_2 as (Key (dummy + (String((Integer A))))) of (Key (Triggering unit)) in DR_Hash
          • -------- -------------------- --------
          • Set Temp_Real_2 = (Temp_Real_2 + (360.00 / DR_Reals[0]))
          • -------- -------------------- --------
          • Custom script: call RemoveLocation(udg_Temp_Loc_2)
      • -------- -------------------- --------
      • Special Effect - Create a special effect attached to the origin of Temp_Unit_1 using Abilities\Spells\NightElf\Starfall\StarfallCaster.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key starfall) of (Key (Triggering unit)) in DR_Hash
      • -------- -------------------- --------
      • Hashtable - Save 0.00 as (Key transparency) of (Key (Triggering unit)) in DR_Hash
      • Hashtable - Save DR_Reals[1] as (Key offset) of (Key (Triggering unit)) in DR_Hash
      • Hashtable - Save DR_Reals[7] as (Key timer) of (Key (Triggering unit)) in DR_Hash
      • Hashtable - Save DR_Reals[0] as (Key effects) of (Key (Triggering unit)) in DR_Hash
      • Hashtable - Save Temp_Real_3 as (Key damage) of (Key (Triggering unit)) in DR_Hash
      • Hashtable - Save (DR_Reals[4] / (DR_Reals[1] / DR_Reals[3])) as (Key trans_speed) of (Key (Triggering unit)) in DR_Hash
      • -------- -------------------- --------
      • Unit Group - Add Temp_Unit_1 to DR_Group
      • -------- -------------------- --------
      • Trigger - Turn on DR Loop <gen>
      • -------- -------------------- --------
      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
  • DR Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- ------------------------- --------
      • -------- The caster loop --------
      • -------- ------------------------- --------
      • Unit Group - Pick every unit in DR_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------- --------
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_1 = (Load (Key offset) of (Key (Picked unit)) from DR_Hash)
          • Set Temp_Real_5 = (Load (Key timer) of (Key (Picked unit)) from DR_Hash)
          • -------- ------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_1 Greater than 0.00
              • Temp_Real_5 Greater than 0.00
              • (Temp_Unit_1 is alive) Equal to True
            • Then - Actions
              • -------- ------------------------- --------
              • -------- Test for phase 1; lightnings converging --------
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_1 Greater than 0.00
                  • Temp_Real_5 Greater than or equal to DR_Reals[7]
                • Then - Actions
                  • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                  • Set Temp_Real_2 = (Load (Key orig_angle) of (Key (Picked unit)) from DR_Hash)
                  • Set Temp_Real_3 = Temp_Real_2
                  • Set Temp_Real_4 = (Load (Key transparency) of (Key (Picked unit)) from DR_Hash)
                  • Set Temp_Real_6 = (Load (Key damage) of (Key (Picked unit)) from DR_Hash)
                  • -------- ------------------------- --------
                  • -------- This makes the caster blink --------
                  • -------- ------------------------- --------
                  • Animation - Change Temp_Unit_1's vertex coloring to (100.00%, 100.00%, 100.00%) with Temp_Real_4% transparency
                  • -------- ------------------------- --------
                  • -------- Update lightning positions and damage targets --------
                  • -------- ------------------------- --------
                  • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
                    • Loop - Actions
                      • Set Temp_Unit_2 = (Load (Key (dummy + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash)
                      • -------- ------------------------- --------
                      • Set Temp_Loc_2 = (Temp_Loc_1 offset by Temp_Real_1 towards Temp_Real_2 degrees)
                      • -------- ------------------------- --------
                      • Unit - Move Temp_Unit_2 instantly to Temp_Loc_2
                      • -------- ------------------------- --------
                      • Set Temp_Group_1 = (Units within DR_Reals[9] of Temp_Loc_2)
                      • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                        • Loop - Actions
                          • Set Temp_Unit_3 = (Picked unit)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Temp_Unit_3 is alive) Equal to True
                              • (Temp_Unit_3 belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True
                            • Then - Actions
                              • Unit - Cause Temp_Unit_1 to damage Temp_Unit_3, dealing Temp_Real_6 damage of attack type Spells and damage type Cold
                              • Special Effect - Create a special effect attached to the chest of Temp_Unit_3 using Abilities\Spells\Undead\FrostArmor\FrostArmorDamage.mdl
                              • Special Effect - Destroy (Last created special effect)
                            • Else - Actions
                      • Custom script: call DestroyGroup(udg_Temp_Group_1)
                      • -------- ------------------------- --------
                      • Set Temp_Real_2 = (Temp_Real_2 + (360.00 / DR_Reals[0]))
                      • -------- ------------------------- --------
                      • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                  • -------- ------------------------- --------
                  • -------- Checks whether we should progress to next phase or not --------
                  • -------- ------------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Temp_Real_1 - DR_Reals[3]) Greater than 0.00
                    • Then - Actions
                      • Hashtable - Save (Temp_Real_1 - DR_Reals[3]) as (Key offset) of (Key (Picked unit)) in DR_Hash
                      • Hashtable - Save (Temp_Real_3 + DR_Reals[2]) as (Key orig_angle) of (Key (Picked unit)) in DR_Hash
                      • Hashtable - Save (Temp_Real_4 + (Load (Key trans_speed) of (Key (Picked unit)) from DR_Hash)) as (Key transparency) of (Key (Picked unit)) in DR_Hash
                    • Else - Actions
                      • -------- ------------------------- --------
                      • -------- Add Evasion to caster --------
                      • -------- ------------------------- --------
                      • Unit - Add Spell Book - (DR) to Temp_Unit_1
                      • Unit - Set level of Evasion - (DR) for Temp_Unit_1 to (Level of |c00FF00FFDistort Reality|r for Temp_Unit_1)
                      • -------- ------------------------- --------
                      • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
                        • Loop - Actions
                          • Special Effect - Destroy (Load (Key (effect + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash)
                          • Special Effect - Destroy (Load (Key (effect + (String(((Integer(DR_Reals[0])) + (Integer A)))))) of (Key (Picked unit)) in DR_Hash)
                      • -------- ------------------------- --------
                      • Hashtable - Save (DR_Reals[7] - 0.01) as (Key timer) of (Key (Picked unit)) in DR_Hash
                      • -------- Convert current transparency percentage to radians so we can continue from there in the next phase --------
                      • Hashtable - Save ((Temp_Real_4 / 90.00) x 360.00) as (Key transparency) of (Key (Picked unit)) in DR_Hash
                      • Hashtable - Save (Random real number between DR_Reals[12] and DR_Reals[13]) as (Key dmg_timer) of (Key (Picked unit)) in DR_Hash
                      • Special Effect - Destroy (Load (Key starfall) of (Key (Picked unit)) in DR_Hash)
                      • -------- ------------------------- --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • DR_Reals[14] Equal to 1.00
                        • Then - Actions
                          • Unit - Turn collision for Temp_Unit_1 Off
                        • Else - Actions
                      • -------- ------------------------- --------
                      • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Unit - Add DR Buff to (Last created unit)
                      • Unit - Set level of DR Buff for (Last created unit) to (Level of |c00FF00FFDistort Reality|r for Temp_Unit_1)
                      • Unit - Order (Last created unit) to Human Priest - Inner Fire Temp_Unit_1
                  • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                • Else - Actions
                  • -------- ------------------------- --------
                  • -------- Phase 2 --------
                  • -------- ------------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Temp_Real_5 - 0.03) Greater than 0.00
                    • Then - Actions
                      • Set Temp_Real_4 = (Load (Key transparency) of (Key (Picked unit)) from DR_Hash)
                      • -------- Calculate new transparency value --------
                      • Animation - Change Temp_Unit_1's vertex coloring to (100.00%, 100.00%, 100.00%) with (DR_Reals[4] + (((90.00 - DR_Reals[4]) x (1.00 + (Sin(Temp_Real_4)))) / 2.00))% transparency
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Temp_Real_4 - DR_Reals[8]) Less than 360.00
                        • Then - Actions
                          • Hashtable - Save (Temp_Real_4 + DR_Reals[8]) as (Key transparency) of (Key (Picked unit)) in DR_Hash
                        • Else - Actions
                          • Hashtable - Save 0.00 as (Key transparency) of (Key (Picked unit)) in DR_Hash
                      • Hashtable - Save (Temp_Real_5 - 0.03) as (Key timer) of (Key (Picked unit)) in DR_Hash
                      • -------- ------------------------- --------
                      • Set Temp_Real_5 = (Load (Key dmg_timer) of (Key (Picked unit)) from DR_Hash)
                      • -------- ------------------------- --------
                      • -------- Create spirit --------
                      • -------- ------------------------- --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_5 Less than or equal to 0.00
                        • Then - Actions
                          • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                          • Set Temp_Loc_2 = (Temp_Loc_1 offset by (Random real number between 1024.00 and 1536.00) towards (Random angle) degrees)
                          • -------- ------------------------- --------
                          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Temp_Real_4 degrees
                          • Set Temp_Unit_2 = (Last created unit)
                          • -------- -------------------- --------
                          • Unit - Add Storm Crow Form to Temp_Unit_2
                          • Unit - Remove Storm Crow Form from Temp_Unit_2
                          • -------- -------------------- --------
                          • Animation - Change Temp_Unit_2 flying height to 2000.00 at 0.00
                          • -------- ------------------------- --------
                          • Set Temp_Group_1 = (Units within 600.00 of Temp_Loc_1)
                          • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                            • Loop - Actions
                              • Set Temp_Unit_3 = (Picked unit)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Temp_Unit_3 is alive) Equal to True
                                  • (Temp_Unit_3 belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True
                                • Then - Actions
                                • Else - Actions
                                  • Unit Group - Remove Temp_Unit_3 from Temp_Group_1
                          • -------- ------------------------- --------
                          • -------- Pick a random target for the wisp --------
                          • -------- ------------------------- --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Temp_Group_1 is empty) Equal to False
                            • Then - Actions
                              • Set Temp_Unit_3 = (Random unit from Temp_Group_1)
                              • -------- ------------------------- --------
                              • Set Temp_Loc_3 = (Position of Temp_Unit_3)
                              • Set Temp_Real_6 = (Load (Key damage) of (Key (Picked unit)) from DR_Hash)
                              • -------- ------------------------- --------
                              • Unit - Make (Last created unit) face (Angle from Temp_Loc_2 to Temp_Loc_3) over 0.00 seconds
                              • -------- ------------------------- --------
                              • Hashtable - Save (Random angle) as (Key angle) of (Key (Last created unit)) in DR_Hash
                              • Hashtable - Save Temp_Real_6 as (Key damage) of (Key (Last created unit)) in DR_Hash
                              • Hashtable - Save Handle OfTemp_Unit_3 as (Key target) of (Key (Last created unit)) in DR_Hash
                              • Hashtable - Save Handle OfTemp_Unit_1 as (Key caster) of (Key (Last created unit)) in DR_Hash
                              • Hashtable - Save (Distance between Temp_Loc_2 and Temp_Loc_3) as (Key distance) of (Key (Last created unit)) in DR_Hash
                              • -------- ------------------------- --------
                              • Custom script: call RemoveLocation(udg_Temp_Loc_3)
                            • Else - Actions
                          • Custom script: call DestroyGroup(udg_Temp_Group_1)
                          • -------- ------------------------- --------
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
                          • Hashtable - Save Handle Of(Last created special effect) as (Key effect1) of (Key (Last created unit)) in DR_Hash
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Weapons\ZigguratFrostMissile\ZigguratFrostMissile.mdl
                          • Hashtable - Save Handle Of(Last created special effect) as (Key effect2) of (Key (Last created unit)) in DR_Hash
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
                          • Hashtable - Save Handle Of(Last created special effect) as (Key effect3) of (Key (Last created unit)) in DR_Hash
                          • -------- ------------------------- --------
                          • Unit Group - Add (Last created unit) to DR_Dummy_Group
                          • -------- ------------------------- --------
                          • Hashtable - Save (Random real number between 0.09 and 0.27) as (Key dmg_timer) of (Key (Picked unit)) in DR_Hash
                          • -------- ------------------------- --------
                          • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                          • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                        • Else - Actions
                          • Hashtable - Save (Temp_Real_5 - 0.03) as (Key dmg_timer) of (Key (Picked unit)) in DR_Hash
                    • Else - Actions
                      • -------- ------------------------- --------
                      • -------- Checks whether we should progres to phase 3 --------
                      • -------- ------------------------- --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Load (Key phase3) of (Key (Picked unit)) from DR_Hash) Equal to False
                        • Then - Actions
                          • Hashtable - Save True as (Key phase3) of (Key (Picked unit)) in DR_Hash
                          • Set Temp_Real_4 = (Load (Key transparency) of (Key (Picked unit)) from DR_Hash)
                          • Hashtable - Save 1.00 as (Key offset) of (Key (Picked unit)) in DR_Hash
                          • Hashtable - Save DR_Reals[0] as (Key effects) of (Key (Picked unit)) in DR_Hash
                          • Hashtable - Save ((Temp_Real_4 / 360.00) x 90.00) as (Key transparency) of (Key (Picked unit)) in DR_Hash
                          • Hashtable - Save ((Load (Key transparency) of (Key (Picked unit)) from DR_Hash) / (DR_Reals[1] / DR_Reals[3])) as (Key trans_speed) of (Key (Picked unit)) in DR_Hash
                          • -------- -------------------- --------
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_1 using Abilities\Spells\NightElf\Starfall\StarfallCaster.mdl
                          • Hashtable - Save Handle Of(Last created special effect) as (Key starfall) of (Key (Picked unit)) in DR_Hash
                          • -------- -------------------- --------
                          • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                          • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
                            • Loop - Actions
                              • Set Temp_Loc_2 = (Temp_Loc_1 offset by 0.00 towards Temp_Real_2 degrees)
                              • -------- -------------------- --------
                              • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Default building facing degrees
                              • Set Temp_Unit_2 = (Last created unit)
                              • Unit - Add a 2.00 second Generic expiration timer to Temp_Unit_2
                              • -------- -------------------- --------
                              • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
                              • Hashtable - Save Handle Of(Last created special effect) as (Key (effect + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash
                              • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
                              • Hashtable - Save Handle Of(Last created special effect) as (Key (effect + (String(((Integer(DR_Reals[0])) + (Integer A)))))) of (Key (Picked unit)) in DR_Hash
                              • -------- -------------------- --------
                              • Hashtable - Save Handle OfTemp_Unit_2 as (Key (dummy + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash
                              • -------- -------------------- --------
                              • Set Temp_Real_2 = (Temp_Real_2 + (360.00 / DR_Reals[0]))
                              • -------- -------------------- --------
                              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                          • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                        • Else - Actions
                          • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                          • Set Temp_Real_2 = (Load (Key orig_angle) of (Key (Picked unit)) from DR_Hash)
                          • Set Temp_Real_3 = Temp_Real_2
                          • Set Temp_Real_4 = (Load (Key transparency) of (Key (Picked unit)) from DR_Hash)
                          • Set Temp_Real_6 = (Load (Key damage) of (Key (Picked unit)) from DR_Hash)
                          • Animation - Change Temp_Unit_1's vertex coloring to (100.00%, 100.00%, 100.00%) with Temp_Real_4% transparency
                          • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
                            • Loop - Actions
                              • Set Temp_Unit_2 = (Load (Key (dummy + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash)
                              • -------- ------------------------- --------
                              • Set Temp_Loc_2 = (Temp_Loc_1 offset by Temp_Real_1 towards Temp_Real_2 degrees)
                              • -------- ------------------------- --------
                              • Unit - Move Temp_Unit_2 instantly to Temp_Loc_2
                              • -------- ------------------------- --------
                              • Set Temp_Group_1 = (Units within DR_Reals[9] of Temp_Loc_2)
                              • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                                • Loop - Actions
                                  • Set Temp_Unit_3 = (Picked unit)
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Temp_Unit_3 is alive) Equal to True
                                      • (Temp_Unit_3 belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True
                                    • Then - Actions
                                      • Unit - Cause Temp_Unit_1 to damage Temp_Unit_3, dealing Temp_Real_6 damage of attack type Spells and damage type Cold
                                      • Special Effect - Create a special effect attached to the chest of Temp_Unit_3 using Abilities\Spells\Undead\FrostArmor\FrostArmorDamage.mdl
                                      • Special Effect - Destroy (Last created special effect)
                                    • Else - Actions
                              • Custom script: call DestroyGroup(udg_Temp_Group_1)
                              • -------- ------------------------- --------
                              • Set Temp_Real_2 = (Temp_Real_2 + (360.00 / DR_Reals[0]))
                              • -------- ------------------------- --------
                              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                          • -------- ------------------------- --------
                          • -------- Checks whether we should progress to ending the spell --------
                          • -------- ------------------------- --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Temp_Real_1 - DR_Reals[3]) Less than DR_Reals[1]
                            • Then - Actions
                              • Hashtable - Save (Temp_Real_1 + DR_Reals[3]) as (Key offset) of (Key (Picked unit)) in DR_Hash
                              • Hashtable - Save (Temp_Real_3 - DR_Reals[2]) as (Key orig_angle) of (Key (Picked unit)) in DR_Hash
                              • Hashtable - Save (Temp_Real_4 - (Load (Key trans_speed) of (Key (Picked unit)) from DR_Hash)) as (Key transparency) of (Key (Picked unit)) in DR_Hash
                            • Else - Actions
                              • Hashtable - Save -1.00 as (Key timer) of (Key (Picked unit)) in DR_Hash
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Playable map area) contains Temp_Unit_1) Equal to True
                    • Then - Actions
                    • Else - Actions
                      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                      • Set Temp_Real_1 = (X of Temp_Loc_1)
                      • Set Temp_Real_2 = (Y of Temp_Loc_1)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_1 Less than DR_Reals[15]
                        • Then - Actions
                          • Custom script: call SetUnitX( udg_Temp_Unit_1 , udg_DR_Reals[15] + udg_DR_Reals[19] )
                          • Unit - Order Temp_Unit_1 to Stop
                        • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_1 Greater than DR_Reals[16]
                        • Then - Actions
                          • Custom script: call SetUnitX( udg_Temp_Unit_1 , udg_DR_Reals[16] - udg_DR_Reals[19] )
                          • Unit - Order Temp_Unit_1 to Stop
                        • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_2 Less than DR_Reals[17]
                        • Then - Actions
                          • Custom script: call SetUnitY( udg_Temp_Unit_1 , udg_DR_Reals[17] + udg_DR_Reals[19] )
                          • Unit - Order Temp_Unit_1 to Stop
                        • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_2 Greater than DR_Reals[18]
                        • Then - Actions
                          • Custom script: call SetUnitY( udg_Temp_Unit_1 , udg_DR_Reals[18] - udg_DR_Reals[19] )
                          • Unit - Order Temp_Unit_1 to Stop
                        • Else - Actions
                      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DR_Reals[14] Equal to 1.00
                • Then - Actions
                  • Unit - Turn collision for Temp_Unit_1 On
                • Else - Actions
              • Unit - Remove Spell Book - (DR) from Temp_Unit_1
              • -------- ------------------------- --------
              • Unit Group - Remove Temp_Unit_1 from DR_Group
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key starfall) of (Key (Picked unit)) in DR_Hash)
              • For each (Integer A) from 1 to (Integer(DR_Reals[0])), do (Actions)
                • Loop - Actions
                  • Special Effect - Destroy (Load (Key (effect + (String((Integer A))))) of (Key (Picked unit)) in DR_Hash)
                  • Special Effect - Destroy (Load (Key (effect + (String(((Integer(DR_Reals[0])) + (Integer A)))))) of (Key (Picked unit)) in DR_Hash)
              • -------- ------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DR_Hash
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (DR_Group is empty) Equal to True
                  • (DR_Dummy_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
      • -------- ------------------------- --------
      • -------- The dummy loop --------
      • -------- ------------------------- --------
      • Unit Group - Pick every unit in DR_Dummy_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------- --------
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_1 = (Load (Key distance) of (Key (Picked unit)) from DR_Hash)
          • Set Temp_Unit_2 = (Load (Key target) of (Key (Picked unit)) in DR_Hash)
          • -------- ------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_1 Less than 2000.00
              • (Temp_Unit_2 is alive) Equal to True
            • Then - Actions
              • Set Temp_Loc_1 = (Position of Temp_Unit_1)
              • Set Temp_Loc_2 = (Position of Temp_Unit_2)
              • -------- ------------------------- --------
              • Set Temp_Real_2 = (Load (Key angle) of (Key (Picked unit)) from DR_Hash)
              • Set Temp_Loc_3 = (Temp_Loc_1 offset by DR_Reals[11] towards (Angle from Temp_Loc_1 to Temp_Loc_2) degrees)
              • -------- ------------------------- --------
              • Unit - Move Temp_Unit_1 instantly to Temp_Loc_3
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Current flying height of Temp_Unit_1) Greater than 50.00
                • Then - Actions
                  • Animation - Change Temp_Unit_1 flying height to ((Current flying height of Temp_Unit_1) x 0.90) at 0.00
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Current flying height of Temp_Unit_1) Less than 50.00
                  • (Distance between Temp_Loc_2 and Temp_Loc_3) Less than or equal to 48.00
                • Then - Actions
                  • Set Temp_Unit_3 = (Load (Key caster) of (Key (Picked unit)) in DR_Hash)
                  • Set Temp_Real_3 = (Load (Key damage) of (Key (Picked unit)) from DR_Hash)
                  • -------- ------------------------- --------
                  • Unit - Cause Temp_Unit_3 to damage Temp_Unit_2, dealing Temp_Real_3 damage of attack type Spells and damage type Cold
                  • -------- This makes the unit to be removed from the group during the next loop --------
                  • Hashtable - Save 10000.00 as (Key distance) of (Key (Picked unit)) in DR_Hash
                • Else - Actions
                  • Hashtable - Save (Distance between Temp_Loc_2 and Temp_Loc_3) as (Key distance) of (Key (Picked unit)) in DR_Hash
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
              • Custom script: call RemoveLocation(udg_Temp_Loc_3)
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from DR_Dummy_Group
              • -------- ------------------------- --------
              • Unit - Add a 1.00 second Generic expiration timer to Temp_Unit_1
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key effect1) of (Key (Picked unit)) in DR_Hash)
              • Special Effect - Destroy (Load (Key effect2) of (Key (Picked unit)) in DR_Hash)
              • Special Effect - Destroy (Load (Key effect3) of (Key (Picked unit)) in DR_Hash)
              • -------- ------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DR_Hash
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (DR_Group is empty) Equal to True
                  • (DR_Dummy_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions

Mens Imperium

Converts the target to serve the bidding of the Lich King. The Lich King will leech health from the target if he has less than maximum health points. If the target dies while the spell is active, skeleton(s) will be summoned. Reduced duration for heroes. Heroes can't be converted.


  • MI Initialize
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set MI_Hash = (Last created hashtable)
      • -------- -------------------- --------
      • -------- Base duration, hero --------
      • -------- -------------------- --------
      • Set MI_Reals[0] = 3.00
      • -------- -------------------- --------
      • -------- Ability level bonus duration, hero --------
      • -------- -------------------- --------
      • Set MI_Reals[1] = 3.00
      • -------- -------------------- --------
      • -------- Base duration, unit --------
      • -------- -------------------- --------
      • Set MI_Reals[2] = 5.00
      • -------- -------------------- --------
      • -------- Ability level bonus duration, unit --------
      • -------- -------------------- --------
      • Set MI_Reals[3] = 5.00
      • -------- -------------------- --------
      • -------- Base damage / heal per second --------
      • -------- -------------------- --------
      • Set MI_Reals[4] = 7.00
      • -------- -------------------- --------
      • -------- Ability level bonus damage / heal per second --------
      • -------- -------------------- --------
      • Set MI_Reals[5] = 3.00
      • -------- -------------------- --------
      • -------- Create units when target dies, 1 = yes, others = no --------
      • -------- -------------------- --------
      • Set MI_Reals[6] = 1.00
      • -------- -------------------- --------
      • -------- Max distance between target and caster --------
      • -------- -------------------- --------
      • Set MI_Reals[7] = 1000.00
      • -------- -------------------- --------
      • -------- Health/mana ratio, returns mana also. 0 = no mana returned --------
      • -------- -------------------- --------
      • Set MI_Reals[8] = 0.25
      • -------- -------------------- --------
      • -------- Lightning type --------
      • -------- -------------------- --------
      • Set MI_Lightning = DRAB
      • -------- -------------------- --------
      • -------- Unit type to create when target dies --------
      • -------- -------------------- --------
      • Set MI_Unit_Type = Skeleton Warrior
      • -------- -------------------- --------
      • -------- -------------------- --------
      • -------- Don't touch these --------
      • Set MI_Reals[4] = (MI_Reals[4] x 0.03)
      • Set MI_Reals[5] = (MI_Reals[5] x 0.03)
  • Mens Imperium
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to |c00FF00FFMens Imperium|r
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Unit_2 = (Target unit of ability being cast)
      • -------- -------------------- --------
      • -------- Clear stuff from previuos cast --------
      • -------- Just a precaution if someone messes up with cooldowns --------
      • -------- -------------------- --------
      • Set Temp_Unit_3 = (Load (Key target) of (Key (Triggering unit)) in MI_Hash)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Temp_Unit_3 Not equal to No unit
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_3 is A Hero) Equal to False
            • Then - Actions
              • Unit - Change ownership of Temp_Unit_3 to (Player((Load (Key owner) of (Key (Triggering unit)) from MI_Hash))) and Change color
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • MI_Reals[6] Equal to 1.00
              • (Temp_Unit_3 is alive) Equal to False
            • Then - Actions
              • Set Temp_Loc_2 = (Position of Temp_Unit_3)
              • For each (Integer A) from 1 to (Load (Key level) of (Key (Triggering unit)) from MI_Hash), do (Actions)
                • Loop - Actions
                  • Unit - Create 1 MI_Unit_Type for (Owner of Temp_Unit_1) at Temp_Loc_2 facing (Random angle) degrees
                  • Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
                  • Unit - Add a 30.00 second Animate Dead expiration timer to (Last created unit)
                  • Unit - Order (Last created unit) to Right-Click Temp_Unit_1
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
            • Else - Actions
        • Else - Actions
      • Lightning - Destroy (Load (Key lightning) of (Key (Triggering unit)) in MI_Hash)
      • Special Effect - Destroy (Load (Key effect1) of (Key (Triggering unit)) in MI_Hash)
      • Special Effect - Destroy (Load (Key effect2) of (Key (Triggering unit)) in MI_Hash)
      • Special Effect - Destroy (Load (Key effect3) of (Key (Triggering unit)) in MI_Hash)
      • Special Effect - Destroy (Load (Key effect4) of (Key (Triggering unit)) in MI_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in MI_Hash
      • Unit Group - Remove Temp_Unit_1 from MI_Group
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (MI_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off MI Loop <gen>
        • Else - Actions
      • -------- ------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------ --------
      • -------- THE REAL SPELL BEGINS HERE --------
      • -------- ------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------ --------
      • -------- -------------------- --------
      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
      • Set Temp_Loc_2 = (Position of Temp_Unit_2)
      • -------- -------------------- --------
      • Set Temp_Integer_1 = (Level of |c00FF00FFMens Imperium|r for Temp_Unit_1)
      • -------- -------------------- --------
      • Custom script: set udg_Temp_Lightning_1 = AddLightningEx( udg_MI_Lightning , true, GetLocationX(udg_Temp_Loc_1), GetLocationY(udg_Temp_Loc_1), GetLocationZ(udg_Temp_Loc_1) + 60, GetLocationX(udg_Temp_Loc_2), GetLocationY(udg_Temp_Loc_2), GetLocationZ(udg_Temp_Loc_2) + 60)
      • Lightning - Change color of Temp_Lightning_1 to (1.00 1.00 1.00) with 0.30 alpha
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Temp_Unit_2 is A Hero) Equal to True
        • Then - Actions
          • Set Temp_Real_1 = (MI_Reals[0] + (MI_Reals[1] x (Real(Temp_Integer_1))))
        • Else - Actions
          • Set Temp_Real_1 = (MI_Reals[2] + (MI_Reals[3] x (Real(Temp_Integer_1))))
          • Hashtable - Save (Player number of (Owner of Temp_Unit_2)) as (Key owner) of (Key (Triggering unit)) in MI_Hash
          • Unit - Change ownership of Temp_Unit_2 to (Owner of Temp_Unit_1) and Change color
      • -------- -------------------- --------
      • Special Effect - Create a special effect attached to the chest of Temp_Unit_1 using Abilities\Spells\Orc\SpiritLink\SpiritLinkTarget.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect1) of (Key (Triggering unit)) in MI_Hash
      • Special Effect - Create a special effect attached to the chest of Temp_Unit_2 using Abilities\Spells\Orc\SpiritLink\SpiritLinkTarget.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect2) of (Key (Triggering unit)) in MI_Hash
      • Special Effect - Create a special effect attached to the chest of Temp_Unit_1 using Abilities\Spells\NightElf\Rejuvenation\RejuvenationTarget.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect3) of (Key (Triggering unit)) in MI_Hash
      • Special Effect - Create a special effect attached to the chest of Temp_Unit_2 using Abilities\Spells\NightElf\Rejuvenation\RejuvenationTarget.mdl
      • Hashtable - Save Handle Of(Last created special effect) as (Key effect4) of (Key (Triggering unit)) in MI_Hash
      • -------- -------------------- --------
      • Hashtable - Save 0.30 as (Key alpha) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save Temp_Real_1 as (Key timer) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save 1.00 as (Key effect_timer) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save Temp_Integer_1 as (Key level) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save Handle OfTemp_Unit_2 as (Key target) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save Handle OfTemp_Lightning_1 as (Key lightning) of (Key (Triggering unit)) in MI_Hash
      • Hashtable - Save (MI_Reals[4] + (MI_Reals[5] + (Real(Temp_Integer_1)))) as (Key damage) of (Key (Triggering unit)) in MI_Hash
      • -------- -------------------- --------
      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
      • Custom script: call RemoveLocation(udg_Temp_Loc_2)
      • -------- -------------------- --------
      • Unit Group - Add Temp_Unit_1 to MI_Group
      • Trigger - Turn on MI Loop <gen>
  • MI Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in MI_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Unit_2 = (Load (Key target) of (Key (Picked unit)) in MI_Hash)
          • Set Temp_Real_3 = (Load (Key timer) of (Key (Picked unit)) from MI_Hash)
          • -------- -------------------- --------
          • Set Temp_Lightning_1 = (Load (Key lightning) of (Key (Picked unit)) in MI_Hash)
          • -------- -------------------- --------
          • Set Temp_Loc_1 = (Position of Temp_Unit_1)
          • Set Temp_Loc_2 = (Position of Temp_Unit_2)
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_3 Greater than 0.00
              • (Temp_Unit_1 is alive) Equal to True
              • (Temp_Unit_2 is alive) Equal to True
              • (Distance between Temp_Loc_1 and Temp_Loc_2) Less than MI_Reals[7]
            • Then - Actions
              • Set Temp_Real_1 = (Load (Key alpha) of (Key (Picked unit)) from MI_Hash)
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Life of Temp_Unit_1) Less than (Max life of Temp_Unit_1)
                • Then - Actions
                  • Set Temp_Real_2 = (Load (Key damage) of (Key (Picked unit)) from MI_Hash)
                  • Set Temp_Real_4 = (Load (Key effect_timer) of (Key (Picked unit)) from MI_Hash)
                  • -------- -------------------- --------
                  • Unit - Set life of Temp_Unit_1 to ((Life of Temp_Unit_1) + Temp_Real_1)
                  • -------- -------------------- --------
                  • Unit - Cause Temp_Unit_1 to damage Temp_Unit_2, dealing Temp_Real_1 damage of attack type Magic and damage type Mind
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Mana of Temp_Unit_2) Greater than or equal to (Temp_Real_2 x MI_Reals[8])
                    • Then - Actions
                      • Unit - Set mana of Temp_Unit_1 to ((Mana of Temp_Unit_1) + (Temp_Real_2 x MI_Reals[8]))
                      • Unit - Set mana of Temp_Unit_2 to ((Mana of Temp_Unit_2) - (Temp_Real_2 x MI_Reals[8]))
                    • Else - Actions
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Temp_Real_1 Less than 0.99
                    • Then - Actions
                      • Set Temp_Real_1 = (Temp_Real_1 + 0.01)
                      • -------- -------------------- --------
                      • Lightning - Change color of Temp_Lightning_1 to (1.00 1.00 1.00) with Temp_Real_1 alpha
                      • -------- -------------------- --------
                      • Hashtable - Save Temp_Real_1 as (Key alpha) of (Key (Picked unit)) in MI_Hash
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Temp_Real_4 Greater than or equal to 1.50
                    • Then - Actions
                      • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing (Angle from Temp_Loc_2 to Temp_Loc_1) degrees
                      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                      • Custom script: call SetUnitAnimationByIndex(GetLastCreatedUnit(), 0)
                      • -------- -------------------- --------
                      • Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Spells\Items\AIil\AIilTarget.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Spells\Items\AIre\AIreTarget.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Spells\Items\AIma\AImaTarget.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • -------- -------------------- --------
                      • Hashtable - Save 0.00 as (Key effect_timer) of (Key (Picked unit)) in MI_Hash
                    • Else - Actions
                      • Hashtable - Save (Temp_Real_4 + 0.03) as (Key effect_timer) of (Key (Picked unit)) in MI_Hash
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Temp_Real_1 Greater than 0.30
                    • Then - Actions
                      • Set Temp_Real_1 = (Temp_Real_1 - 0.01)
                      • Lightning - Change color of Temp_Lightning_1 to (1.00 1.00 1.00) with Temp_Real_1 alpha
                      • Hashtable - Save Temp_Real_1 as (Key alpha) of (Key (Picked unit)) in MI_Hash
                    • Else - Actions
              • Custom script: call MoveLightningEx(udg_Temp_Lightning_1 , true, GetLocationX(udg_Temp_Loc_1), GetLocationY(udg_Temp_Loc_1), GetLocationZ(udg_Temp_Loc_1) + 60, GetLocationX(udg_Temp_Loc_2), GetLocationY(udg_Temp_Loc_2), GetLocationZ(udg_Temp_Loc_2) + 60)
              • -------- -------------------- --------
              • Hashtable - Save (Temp_Real_3 - 0.03) as (Key timer) of (Key (Picked unit)) in MI_Hash
              • -------- -------------------- --------
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Temp_Unit_2 is alive) Equal to True
                  • (Temp_Unit_2 is A Hero) Equal to False
                • Then - Actions
                  • Unit - Change ownership of Temp_Unit_2 to (Player((Load (Key owner) of (Key (Picked unit)) from MI_Hash))) and Change color
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • MI_Reals[6] Equal to 1.00
                  • (Temp_Unit_2 is alive) Equal to False
                • Then - Actions
                  • For each (Integer A) from 1 to (Load (Key level) of (Key (Picked unit)) from MI_Hash), do (Actions)
                    • Loop - Actions
                      • Unit - Create 1 MI_Unit_Type for (Owner of Temp_Unit_1) at Temp_Loc_2 facing (Random angle) degrees
                      • Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
                      • Unit - Add a 30.00 second Animate Dead expiration timer to (Last created unit)
                      • Unit - Order (Last created unit) to Right-Click Temp_Unit_1
                • Else - Actions
              • -------- -------------------- --------
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • Custom script: call RemoveLocation(udg_Temp_Loc_2)
              • -------- -------------------- --------
              • Lightning - Destroy Temp_Lightning_1
              • -------- -------------------- --------
              • Special Effect - Destroy (Load (Key effect1) of (Key (Picked unit)) in MI_Hash)
              • Special Effect - Destroy (Load (Key effect2) of (Key (Picked unit)) in MI_Hash)
              • Special Effect - Destroy (Load (Key effect3) of (Key (Picked unit)) in MI_Hash)
              • Special Effect - Destroy (Load (Key effect4) of (Key (Picked unit)) in MI_Hash)
              • -------- -------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in MI_Hash
              • -------- -------------------- --------
              • Unit Group - Remove Temp_Unit_1 from MI_Group
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (MI_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions

Contages Insanctus

An aura that damages units and slows down their attack speed. The Lich King's presence causes the ground he treads on to freeze.


  • Contages Insanctus Initialize
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • -------- ------------------------- --------
      • Hashtable - Create a hashtable
      • Set CI_Hash = (Last created hashtable)
      • Hashtable - Create a hashtable
      • Set Terrain_Hash = (Last created hashtable)
      • -------- ------------------------- --------
      • -------- Define the terain types in ypur map here --------
      • -------- ------------------------- --------
      • Set CI_Terrain_Types[0] = Lordaeron Summer - Dirt
      • Set CI_Terrain_Types[1] = Lordaeron Summer - Rough Dirt
      • Set CI_Terrain_Types[2] = Lordaeron Summer - Grassy Dirt
      • Set CI_Terrain_Types[3] = Lordaeron Summer - Rock
      • Set CI_Terrain_Types[4] = Lordaeron Summer - Grass
      • Set CI_Terrain_Types[5] = Lordaeron Summer - Dark Grass
      • -------- ------------------------- --------
      • -------- Terrain Types (insert highest index) --------
      • -------- ------------------------- --------
      • Set CI_Reals[12] = 5.00
      • -------- ------------------------- --------
      • -------- Change terrain, 1 = yes, other values = no --------
      • -------- ------------------------- --------
      • Set CI_Reals[13] = 1.00
      • -------- -------------------------------------------------- --------
      • -------- -------------------------------------------------- --------
      • -------- ------------------------- --------
      • -------- Mana cost, base --------
      • -------- ------------------------- --------
      • Set CI_Reals[0] = 2.00
      • -------- ------------------------- --------
      • -------- Mana cost, bonus per level --------
      • -------- ------------------------- --------
      • Set CI_Reals[1] = 1.00
      • -------- ------------------------- --------
      • -------- AoE, base --------
      • -------- ------------------------- --------
      • Set CI_Reals[2] = 250.00
      • -------- ------------------------- --------
      • -------- AoE, bonus per level --------
      • -------- ------------------------- --------
      • Set CI_Reals[3] = 50.00
      • -------- ------------------------- --------
      • -------- Damage, base --------
      • -------- ------------------------- --------
      • Set CI_Reals[4] = 8.00
      • -------- ------------------------- --------
      • -------- Damage, bonus per level --------
      • -------- ------------------------- --------
      • Set CI_Reals[5] = 2.00
      • -------- ------------------------- --------
      • -------- Effect 1 spawn (yellow spirits), 1 = spawn, other values = no --------
      • -------- ------------------------- --------
      • Set CI_Reals[6] = 1.00
      • -------- ------------------------- --------
      • -------- Effect 2 spawn (white spirits), 1 = spawn, other values = no --------
      • -------- ------------------------- --------
      • Set CI_Reals[7] = 1.00
      • -------- ------------------------- --------
      • -------- Chance to freeze, base --------
      • -------- ------------------------- --------
      • Set CI_Reals[8] = 4.00
      • -------- ------------------------- --------
      • -------- Chance to freeze, ability level bonus --------
      • -------- ------------------------- --------
      • Set CI_Reals[9] = 1.00
      • -------- ------------------------- --------
      • -------- Freeze time --------
      • -------- ------------------------- --------
      • Set CI_Reals[10] = 2.00
      • -------- ------------------------- --------
      • -------- Move aura (0 = Don't move, other values = move) --------
      • -------- ------------------------- --------
      • Set CI_Reals[11] = 1.00
      • -------- ------------------------- --------
  • Contages Insanctus Activate
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Issued order) Equal to (Order(defend))
      • (Level of |c00FF00FFContages Insanctus|r for (Triggering unit)) Greater than 0
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
      • -------- ------------------------- --------
      • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
      • Unit Group - Add (Last created unit) to CI_SFX_Group
      • Animation - Change (Last created unit)'s size to (133.00%, 133.00%, 133.00%) of its original size
      • -------- ------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CI_Reals[11] Not equal to 0.00
        • Then - Actions
          • Hashtable - Save Handle Of(Triggering unit) as (Key caster) of (Key (Last created unit)) in CI_Hash
          • Hashtable - Save Handle Of(Last created unit) as (Key dummy) of (Key (Triggering unit)) in CI_Hash
        • Else - Actions
      • Hashtable - Save 0.00 as (Key loop) of (Key (Triggering unit)) in CI_Hash
      • Hashtable - Save (CI_Reals[0] + ((Real((Level of |c00FF00FFContages Insanctus|r for Temp_Unit_1))) x CI_Reals[1])) as (Key mana_cost) of (Key (Triggering unit)) in CI_Hash
      • -------- ------------------------- --------
      • Unit Group - Add Temp_Unit_1 to CI_Group
      • -------- ------------------------- --------
      • Trigger - Turn on Contages Insanctus Pulse <gen>
      • Trigger - Turn on Contages Insanctus Dummy SFX Remove <gen>
      • -------- ------------------------- --------
      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
      • -------- ------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CI_Reals[11] Not equal to 0.00
        • Then - Actions
          • Trigger - Turn on Contages Insanctus SFX Move <gen>
        • Else - Actions
      • Trigger - Turn on Contages Insanctus Deactivate <gen>
      • -------- ------------------------- --------
      • Unit - Order Temp_Unit_1 to Stop
      • -------- ------------------------- --------
      • Wait 0.00 seconds
      • -------- ------------------------- --------
      • Animation - Play (Triggering unit)'s spell animation
  • Contages Insanctus Deactivate
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Issued order) Equal to (Order(undefend))
      • (Level of |c00FF00FFContages Insanctus|r for (Triggering unit)) Greater than 0
    • Actions
      • Unit Group - Remove (Triggering unit) from CI_Group
      • Unit - Kill (Load (Key dummy) of (Key (Triggering unit)) in CI_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in CI_Hash
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CI_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CI_SFX_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off Contages Insanctus SFX Move <gen>
        • Else - Actions
  • Contages Insanctus Pulse
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in CI_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_3 = (Load (Key mana_cost) of (Key (Picked unit)) from CI_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is alive) Equal to True
              • (Mana of Temp_Unit_1) Greater than Temp_Real_3
            • Then - Actions
              • Set Temp_Loc_1 = (Position of Temp_Unit_1)
              • Set Temp_Real_1 = (Real((Level of |c00FF00FFContages Insanctus|r for Temp_Unit_1)))
              • -------- ------------------------- --------
              • Set Temp_Real_2 = (Random angle)
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Random integer number between 1 and 2) Equal to 1
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CI_Reals[6] Equal to 1.00
                    • Then - Actions
                      • For each (Integer A) from 1 to 2, do (Actions)
                        • Loop - Actions
                          • -------- ------------------------- --------
                          • -------- Create effect 1, yellow spirits --------
                          • -------- ------------------------- --------
                          • Set Temp_Real_3 = (Random real number between 32.00 and 96.00)
                          • Set Temp_Loc_2 = (Temp_Loc_1 offset by Temp_Real_3 towards Temp_Real_2 degrees)
                          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing (Random angle) degrees
                          • Set Temp_Real_4 = (125.00 - (100.00 x (Temp_Real_3 / 256.00)))
                          • Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Orc\EtherealForm\SpiritWalkerChange.mdl
                          • Hashtable - Save Handle Of(Last created special effect) as (Key effect) of (Key (Last created unit)) in CI_Hash
                          • Animation - Change (Last created unit)'s size to (Temp_Real_4%, Temp_Real_4%, Temp_Real_4%) of its original size
                          • Unit - Add a 4.00 second Generic expiration timer to (Last created unit)
                          • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                          • Set Temp_Real_2 = (Temp_Real_2 + (Random real number between -160.00 and 160.00))
                    • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CI_Reals[7] Equal to 1.00
                    • Then - Actions
                      • -------- ------------------------- --------
                      • -------- Create effect 2, yellow spirits --------
                      • -------- ------------------------- --------
                      • Set Temp_Real_3 = (Random real number between 0.00 and 48.00)
                      • Set Temp_Loc_2 = (Temp_Loc_1 offset by Temp_Real_3 towards Temp_Real_2 degrees)
                      • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing (Random angle) degrees
                      • Set Temp_Real_4 = (50.00 - (100.00 x (Temp_Real_3 / 256.00)))
                      • Special Effect - Create a special effect attached to the origin of (Last created unit) using Objects\Spawnmodels\Undead\UndeadDissipate\UndeadDissipate.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Animation - Change (Last created unit)'s size to (Temp_Real_4%, Temp_Real_4%, Temp_Real_4%) of its original size
                      • Unit - Add a 4.00 second Generic expiration timer to (Last created unit)
                      • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                    • Else - Actions
              • -------- ------------------------- --------
              • Set Temp_Real_3 = (CI_Reals[0] + (CI_Reals[1] x Temp_Real_1))
              • Unit - Set mana of Temp_Unit_1 to ((Mana of Temp_Unit_1) - (Temp_Real_3 / 4.00))
              • -------- ------------------------- --------
              • Set Temp_Real_3 = (Load (Key loop) of (Key (Picked unit)) from CI_Hash)
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_3 Equal to 2.00
                • Then - Actions
                  • -------- ------------------------- --------
                  • -------- Every two seconds, damage enemies in range --------
                  • -------- ------------------------- --------
                  • Special Effect - Create a special effect attached to the chest of (Load (Key dummy) of (Key (Picked unit)) in CI_Hash) using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- ------------------------- --------
                  • Set Temp_Real_2 = (CI_Reals[4] + (CI_Reals[5] x Temp_Real_1))
                  • Set Temp_Group_1 = (Units within (CI_Reals[2] + (CI_Reals[3] x Temp_Real_1)) of Temp_Loc_1 matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Temp_Unit_1)) Equal to True) and (((Matching unit) is Magic Immune) Equal to F
                  • -------- ------------------------- --------
                  • Unit Group - Pick every unit in Temp_Group_1 and do (Actions)
                    • Loop - Actions
                      • Set Temp_Unit_2 = (Picked unit)
                      • Set Temp_Loc_2 = (Position of Temp_Unit_2)
                      • -------- ------------------------- --------
                      • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Default building facing degrees
                      • Set Temp_Unit_3 = (Last created unit)
                      • Unit - Add a 1.00 second Generic expiration timer to Temp_Unit_3
                      • Unit - Add UA Cripple to Temp_Unit_3
                      • Unit - Set level of UA Cripple for Temp_Unit_3 to (Integer(Temp_Real_1))
                      • Unit - Order Temp_Unit_3 to Undead Necromancer - Cripple Temp_Unit_2
                      • Animation - Change Temp_Unit_3's size to (66.00%, 66.00%, 66.00%) of its original size
                      • -------- ------------------------- --------
                      • Unit - Set life of Temp_Unit_2 to ((Life of Temp_Unit_2) - (CI_Reals[4] + (CI_Reals[5] x Temp_Real_1)))
                      • -------- ------------------------- --------
                      • Special Effect - Create a special effect attached to the chest of Temp_Unit_3 using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • -------- ------------------------- --------
                      • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                      • -------- ------------------------- --------
                      • Set Temp_Real_4 = (CI_Reals[8] + (CI_Reals[9] x (Real((Level of |c00FF00FFContages Insanctus|r for Temp_Unit_1)))))
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Temp_Unit_2 is in CI_Frozen) Equal to False
                          • (Random real number between 1.00 and 100.00) Less than or equal to Temp_Real_4
                        • Then - Actions
                          • -------- ------------------------- --------
                          • -------- Freeze picked unit --------
                          • -------- ------------------------- --------
                          • Unit - Pause Temp_Unit_2
                          • Animation - Change Temp_Unit_2's animation speed to 0.00% of its original speed
                          • -------- ------------------------- --------
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Undead\FreezingBreath\FreezingBreathTargetArt.mdl
                          • -------- ------------------------- --------
                          • Hashtable - Save CI_Reals[10] as (Key freeze_timer) of (Key (Picked unit)) in CI_Hash
                          • Hashtable - Save Handle Of(Last created special effect) as (Key ice) of (Key (Picked unit)) in CI_Hash
                          • -------- ------------------------- --------
                          • Unit Group - Add Temp_Unit_2 to CI_Frozen
                          • -------- ------------------------- --------
                          • Trigger - Turn on Contages Insanctus Freeze <gen>
                        • Else - Actions
                      • -------- ------------------------- --------
                  • Custom script: call DestroyGroup(udg_Temp_Group_1)
                  • Hashtable - Save 0.00 as (Key loop) of (Key (Picked unit)) in CI_Hash
                • Else - Actions
                  • Hashtable - Save (Temp_Real_3 + 0.50) as (Key loop) of (Key (Picked unit)) in CI_Hash
              • -------- ------------------------- --------
              • -------- Terrain changing system --------
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CI_Reals[13] Equal to 1.00
                • Then - Actions
                  • Set Temp_Loc_2 = (Temp_Loc_1 offset by (1.00 x (Square root((2.00 x (Power(128.00, 2.00)))))) towards 225.00 degrees)
                  • For each (Integer A) from 0 to 2, do (Actions)
                    • Loop - Actions
                      • Set Temp_Loc_3 = (Temp_Loc_2 offset by ((Real((Integer A))) x 128.00) towards 90.00 degrees)
                      • For each (Integer B) from 0 to 2, do (Actions)
                        • Loop - Actions
                          • Set Temp_Loc_4 = (Temp_Loc_3 offset by ((Real((Integer B))) x 128.00) towards 0.00 degrees)
                          • -------- ------------------------- --------
                          • -------- If terrain already changed, no changes --------
                          • -------- ------------------------- --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Terrain type at Temp_Loc_4) Not equal to Northrend - Ice
                              • (Terrain type at Temp_Loc_4) Not equal to Northrend - Snow
                              • (Terrain type at Temp_Loc_4) Not equal to Northrend - Rocky Snow
                            • Then - Actions
                              • Set Temp_Integer_1 = (Terrain variance at Temp_Loc_4)
                              • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_4 facing Default building facing degrees
                              • Unit Group - Add (Last created unit) to CI_Dummies
                              • Unit - Add a (Random real number between 3.00 and 7.00) second Generic expiration timer to (Last created unit)
                              • For each (Integer loopA) from 0 to (Integer(CI_Reals[12])), do (Actions)
                                • Loop - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Terrain type at Temp_Loc_4) Equal to CI_Terrain_Types[loopA]
                                    • Then - Actions
                                      • -------- ------------------------- --------
                                      • -------- Save original terrain type and variation --------
                                      • -------- ------------------------- --------
                                      • Hashtable - Save loopA as (Key terrain_type) of (Key (Last created unit)) in Terrain_Hash
                                      • Hashtable - Save Temp_Integer_1 as (Key terrain_variation) of (Key (Last created unit)) in Terrain_Hash
                                    • Else - Actions
                              • Set Temp_Integer_1 = (Random integer number between 1 and 3)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Temp_Integer_1 Equal to 1
                                • Then - Actions
                                  • Environment - Change terrain type at Temp_Loc_4 to Northrend - Ice using variation -1 in an area of size 1 and shape Circle
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • Temp_Integer_1 Equal to 2
                                    • Then - Actions
                                      • Environment - Change terrain type at Temp_Loc_4 to Northrend - Snow using variation -1 in an area of size 1 and shape Circle
                                    • Else - Actions
                                      • Environment - Change terrain type at Temp_Loc_4 to Northrend - Rocky Snow using variation -1 in an area of size 1 and shape Circle
                              • Trigger - Turn on Contages insanctus Terrain Change <gen>
                            • Else - Actions
                          • Custom script: call RemoveLocation(udg_Temp_Loc_4)
                      • Custom script: call RemoveLocation(udg_Temp_Loc_3)
                  • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                • Else - Actions
              • -------- ------------------------- --------
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
            • Else - Actions
              • Unit - Kill (Load (Key dummy) of (Key (Picked unit)) in CI_Hash)
              • Unit Group - Remove Temp_Unit_1 from CI_Group
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in CI_Hash
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Mana of Temp_Unit_1) Greater than Temp_Real_3
                • Then - Actions
                  • Unit - Order Temp_Unit_1 to Human Footman - Stop Defend
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CI_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CI_SFX_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off Contages Insanctus SFX Move <gen>
        • Else - Actions
  • Contages Insanctus SFX Move
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in CI_SFX_Group and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Temp_Unit_1) is alive) Equal to True
            • Then - Actions
              • Set Temp_Loc_1 = (Position of (Load (Key caster) of (Key (Picked unit)) in CI_Hash))
              • Custom script: call SetUnitX(udg_Temp_Unit_1, GetLocationX(udg_Temp_Loc_1))
              • Custom script: call SetUnitY(udg_Temp_Unit_1, GetLocationY(udg_Temp_Loc_1))
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from CI_SFX_Group
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in CI_Hash
              • Unit - Add a 0.01 second Generic expiration timer to Temp_Unit_1
  • Contages Insanctus Dummy SFX Remove
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Dummy - (None)
    • Actions
      • Special Effect - Destroy (Load (Key effect) of (Key (Triggering unit)) in CI_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in CI_Hash
      • Set Temp_Group_1 = (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Dummy - (None)) and (((Matching unit) is alive) Equal to True)))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Temp_Group_1 is empty) Equal to True
          • (Contages Insanctus Pulse <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Temp_Group_1)
  • Contages Insanctus Freeze
    • Events
      • Time - Every 0.25 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in CI_Frozen and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Real_1 = (Load (Key freeze_timer) of (Key (Picked unit)) from CI_Hash)
          • -------- -------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Temp_Real_1 Greater than 0.00
              • (Temp_Unit_1 is alive) Equal to True
            • Then - Actions
              • Hashtable - Save (Temp_Real_1 - 0.25) as (Key freeze_timer) of (Key (Picked unit)) in CI_Hash
            • Else - Actions
              • Unit Group - Remove Temp_Unit_1 from CI_Frozen
              • -------- -------------------- --------
              • Special Effect - Destroy (Load (Key ice) of (Key (Picked unit)) in CI_Hash)
              • -------- -------------------- --------
              • Unit - Unpause Temp_Unit_1
              • Animation - Change Temp_Unit_1's animation speed to 100.00% of its original speed
              • -------- -------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in CI_Hash
              • -------- -------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (CI_Frozen is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • Contages insanctus Terrain Change
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Triggering unit) is in CI_Dummies) Equal to True
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • Set Temp_Loc_1 = (Position of Temp_Unit_1)
      • Set Temp_Group_1 = (Units within 400.00 of Temp_Loc_1 matching (((Matching unit) is in CI_Group) Equal to True))
      • -------- -------------------- --------
      • -------- Checks that there are no Lich Kings freezing the area --------
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Temp_Group_1 is empty) Equal to True
        • Then - Actions
          • Environment - Change terrain type at Temp_Loc_1 to CI_Terrain_Types[(Load (Key terrain_type) of (Key (Triggering unit)) from Terrain_Hash)] using variation (Load (Key terrain_variation) of (Key (Triggering unit)) from Terrain_Hash) in an area of size 1 and shape Circle
        • Else - Actions
          • -------- -------------------- --------
          • -------- If there is a LIch KIng nearby, then renew the timer --------
          • -------- -------------------- --------
          • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_1 facing Default building facing degrees
          • Unit - Add a (Random real number between 3.00 and 7.00) second Generic expiration timer to (Last created unit)
          • -------- -------------------- --------
          • Unit Group - Add (Last created unit) to CI_Dummies
          • -------- -------------------- --------
          • Hashtable - Save (Load (Key terrain_type) of (Key (Triggering unit)) from Terrain_Hash) as (Key terrain_type) of (Key (Last created unit)) in Terrain_Hash
          • Hashtable - Save (Load (Key terrain_variation) of (Key (Triggering unit)) from Terrain_Hash) as (Key terrain_variation) of (Key (Last created unit)) in Terrain_Hash
      • Unit Group - Remove Temp_Unit_1 from CI_Dummies
      • -------- -------------------- --------
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in Terrain_Hash
      • -------- -------------------- --------
      • Custom script: call DestroyGroup(udg_Temp_Group_1)
      • Custom script: call RemoveLocation(udg_Temp_Loc_1)
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CI_Dummies is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions


Northrend's Wrath (Ultimate)

Calls forth the spirits of the Northrend. The spirits form a bond between them and the Lich King, any enemy intercepting this bond will get damaged. Half of the damage done by this spell will heal the caster. The spirits will pull units that get too close.


  • NW Initialize
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set NW_Hash = (Last created hashtable)
      • -------- -------------------- --------
      • -------- How often a new lightning is created --------
      • -------- -------------------- --------
      • Set NW_Reals[0] = 1.00
      • -------- -------------------- --------
      • -------- Duration of the ability --------
      • -------- -------------------- --------
      • Set NW_Reals[1] = 12.00
      • -------- -------------------- --------
      • -------- Min legtnh of lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[2] = 192.00
      • -------- -------------------- --------
      • -------- Max length of lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[3] = 512.00
      • -------- -------------------- --------
      • -------- Min speed of lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[4] = 0.50
      • -------- -------------------- --------
      • -------- Max speed of lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[5] = 2.00
      • -------- -------------------- --------
      • -------- Angle width from caster to target, lightning width --------
      • -------- -------------------- --------
      • Set NW_Reals[6] = 2.00
      • -------- -------------------- --------
      • -------- Base damage, lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[7] = 4.00
      • -------- -------------------- --------
      • -------- Ability level bonus damage, lightning --------
      • -------- -------------------- --------
      • Set NW_Reals[8] = 1.00
      • -------- -------------------- --------
      • -------- Heal factor, percentage of damage done add to HP of the caster --------
      • -------- -------------------- --------
      • Set NW_Reals[9] = 0.50
      • -------- -------------------- --------
      • -------- Drags units, 1 = yes, others = no --------
      • -------- -------------------- --------
      • Set NW_Reals[10] = 1.00
      • -------- -------------------- --------
      • -------- Lightning disappears, 1 = yes, others = no --------
      • -------- -------------------- --------
      • Set NW_Reals[11] = 0.00
      • -------- -------------------- --------
      • -------- Base damage, cone --------
      • -------- -------------------- --------
      • Set NW_Reals[12] = 8.00
      • -------- -------------------- --------
      • -------- Ability level bonus damage, cone --------
      • -------- -------------------- --------
      • Set NW_Reals[13] = 2.00
      • -------- -------------------- --------
      • -------- Dragging speed --------
      • -------- -------------------- --------
      • Set NW_Reals[14] = 6.00
      • -------- -------------------- --------
      • -------- Lightning type --------
      • -------- -------------------- --------
      • Set NW_Lightning = AFOD
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • NW_Reals[3] Less than NW_Reals[2]
        • Then - Actions
          • Set DW_Reals[3] = NW_Reals[2]
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • NW_Reals[5] Less than NW_Reals[4]
        • Then - Actions
          • Set DW_Reals[5] = NW_Reals[4]
        • Else - Actions
  • Northrends Wrath
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to |c00FF00FFNothrend's Wrath|r
    • Actions
      • Set Temp_Unit_1 = (Triggering unit)
      • -------- -------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Key effect) is stored as a Handle of (Key (Triggering unit)) in NW_Hash) Equal to False
        • Then - Actions
          • Special Effect - Create a special effect attached to the origin of Temp_Unit_1 using Abilities\Spells\Orc\Voodoo\VoodooAura.mdl
          • Hashtable - Save Handle Of(Last created special effect) as (Key effect) of (Key (Triggering unit)) in NW_Hash
        • Else - Actions
      • -------- -------------------- --------
      • Hashtable - Save NW_Reals[0] as (Key interval) of (Key (Triggering unit)) in NW_Hash
      • Hashtable - Save NW_Reals[1] as (Key duration) of (Key (Triggering unit)) in NW_Hash
      • -------- -------------------- --------
      • Unit Group - Add Temp_Unit_1 to NW_Loop
      • -------- -------------------- --------
      • Trigger - Turn on NW Loop <gen>
  • NW Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- ------------------------- --------
      • -------- The caster loop --------
      • -------- ------------------------- --------
      • Unit Group - Pick every unit in NW_Loop and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is alive) Equal to True
              • (Current order of Temp_Unit_1) Equal to (Order(chemicalrage))
            • Then - Actions
              • Set Temp_Real_2 = (Load (Key interval) of (Key (Picked unit)) from NW_Hash)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_2 Equal to NW_Reals[0]
                • Then - Actions
                  • -------- ------------------------- --------
                  • -------- Every once during interval, create an extra lightning --------
                  • -------- ------------------------- --------
                  • Set Temp_Loc_1 = (Position of Temp_Unit_1)
                  • Set Temp_Loc_2 = (Temp_Loc_1 offset by (Random real number between NW_Reals[2] and NW_Reals[3]) towards (Random angle) degrees)
                  • -------- -------------------- --------
                  • Special Effect - Create a special effect at Temp_Loc_1 using Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at Temp_Loc_2 using Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- -------------------- --------
                  • Unit - Create 1 Dummy - (None) for Neutral Passive at Temp_Loc_2 facing Default building facing degrees
                  • Set Temp_Unit_2 = (Last created unit)
                  • -------- -------------------- --------
                  • Unit - Add Storm Crow Form to Temp_Unit_2
                  • Unit - Remove Storm Crow Form from Temp_Unit_2
                  • -------- -------------------- --------
                  • Unit Group - Add Temp_Unit_2 to NW_Dummies
                  • -------- -------------------- --------
                  • Animation - Change Temp_Unit_2's size to (200.00%, 200.00%, 200.00%) of its original size
                  • Animation - Change Temp_Unit_2 flying height to 40.00 at 0.00
                  • -------- -------------------- --------
                  • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Weapons\ProcMissile\ProcMissile.mdl
                  • Hashtable - Save Handle Of(Last created special effect) as (Key effect1) of (Key (Last created unit)) in NW_Hash
                  • Special Effect - Create a special effect attached to the origin of Temp_Unit_2 using Abilities\Spells\Other\Drain\ManaDrainTarget.mdl
                  • Hashtable - Save Handle Of(Last created special effect) as (Key effect2) of (Key (Last created unit)) in NW_Hash
                  • -------- -------------------- --------
                  • Custom script: set udg_Temp_Group_1 = CreateGroup()
                  • Hashtable - Save Handle OfTemp_Group_1 as (Key group) of (Key (Last created unit)) in NW_Hash
                  • -------- -------------------- --------
                  • Custom script: set udg_Temp_Lightning_1 = AddLightningEx( udg_NW_Lightning , true, GetLocationX(udg_Temp_Loc_1), GetLocationY(udg_Temp_Loc_1), GetLocationZ(udg_Temp_Loc_1) + 100, GetLocationX(udg_Temp_Loc_2), GetLocationY(udg_Temp_Loc_2), GetLocationZ(udg_Temp_Loc_2) + 40)
                  • Lightning - Change color of Temp_Lightning_1 to (1.00 0.80 1.00) with 0.80 alpha
                  • Hashtable - Save Handle OfTemp_Lightning_1 as (Key lightning) of (Key (Last created unit)) in NW_Hash
                  • -------- -------------------- --------
                  • Hashtable - Save Handle OfTemp_Unit_1 as (Key caster) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save Handle OfTemp_Loc_1 as (Key center) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save (Angle from Temp_Loc_1 to Temp_Loc_2) as (Key angle) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save (Distance between Temp_Loc_1 and Temp_Loc_2) as (Key radius) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save (Random real number between NW_Reals[4] and NW_Reals[5]) as (Key speed) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save (NW_Reals[7] + (NW_Reals[8] x (Real((Level of |c00FF00FFNothrend's Wrath|r for Temp_Unit_1))))) as (Key damage) of (Key (Last created unit)) in NW_Hash
                  • Hashtable - Save (NW_Reals[12] + (NW_Reals[13] x (Real((Level of |c00FF00FFNothrend's Wrath|r for Temp_Unit_1))))) as (Key cone_damage) of (Key (Last created unit)) in NW_Hash
                  • -------- -------------------- --------
                  • -------- Randomize rotaion direction (clockwise or counter-clockwise) --------
                  • -------- -------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Random integer number between 1 and 2) Equal to 1
                    • Then - Actions
                      • Hashtable - Save True as (Key direction) of (Key (Last created unit)) in NW_Hash
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                • Else - Actions
              • -------- ------------------------- --------
              • -------- Reduce interval time / reset interval --------
              • -------- ------------------------- --------
              • Set Temp_Real_2 = (Temp_Real_2 - 0.03)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Real_2 Less than or equal to 0.02
                • Then - Actions
                  • Set Temp_Real_2 = NW_Reals[0]
                • Else - Actions
              • Hashtable - Save Temp_Real_2 as (Key interval) of (Key (Picked unit)) in NW_Hash
            • Else - Actions
              • -------- ------------------------- --------
              • -------- Clear caster data --------
              • -------- ------------------------- --------
              • Unit Group - Remove Temp_Unit_1 from NW_Loop
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key effect) of (Key (Picked unit)) in NW_Hash)
              • -------- ------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in NW_Hash
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (NW_Loop is empty) Equal to True
                  • (NW_Dummies is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
      • -------- ------------------------- --------
      • -------- The projectile loop --------
      • -------- ------------------------- --------
      • Unit Group - Pick every unit in NW_Dummies and do (Actions)
        • Loop - Actions
          • Set Temp_Unit_1 = (Picked unit)
          • Set Temp_Unit_2 = (Load (Key caster) of (Key (Picked unit)) in NW_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Temp_Unit_1 is alive) Equal to True
              • (Temp_Unit_2 is alive) Equal to True
              • (Current order of Temp_Unit_2) Equal to (Order(chemicalrage))
            • Then - Actions
              • Set Temp_Unit_3 = (Load (Key target) of (Key (Picked unit)) in NW_Hash)
              • Set Temp_Real_3 = (Load (Key angle) of (Key (Picked unit)) from NW_Hash)
              • Set Temp_Loc_1 = (Load (Key center) of (Key (Picked unit)) in NW_Hash)
              • Set Temp_Loc_2 = (Temp_Loc_1 offset by (Load (Key radius) of (Key (Picked unit)) from NW_Hash) towards Temp_Real_3 degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load (Key direction) of (Key (Picked unit)) from NW_Hash) Equal to True
                • Then - Actions
                  • Hashtable - Save (Temp_Real_3 + (Load (Key speed) of (Key (Picked unit)) from NW_Hash)) as (Key angle) of (Key (Picked unit)) in NW_Hash
                • Else - Actions
                  • Hashtable - Save (Temp_Real_3 - (Load (Key speed) of (Key (Picked unit)) from NW_Hash)) as (Key angle) of (Key (Picked unit)) in NW_Hash
              • Unit - Move Temp_Unit_1 instantly to Temp_Loc_2
              • Set Temp_Lightning_1 = (Load (Key lightning) of (Key (Picked unit)) in NW_Hash)
              • Custom script: call MoveLightningEx(udg_Temp_Lightning_1 , true, GetLocationX(udg_Temp_Loc_1), GetLocationY(udg_Temp_Loc_1), GetLocationZ(udg_Temp_Loc_1) + 100, GetLocationX(udg_Temp_Loc_2), GetLocationY(udg_Temp_Loc_2), GetLocationZ(udg_Temp_Loc_2) + 40)
              • -------- ------------------------- --------
              • Set Temp_Real_1 = (Load (Key damage) of (Key (Picked unit)) from NW_Hash)
              • -------- Position of casting unit and the end point of lightning --------
              • Set Temp_Real_3 = (Distance between Temp_Loc_1 and Temp_Loc_2)
              • Set Temp_Real_4 = (Angle from Temp_Loc_1 to Temp_Loc_2)
              • -------- ------------------------- --------
              • -------- Picks unit withing the lightning's range of the caster --------
              • -------- ------------------------- --------
              • Set Temp_Group_2 = (Units within Temp_Real_3 of Temp_Loc_1 matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of Temp_Unit_2)) Equal to True))))
              • Unit Group - Pick every unit in Temp_Group_2 and do (Actions)
                • Loop - Actions
                  • Set Temp_Loc_3 = (Position of (Picked unit))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Cos((Temp_Real_4 - (Angle from Temp_Loc_1 to Temp_Loc_3)))) Greater than (Cos(NW_Reals[6]))
                    • Then - Actions
                      • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • -------- ------------------------- --------
                      • Unit - Cause Temp_Unit_2 to damage (Picked unit), dealing Temp_Real_1 damage of attack type Chaos and damage type Cold
                      • -------- ------------------------- --------
                      • Unit - Set life of Temp_Unit_2 to ((Life of Temp_Unit_2) + (Temp_Real_1 x NW_Reals[9]))
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_Temp_Loc_3)
              • Custom script: call DestroyGroup(udg_Temp_Group_2)
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • Temp_Unit_3 Equal to No unit
                      • Temp_Unit_3 Equal to Temp_Unit_1
                • Then - Actions
                  • Set Temp_Group_2 = (Units within 192.00 of Temp_Loc_2 matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of Temp_Unit_2)) Equal to True))))
                  • Set Temp_Unit_3 = (Random unit from Temp_Group_2)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Temp_Unit_3 is alive) Equal to True
                      • (Temp_Unit_3 is in (Load (Key group) of (Key (Picked unit)) in NW_Hash)) Equal to False
                    • Then - Actions
                      • Unit Group - Add Temp_Unit_3 to (Load (Key group) of (Key (Picked unit)) in NW_Hash)
                      • Hashtable - Save Handle OfTemp_Unit_3 as (Key target) of (Key (Picked unit)) in NW_Hash
                    • Else - Actions
                  • Custom script: call DestroyGroup(udg_Temp_Group_2)
                • Else - Actions
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Temp_Unit_3 Not equal to No unit
                  • Temp_Unit_3 Not equal to Temp_Unit_1
                  • (Temp_Unit_3 is alive) Equal to True
                • Then - Actions
                  • Set Temp_Loc_3 = (Position of Temp_Unit_3)
                  • Set Temp_Real_5 = (Distance between Temp_Loc_2 and Temp_Loc_3)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Temp_Real_5 Less than 192.00
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Temp_Real_5 Less than 64.00
                        • Then - Actions
                          • Unit - Cause Temp_Unit_2 to damage Temp_Unit_3, dealing (Load (Key cone_damage) of (Key (Picked unit)) from NW_Hash) damage of attack type Spells and damage type Normal
                          • Special Effect - Create a special effect attached to the origin of Temp_Unit_3 using Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • NW_Reals[11] Equal to 1.00
                            • Then - Actions
                              • Unit Group - Remove Temp_Unit_3 from (Load (Key group) of (Key (Picked unit)) in NW_Hash)
                              • -------- ------------------------- --------
                              • Unit - Add a 2.00 second Generic expiration timer to Temp_Unit_2
                              • -------- ------------------------- --------
                              • Set Temp_Loc_1 = (Load (Key center) of (Key (Picked unit)) in NW_Hash)
                              • -------- ------------------------- --------
                              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                              • -------- ------------------------- --------
                              • Lightning - Destroy (Load (Key lightning) of (Key (Picked unit)) in NW_Hash)
                              • -------- ------------------------- --------
                              • Special Effect - Destroy (Load (Key effect1) of (Key (Picked unit)) in NW_Hash)
                              • Special Effect - Destroy (Load (Key effect2) of (Key (Picked unit)) in NW_Hash)
                              • -------- ------------------------- --------
                              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in NW_Hash
                            • Else - Actions
                        • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • NW_Reals[10] Equal to 1.00
                          • (Temp_Unit_3 is in CI_Frozen) Equal to False
                          • (Temp_Unit_3 is in FH_Loop_Group_2) Equal to False
                        • Then - Actions
                          • Set Temp_Real_3 = (Angle from Temp_Loc_3 to Temp_Loc_2)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Temp_Real_5 Less than NW_Reals[14]
                            • Then - Actions
                              • Set Temp_Loc_4 = (Temp_Loc_3 offset by Temp_Real_5 towards Temp_Real_3 degrees)
                            • Else - Actions
                              • Set Temp_Loc_4 = (Temp_Loc_3 offset by NW_Reals[14] towards Temp_Real_3 degrees)
                          • -------- ------------------------- --------
                          • -------- Pathability check --------
                          • -------- ------------------------- --------
                          • Item - Create Claws of Attack +15 at Temp_Loc_4
                          • Set Temp_Loc_1 = (Position of (Last created item))
                          • Set Temp_Real_1 = (X of Temp_Loc_1)
                          • Set Temp_Real_2 = (Y of Temp_Loc_1)
                          • Set Temp_Real_3 = (X of Temp_Loc_4)
                          • Set Temp_Real_4 = (Y of Temp_Loc_4)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Abs((Temp_Real_1 - Temp_Real_3))) Less than 6.00
                              • (Abs((Temp_Real_2 - Temp_Real_4))) Less than 6.00
                            • Then - Actions
                              • Custom script: call SetUnitX(udg_Temp_Unit_3, udg_Temp_Real_3)
                              • Custom script: call SetUnitY(udg_Temp_Unit_3, udg_Temp_Real_4)
                            • Else - Actions
                          • Item - Remove (Last created item)
                          • Custom script: call RemoveLocation(udg_Temp_Loc_1)
                          • Custom script: call RemoveLocation(udg_Temp_Loc_4)
                        • Else - Actions
                    • Else - Actions
                      • -------- ------------------------- --------
                      • -------- If dragged unit is too far from the spirit, it stops being dragged. A new unit can the n be chosen to be dragged --------
                      • -------- If the caster (Tem_Unit_1) is saved as the unit, a new unit can be chose to be dragged --------
                      • -------- ------------------------- --------
                      • Unit Group - Remove Temp_Unit_3 from (Load (Key group) of (Key (Picked unit)) in NW_Hash)
                      • Hashtable - Save Handle OfTemp_Unit_2 as (Key target) of (Key (Picked unit)) in NW_Hash
                  • Custom script: call RemoveLocation(udg_Temp_Loc_2)
                  • Custom script: call RemoveLocation(udg_Temp_Loc_3)
                • Else - Actions
            • Else - Actions
              • -------- ------------------------- --------
              • -------- Clear dummy data --------
              • -------- ------------------------- --------
              • Unit - Add a 2.00 second Generic expiration timer to Temp_Unit_1
              • -------- ------------------------- --------
              • Set Temp_Loc_1 = (Load (Key center) of (Key (Picked unit)) in NW_Hash)
              • Custom script: call RemoveLocation(udg_Temp_Loc_1)
              • -------- ------------------------- --------
              • Set Temp_Group_1 = (Load (Key group) of (Key (Picked unit)) in NW_Hash)
              • Custom script: call DestroyGroup(udg_Temp_Group_1)
              • -------- ------------------------- --------
              • Lightning - Destroy (Load (Key lightning) of (Key (Picked unit)) in NW_Hash)
              • -------- ------------------------- --------
              • Special Effect - Destroy (Load (Key effect1) of (Key (Picked unit)) in NW_Hash)
              • Special Effect - Destroy (Load (Key effect2) of (Key (Picked unit)) in NW_Hash)
              • -------- ------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in NW_Hash
              • -------- ------------------------- --------
              • Unit Group - Remove Temp_Unit_1 from NW_Dummies
              • -------- ------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (NW_Loop is empty) Equal to True
                  • (NW_Dummies is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions

Pharaoh_ for spelltesting and ideas.
Dr. Boom for spelltesting.
Vexorian for dummy model.



v1.03
The caster is now paused when charging with Frostmourne's Hunger.
Frozen units won't get knocked back with Frostmourne's Hunger.
The caster can no longer walk out of playable map area with Distort Reality.

v.1.02 - 15.11.2010
Fixed bug where the Mens Imperium max range wasn't working.

v.1.02
Changed the special effects for Distort Reality's projectiles.
Merged two triggers in Distort Reality.
Orbs for Northrend's Wrath are no longer keyed with the caster's handle, they are now used on their own. This reduces the amount of times the spell needs to load hashtable data -> better performance. It also allows "true MUI", the caster can have multiple instances of the spell active at the same time.

v1.01
Frozen units can no longer be dragged/kncoked back.
Contages Insanctus now correctly checks the mana cost of the ability.
Created a variable for turning collision off for the caster when using Distort Reality, so the use can easily turn that on/oof for the ability.

v1.0
Uploaded.


This spellpack is meant to be used with the following model:
The Lich King

Download it and the icon for the unit. Import them to this map for the Lich King custom unit for optimal experience. The attack animations and cast timings are designed for that awesome model created by l0w_kwaliti/



Keywords:
lich king arthas frostmourne northrend epic spellpack
Contents

Lich King Spell Pack (Map)

Reviews
12:33, 17th Jun 2010 Hanky: Really nice looking spellpack. Everything is leakless and MUI. So it's fine enough for an approval.

Moderator

M

Moderator

12:33, 17th Jun 2010
Hanky:
Really nice looking spellpack. Everything is leakless and MUI. So it's fine enough for an approval.
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
Almost none of the effects are put up well together.

Some are purely spam of effect(Distortion Wave) while others have no connection between themselves, auras are meant to be passive not togleable and more than all this spellpack deserves no more than 4/5.

The coding is fine, the effects(spell effects, not eyecandy) are mostly general + one of the spells is extremely bug abuseable so no chance for 5/5.
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
The one where you turn off a unit's colisions size? I mean you do know how much abuse can be provided with that spell?

You can:
Pass through destructables
Pass through items
Pass through structures
Pass through water(afaik)
Pass through all possible pathing blockers
Get stuck
Walk on all cliff heights like a god.

That pretty much sums it up, if that ain't abuseable then i dunno.
 
Level 16
Joined
May 1, 2008
Messages
1,605
Seas =)

Jeah here we go - you release your map ( didn't notic it ... )

As I said to you while I was testing your map - I like everything - ok I didn't know that Distort Reality should be as a bug - I thought that is normally that the lich king can walk through thinks if he cast this/his mighty ability.

But still I give you 5/5 because I just like everything!

Edit: Dude I'm sorry for posting this but some how the "Contages Insanctus" not always turns the terrain into ice... I don't know I just cast some spells normally ice created but then somehow the aura was active but no ice terrain
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
The one where you turn off a unit's colisions size? I mean you do know how much abuse can be provided with that spell?

Alright, I'll do something about it, I'll add some kind of pathing check.

DR. Boom said:
Edit: Dude I'm sorry for posting this but some how the "Contages Insanctus" not always turns the terrain into ice... I don't know I just cast some spells normally ice created but then somehow the aura was active but no ice terrain

I think it's because when you get stunned, the "deactivate" trigger fires, so the triggered effects turn off, while the icon stills shows the spell is on. I'll fix it.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
v1.01:

Frozen units can no longer be dragged/kncoked back.
Contages Insanctus now correctly checks the mana cost of the ability.
Created a variable for turning collision off for the caster when using Distort Reality, so the use can easily turn that on/off for the ability.
Changed the tootip for Distortion Wave a bit.

I left the collision off for the caster by default, because that's the way I want it to be. His physical existence is in another reality, so he should be able to pass through things. If you get stuck, that's your own fault. You can cast the ability again eventually. Or just disable the collision altering for the ability in the options.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
v.1.02
Changed the special effects for Distort Reality's projectiles.
Merged two triggers in Distort Reality.
Orbs for Northrend's Wrath are no longer keyed with the caster's handle, they are now used on their own. This reduces the amount of times the spell needs to load hashtable data -> better performance.
 
Level 1
Joined
Feb 18, 2010
Messages
4
Amazing spells, I have no experience with "designing" my own custom spells or even working with JASS (at all), but this is amazingly fun to play with.
 
Level 1
Joined
Apr 16, 2010
Messages
7
I am new at this but when I put it on my map when I cliked on it, it looked like he was casting but nothing hapend plz help
 
Level 8
Joined
Jul 14, 2010
Messages
235
really nice spells for the Lich King, which is the last fight in my map :)

But when I order the Lich King to cast "Mens Imperium", something goes wrong. Everything works when other players or myself cast the spell. But the computer casts the spell, takes over the unit, but the unit doesnt go back to its previous owner after 10seconds, the mind controlled unit stays with the computer until death. This only happens when I order a computer to cast it :( Anyone else experienced the same thing? Can it be something with "Previous player" triggers or something?
 
Last edited:
Level 8
Joined
Jul 14, 2010
Messages
235
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240
Here's how to import Mens Imperium:

Make sure the following box is checked:
File -> Preferences -> General -> Automatically generate unknown variables while pasting triggers

Copy and paste the ability.
Copy and paste the triggers.
In Mens Inperium trigger, set the Ability being cast to the correct ability.

That should be it. If it doesn't work, throw me a private message, preferably with a download link to your map so I can make the spell work for you,
 
Level 16
Joined
May 1, 2008
Messages
1,605
Lich King Spellpack v1.02

Moin moin =)

== My personal vote APPROVAL [5/5] (but fix the posted bugs please) ==

Hey I remember this Spellpack and now I see it in the spell section and thought myself why not look what it becomes until now.

I don't have to say that you did a great job with this pack. Really good spells and effects, BUT I must report some bugs.

If I use "Contages Insanctus", I can walk out of the map. Maybe you can fix that. When I'm out of map and activate the spell again, I can't move in.
boeqhfv9aenc9fr3w.jpg


And I have to say that "Frostmourne's Hunger" can bug in 3 cases and I have a little note to the spell.

1) I can't explain the first bug, so I uploaded a screen and I hope you can get it =O
boeqi6bfj596c0f0c.jpg

The hero stopped at the point where he stands now and the shockwave effect remains for ever.

2) If I use this spell, I rush to a target. But if the target has a longer distance, I can about this rush by fast clicking on another point of the map. So the hero about the rush, but again the shockwave effect remains for ever.

3) If I rush to a target, all nearby targets get knocked back and freez. I use this ability more times and then even freezed unit can attack me.
boeqc64ss8693hipo.jpg

There you see the rifleman, who is frozen but he attacks me ( can't get a better screen ) and I don't know if he really was frozen or just the effect stays on the unit.

4) (the note): If I use the ability, rush to a target, nearby targets get knocked back and frozen. Then I use this ability again and the frozen targets get knock back again. This is of course optional but frozen units can't get knockback I think. Also I get a huge lag when I use this ability the first, but maybe this is just my low computer ^^

Ok this is all for now. I know those bugs should get minus points [3/5], but I know your trigger skills and I now for you it will be an easy thing to fix these problems. Also this Spellpack is great (without these bugs^^) so I think [5/5] is a good choice.

Note: (I alway type this note to my sure everyone understand it!) My review are NOTHING against these spells and/or NOTHING against the creator of these spells. I just detect some bugs and want post it here, then there can be fixed.

Greetings and Peace
Dr. Boom
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

Ahh cool you fixed the reported bugs, but I'm sorry now there's another bug.

When I have Contages Insanctus active and use Frostmourne's Hunger, the hero rush to the target. After finish this spell, the Contages Insanctus button is still on enable, but there is no effect of Contages Insanctus anymore.
bof1zz80n0vn8um7w.jpg

Also I don't know if that was the plan, but if I cast "Nothrend's Wrath" press Esc and use again "Nothrend's Wrath", the first cast isn't stopped, to I got 2 "Nothrend's Wrath" at the same time ( after the 3rd "Nothrend's Wrath" my fps is down anyway ).

Ok that's all now! Again I say this spellpack is create and I red on page to "may you go to SC2" - I hope not, we will miss you =(

Note: (again to make sure ^^) My review is NOTHING against you and/or NOTHING against the spellpack!

Greetings and Peace
Dr. Boom
 
Level 2
Joined
Jan 7, 2010
Messages
16
All of the spells are really cool. My favorite is the Distort Reality. But I do have 2 concerns:

1. They are too "flashy". too many special effects. Lag is not the issue, it just looks too much.

2. Too many effects for each spell. Take the first spell for example: Frostmourne's Hunger. Isolates target. Knockback. Stun (freeze). + attack speed, + damage (while reducing the target's). That is easily 2 abilities in itself that would both still be awesome.

Overall, I give it a 4/5.
 
Top