1. Are you planning to upload your awesome map to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  5. Dismiss Notice
  6. The Highway to Hell has been laid open. Come along and participate in the 5th Special Effect Contest.
    Dismiss Notice
  7. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Trigger Viewer

The Sun Blessed 1.0.w3x
Variables
Initialization
Melee Initialization
Players
Start Game
Race
Dialog High Elves
High Elves Selected
Victory/Defeat Conditions
Victory
Defeat
Stuffs
Quest
Gui Spells
Silencer
Silence Bolt
Arcane Blast
Shock Aura
Silencers Wrath
Sun's Blessing
Suns Blessing
DivineStrike
Divine Strike
Crystalization
Crystalization Setings
Crystalyzation Loop
Crystalization Fragments Loop
AquaBurst
Aqua Burst
Thunder Rage
Thunder Rage
Fire Grip
Fire Grip
Fire Grip Turn On
Sun's Wrath
Sun Wrath
PyroSphere
PyroSphere Start
PyroSphere Loop
Arcane Burn
Arcane Burn
Defenders Shield
DShield
DShield2
MindlessRage
MR
Elven Blades
s000
s001
s002
s003
s004
SplitArrows
SplitShot Cast
Hashtable
SplitShot Loop
Telekinetic Seizure
Telekinetic Seizure Setings
Telekinetic Seizure Loop
ManaStorm
Startup
Manastorm Cast
Lightning Clear
Arcane Eruption
AE SetUp
AE Cast
AE Loop
Lightning Pulse
LightningPulse
Loop
Loop 2
Restoration
SettingsRestore
Restoration
Righteous Field
init
cast
loop
Fury Strike
Fury Strike
Meteor
M Cast
M Meteor
Arcane Distruption
Arcane Disruption
FireWall
Fire Wall
Arcane Dispel
Arcane Dispel Init
AD
Arcane Dispel Do
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.

		
Name Type Is Array Initial Value
ABcaster unit No
ABdummy unit No
AbilityLevel integer No
ABlevel integer No
ABowner player No
ABpoint location No
ABtargetpoint location No
AE_Arc real No
AE_Caster unit No
AE_CasterKey integer No
AE_CurrentDuration real No
AE_CurrentHeight real No
AE_Damage real Yes
AE_DamageGroup group No
AE_DamageRadius real No
AE_Distance real No
AE_Duration real Yes
AE_Hash hashtable No
AE_Height real Yes
AE_Integer integervar No
AE_Level integer No
AE_Loc location No
AE_LoopGroup group No
AE_ManaBurn real Yes
AE_Offset location No
AE_Orb unit No
AE_OrbHex integer No
AE_OrbInterval real No
AE_OrbKey integer No
AE_Orbs unit No
AE_OrbsGroup group No
AE_OrbsNumberMax integer Yes
AE_OrbsNumberMin integer Yes
AE_Owner player No
AE_Radius real Yes
AE_SFX string Yes
AE_TempKey integer No
AE_Timer real No
AE_Travelled real No
AE_U unit No
AE_UKey integer No
AE_ULoc location No
AllUnits group No
AngleVar04 real No
Aqua_Burst_Ability_Level integer No
Aqua_Burst_Area_of_Effect real No
Aqua_Burst_Base_Damage real No
Aqua_Burst_Caster unit No
Aqua_Burst_Damage_Group group No
Aqua_Burst_Location location No
Aqua_Burst_Total_Damage real No
Arcane_Disruption_Base_Mana real No
Arcane_Disruption_Bonus_Mana real No
Arcane_Disruption_Caster unit No
Arcane_Disruption_Damage real No
Arcane_Disruption_Level integer No
Arcane_Disruption_Target unit No
Arcane_Disruption_Total_Mana real No
ArrowAngle real No
ArrowDamage real No
ArrowFullDamage real No
ArrowGroup group No
ArrowLifeTime real No
ArrowLoop unit No
ArrowMovePos location No
ArrowPos location No
ArrowRange real No
ArrowSpeed real No
Blade unit Yes
BladeDamage real Yes
BladeDuration real Yes
BladeSpeed real No
ButtonNo button No
ButtonYes button No
C integervar No
C_Angle real Yes
C_Dmg real Yes
C_Duration real Yes
C_Fade real Yes
C_Hero unit Yes
C_IntervaCheck real Yes
C_Interval real Yes
C_Level integer Yes
C_Missile unit Yes
C_Off boolean Yes
C_Skip integer No
C_Spawn integer Yes
C_Target unit Yes
C_Times integer No
Caster unit No
CasterUnit unit No
CastPos location No
Changed_Unit unit No
CM integervar No
CM_Angle real Yes
CM_Distance real Yes
CM_Dmg real Yes
CM_Effect effect Yes
CM_Group group Yes
CM_Hero unit Yes
CM_Off boolean Yes
CM_Point location Yes
CM_Skip integer No
CM_Speed real Yes
CM_Times integer No
D_End integer No
D_Point location Yes
D_SpecialEffect effect Yes
D_Start integer No
D_Unit unit Yes
DefeatPL1 boolean No
DefeatPL10 boolean No
DefeatPL11 boolean No
DefeatPL12 boolean No
DefeatPL2 boolean No
DefeatPL3 boolean No
DefeatPL4 boolean No
DefeatPL5 boolean No
DefeatPL6 boolean No
DefeatPL7 boolean No
DefeatPL8 boolean No
DefeatPL9 boolean No
DialogBloodElves dialog No
ExInteger integervar No
F_Fade real No
F_FTime integer No
F_Group group No
F_Point location No
F_Table hashtable No
F_Unit unit No
Fire_Wall_Ability_Level integer No
Fire_Wall_Caster unit No
Fire_Wall_Distance real No
Fire_Wall_Dummy_Ability abilcode No
Fire_Wall_Duration real No
Fire_Wall_Location location No
Fire_Wall_Loop_Location location No
Fire_Wall_Loop_Location_2 location No
Fire_Wall_Owner player No
FullLoop real No
GroupVar10 group No
GroupVar13 group No
GScaster unit No
GSdummy unit No
GSplayer player No
GStargetlocation location No
HF_ability abilcode No
HF_angle_gap integer No
HF_animation string No
HF_caster unit No
HF_Caster_Group group No
HF_counter real No
HF_damage real Yes
HF_dummy unitcode No
HF_dummy_ammout integer No
HF_DummyGroup group No
HF_duration real Yes
HF_effect string No
HF_hash hashtable No
HF_i integer No
HF_level integer No
HF_loc1 location No
HF_loc2 location No
HF_loop integervar No
HF_radius real No
HF_temp_duration real No
HF_temp_loc location No
HF_temp_loc2 location No
HF_temp_unit unit No
JKS_Integer integer Yes
JKS_J_AttachPointEndString1 string No
JKS_J_AttachPointEndString2 string Yes
JKS_J_AttachPointString1 string No
JKS_J_AttachPointString2 string No
JKS_J_AttachSfx1 effect Yes
JKS_J_AttachSfx2 effect Yes
JKS_J_AttachSfxString1 modelfile No
JKS_J_AttachSfxString2 modelfile No
JKS_J_AttackType2 attacktype Yes
JKS_J_boolean boolean Yes
JKS_J_Damage1 real No
JKS_J_Damage2 real Yes
JKS_J_DamageRadius1 real No
JKS_J_DamageRadius2 real Yes
JKS_J_DamageType1 damagetype No
JKS_J_DamageType2 damagetype Yes
JKS_J_distance real Yes
JKS_J_distancetravelled real Yes
JKS_J_EndSfxString1 string No
JKS_J_EndSfxString2 string Yes
JKS_J_heightchange real No
JKS_J_Jumper1 unit No
JKS_J_Jumper2 unit Yes
JKS_J_JumpSpeed1 real No
JKS_J_JumpSpeed2 real Yes
JKS_J_MaxHeightReached1 real No
JKS_J_MaxHeightReached2 real Yes
JKS_J_Target1 unit No
JKS_J_TargetPoint1 location No
JKS_J_TargetPoint2 location Yes
JKS_JoK boolean Yes
JKS_K_angle1 real No
JKS_K_angle2 real Yes
JKS_K_CollisionAttackType2 attacktype Yes
JKS_K_CollisionBoolean1 boolean No
JKS_K_CollisionBoolean2 boolean Yes
JKS_K_CollisionDamage1 real No
JKS_K_CollisionDamage2 real Yes
JKS_K_CollisionDamageType1 damagetype No
JKS_K_CollisionDamageType2 damagetype Yes
JKS_K_CollisionRadius1 real No
JKS_K_CollisionRadius2 real Yes
JKS_K_CollisionSFXAttachPoint1 string No
JKS_K_CollisionSFXAttachPoint2 string Yes
JKS_K_CollisionSFXString1 string No
JKS_K_CollisionSFXString2 modelfile Yes
JKS_K_source1 unit No
JKS_K_source2 unit Yes
JKS_K_speeddecrease1 real No
JKS_K_speeddecrease2 real Yes
JKS_K_startspeed1 real No
JKS_K_startspeed2 real Yes
JKS_K_target1 unit No
JKS_K_target2 unit Yes
JKS_K_TrailSfxString1 string No
JKS_K_TrailSfxString2 modelfile Yes
JKS_K_TreeKillBoolean1 boolean No
JKS_K_TreeKillBoolean2 boolean Yes
JKS_K_TreeKillRadius1 real No
JKS_K_TreeKillRadius2 real Yes
JKS_tempgroup group Yes
JKS_temppoint location Yes
JKS_terrainZ real No
lastfloating texttag No
lastunit unit No
Loop_Int integervar No
M_Boolean boolean Yes
M_Caster unit Yes
M_Damage real Yes
M_Delay real Yes
M_Index integer Yes
M_Point location Yes
M_Radius real Yes
M_SFX effect Yes
M_Speed real Yes
MS_angle real No
MS_AoEorSIboolean1 boolean No
MS_AoEorSIboolean2 boolean Yes
MS_AttackType1 attacktype No
MS_AttackType2 attacktype Yes
MS_Damage1 real No
MS_Damage2 real Yes
MS_DamageOrHealDone1 real No
MS_DamageOrHealDone2 real Yes
MS_DamageType1 damagetype No
MS_DamageType2 damagetype Yes
MS_distance real Yes
MS_distancebetween real Yes
MS_Dummy unitcode No
MS_firstpos location Yes
MS_FlyDifference real Yes
MS_Heal1 real No
MS_Heal2 real Yes
MS_HealAndDamageBoolean1 boolean No
MS_HealAndDamageBoolean2 boolean Yes
MS_ImpactRadius1 real No
MS_ImpactRadius2 real Yes
MS_Integer integer Yes
MS_Missile unit Yes
MS_MissileH1 real No
MS_MissileH2 real Yes
MS_missilemodel effect Yes
MS_MissileSpeed1 real No
MS_MissileSpeed2 real Yes
MS_ModelofDummy modelfile No
MS_ModelSize real No
MS_parabolaBoolean1 boolean No
MS_parabolaBoolean2 boolean Yes
MS_SfxOnImpact1 string No
MS_SfxOnImpact2 string Yes
MS_Source1 unit No
MS_Source2 unit Yes
MS_Target1 unit No
MS_Target2 unit Yes
MS_TargetPoint1 location No
MS_TargetPoint2 location Yes
MS_temppoint2 location Yes
MS_temppoint3 location Yes
MS_temppointIndex location Yes
MS_tempreal real Yes
MS_unitgroupIndex group No
MS_unitgroupIndex2 group No
Offset real No
Owner_Of_Change player No
PlayersUsers force No
Point_Pulse location No
Position real Yes
PS integervar No
PS_Angle real Yes
PS_Caster unit Yes
PS_Distance real Yes
PS_Dummy unit Yes
PS_Off boolean Yes
PS_Point location Yes
PS_Skip integer No
PS_Times integer No
ReadyPL1 boolean No
ReadyPL10 boolean No
ReadyPL11 boolean No
ReadyPL12 boolean No
ReadyPL2 boolean No
ReadyPL3 boolean No
ReadyPL4 boolean No
ReadyPL5 boolean No
ReadyPL6 boolean No
ReadyPL7 boolean No
ReadyPL8 boolean No
ReadyPL9 boolean No
S_Caster unit Yes
S_DamageDone real Yes
S_group group No
S_Integer integer Yes
S_KnockbackStrength real Yes
S_Range real Yes
S_temppoint location No
S_temppoint2 location No
SAcaster unit No
SAdamage integer No
SAdummy unit No
SAlevel integer No
SAplayer player No
SAshockchance real No
SAtarget unit No
SAtargetlocation location No
SAtext texttag No
SBburnchance real No
SBcaster unit No
SBdamage integer No
SBdummy unit No
SBlevel integer No
SBowner player No
SBtarget unit No
SBtargetposition location No
SBtext texttag No
Sfx effect Yes
SkillDuration timer No
SpellHashtable hashtable No
Targets group No
TempGroup group No
TempInt integer No
TempLoc15 location No
TempLoc36 location No
TempLoc37 location No
TempLoc45 location No
TempLoc49 location No
TempLoc7 location No
TempPlayer player No
TempPoint location Yes
temppoint2 location No
Thunder_Rage_Ability_Level integer No
Thunder_Rage_Area_of_Effect real No
Thunder_Rage_Base_Mini_Damage real No
Thunder_Rage_Base_Unit_HP real No
Thunder_Rage_Caster unit No
Thunder_Rage_Damage_Factor real No
Thunder_Rage_Damage_Group group No
Thunder_Rage_Location location No
Thunder_Rage_Location2 location No
Thunder_Rage_Loop_Location location No
Thunder_Rage_Mini_AoE real No
Thunder_Rage_Mini_Damage_Group group No
Thunder_Rage_Owner player No
Thunder_Rage_Total_Damage real No
Thunder_Rage_Total_Mini_Damage real No
Thunder_Rage_Unit_HP real No
TS integervar No
TS_Angle real Yes
TS_Damage real Yes
TS_Distance real Yes
TS_Group group Yes
TS_Height real Yes
TS_Hero unit Yes
TS_MaxDistance real Yes
TS_Off boolean Yes
TS_Parabola real Yes
TS_Point location Yes
TS_Radius real Yes
TS_Skip integer No
TS_Slams integer Yes
TS_Speed real Yes
TS_Target unit Yes
TS_Times integer No
UnitTarget unit No
UnitVarCaster10 unit No
UnitVarCaster12 unit No
UnitVarCaster3 unit No
UnitVarCaster8 unit No
UnitVarPicked unit No
UnitVarTarget8 unit No
WE_Caster unit No
WE_Hashtable hashtable No
WH_AoE real Yes
WH_Caster unit No
WH_Chance real Yes
WH_Effect_Friend string No
WH_Effect_Place string No
WH_Effect_Place_Friend string No
WH_Effect_Self modelfile No
WH_Heal real Yes
WH_Heal_Color string No
WH_Heal_Text integer No
WH_Heal_Unit unit No
WH_Int real No
WH_Show_Heal boolean No
WH_Spell abilcode No
WS_AfterHp1 real No
WS_BaseDamage real No
WS_BaseDamageRange real No
WS_BaseEffectRange real No
WS_BaseEnddamage real No
WS_BaseManaBurn real No
WS_BonusDamageRange real No
WS_BonusEffectRange real No
WS_BonusManaBurn real No
WS_BurnedMana real No
WS_BurnedMana1 real No
WS_BurnedMessage string No
WS_BurnedmessageInteger integer No
WS_Caster unit No
WS_CurrentHp1 real No
WS_CurrentMana real No
WS_Damage real No
WS_DamageRange real No
WS_DisplayOverdrain integer No
WS_Dummy unitcode No
WS_DummyMonsoon unitcode No
WS_EndDamage real No
WS_Force force No
WS_Group_Integer integer No
WS_Hashtable hashtable No
WS_Impact string No
WS_Integer integervar No
WS_LightningDuration real No
WS_LightningGroup group No
WS_LightningType lightningtype No
WS_Loops integer No
WS_Lvl integer No
WS_Manaburn integer No
WS_Owner player No
WS_PickedPos location No
WS_PickedUnit unit No
WS_Point1 location No
WS_Point2 location No
WS_Point3 location No
WS_Range real No
WS_Real real No
Melee Initialization
  Events
    Map initialization
  Conditions
  Actions
    -------- Common Melee Script --------
    Melee Game - Use melee time of day (for all players)
    Melee Game - Limit Heroes to 1 per Hero-type (for all players)
    Melee Game - Give trained Heroes a Scroll of Town Portal (for all players)
    Melee Game - Set starting resources (for all players)
    Melee Game - Remove creeps and critters from used start locations (for all players)
    -------- Check Trigger Comments --------
    Melee Game - Create starting units (for all players)
    -------- This is to prevent the players to start before the others --------
    Set VariableSet AllUnits = (Units in (Playable map area))
    Unit Group - Pick every unit in AllUnits and do (Pause (Picked unit))
Players
  Events
    Map initialization
  Conditions
  Actions
    -------- Limit of custom heros and creates a group to show the dialog only to the Human Players --------
    Player Group - Pick every player in (All players matching (((Matching player) controller) Equal to User).) and do (Actions)
      Loop - Actions
        Player Group - Add (Picked player) to PlayersUsers
        Player - Limit training of Suncaller to 1 for (Picked player)
        Player - Limit training of Silencer to 1 for (Picked player)
        Player - Limit training of Champion to 1 for (Picked player)
        Player - Limit training of Elemental Mage to 1 for (Picked player)
        Player - Limit training of Farstrider to 1 for (Picked player)
        Player - Limit training of Magistrix to 1 for (Picked player)
        Player - Limit training of Swordmaster to 1 for (Picked player)
        Player - Limit training of War Mage to 1 for (Picked player)
    -------- Check Trigger Comment --------
    -------- 1.1 --------
    If ((Player 1 (Red) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL1 = True) else do (Do nothing)
    -------- 1.2 --------
    If ((DefeatPL1 Equal to True) or ((Player 1 (Red) controller) Equal to Computer)) then do (Set VariableSet ReadyPL1 = True) else do (Do nothing)
    -------- Starts to repeat --------
    If ((Player 2 (Blue) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL2 = True) else do (Do nothing)
    If ((DefeatPL2 Equal to True) or ((Player 2 (Blue) controller) Equal to Computer)) then do (Set VariableSet ReadyPL2 = True) else do (Do nothing)
    If ((Player 3 (Teal) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL3 = True) else do (Do nothing)
    If ((DefeatPL3 Equal to True) or ((Player 3 (Teal) controller) Equal to Computer)) then do (Set VariableSet ReadyPL3 = True) else do (Do nothing)
    If ((Player 4 (Purple) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL4 = True) else do (Do nothing)
    If ((DefeatPL4 Equal to True) or ((Player 4 (Purple) controller) Equal to Computer)) then do (Set VariableSet ReadyPL4 = True) else do (Do nothing)
    If ((Player 5 (Yellow) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL5 = True) else do (Do nothing)
    If ((DefeatPL5 Equal to True) or ((Player 5 (Yellow) controller) Equal to Computer)) then do (Set VariableSet ReadyPL5 = True) else do (Do nothing)
    If ((Player 6 (Orange) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL6 = True) else do (Do nothing)
    If ((DefeatPL6 Equal to True) or ((Player 6 (Orange) controller) Equal to Computer)) then do (Set VariableSet ReadyPL6 = True) else do (Do nothing)
    If ((Player 7 (Green) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL7 = True) else do (Do nothing)
    If ((DefeatPL7 Equal to True) or ((Player 7 (Green) controller) Equal to Computer)) then do (Set VariableSet ReadyPL7 = True) else do (Do nothing)
    If ((Player 8 (Pink) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL8 = True) else do (Do nothing)
    If ((DefeatPL8 Equal to True) or ((Player 8 (Pink) controller) Equal to Computer)) then do (Set VariableSet ReadyPL8 = True) else do (Do nothing)
    If ((Player 9 (Gray) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL9 = True) else do (Do nothing)
    If ((DefeatPL9 Equal to True) or ((Player 9 (Gray) controller) Equal to Computer)) then do (Set VariableSet ReadyPL9 = True) else do (Do nothing)
    If ((Player 10 (Light Blue) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL10 = True) else do (Do nothing)
    If ((DefeatPL10 Equal to True) or ((Player 10 (Light Blue) controller) Equal to Computer)) then do (Set VariableSet ReadyPL10 = True) else do (Do nothing)
    If ((Player 11 (Dark Green) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL11 = True) else do (Do nothing)
    If ((DefeatPL11 Equal to True) or ((Player 11 (Dark Green) controller) Equal to Computer)) then do (Set VariableSet ReadyPL11 = True) else do (Do nothing)
    If ((Player 12 (Brown) slot status) Equal to Is unused) then do (Set VariableSet DefeatPL12 = True) else do (Do nothing)
    If ((DefeatPL12 Equal to True) or ((Player 12 (Brown) controller) Equal to Computer)) then do (Set VariableSet ReadyPL12 = True) else do (Do nothing)
    -------- Starts to show the Dialog to decide the to use the BloodElves or not --------
    Trigger - Run Dialog_High_Elves <gen> (checking conditions)
Start Game
  Events
  Conditions
  Actions
    -------- Checks if all the units are ready, it all are, then the game can start --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            ReadyPL1 Equal to True
            ReadyPL2 Equal to True
            ReadyPL3 Equal to True
            ReadyPL4 Equal to True
            ReadyPL5 Equal to True
            ReadyPL6 Equal to True
            ReadyPL7 Equal to True
            ReadyPL8 Equal to True
            ReadyPL9 Equal to True
            ReadyPL10 Equal to True
            ReadyPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        -------- Tell everyone the game has started --------
        Game - Display to (All players) the text: |c00ff0000WARNING|r - Game starts in 5 seconds. Get ready!
        Wait 5.00 seconds
        Game - Display to (All players) the text: Game Starts!
        -------- Unpause the units so the game can start --------
        Unit Group - Pick every unit in AllUnits and do (Unpause (Picked unit))
        Sound - Play TheSunwell <gen>
        -------- Run the AI for computer controlled units --------
        Melee Game - Run melee AI scripts (for computer players)
      Else - Actions
Dialog High Elves
  Events
  Conditions
  Actions
    Wait 0.10 seconds
    -------- Creates the Dialog and buttons --------
    Dialog - Change the title of DialogBloodElves to Play as High Elves?
    Dialog - Create a dialog button for DialogBloodElves labelled Yes
    Set VariableSet ButtonYes = (Last created dialog Button)
    Dialog - Create a dialog button for DialogBloodElves labelled No
    Set VariableSet ButtonNo = (Last created dialog Button)
    -------- Shows the dialog to all the human players --------
    Player Group - Pick every player in (All players matching (((Matching player) controller) Equal to User).) and do (Actions)
      Loop - Actions
        Dialog - Show DialogBloodElves for (Picked player)
High Elves Selected
  Events
    Dialog - A dialog button is clicked for DialogBloodElves
  Conditions
  Actions
    -------- A player clics a button, so, the player is ready, check what player clicked and set him ready --------
    If ((Triggering player) Equal to Player 1 (Red)) then do (Set VariableSet ReadyPL1 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 2 (Blue)) then do (Set VariableSet ReadyPL2 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 3 (Teal)) then do (Set VariableSet ReadyPL3 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 4 (Purple)) then do (Set VariableSet ReadyPL4 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 5 (Yellow)) then do (Set VariableSet ReadyPL5 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 6 (Orange)) then do (Set VariableSet ReadyPL6 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 7 (Green)) then do (Set VariableSet ReadyPL7 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 8 (Pink)) then do (Set VariableSet ReadyPL8 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 9 (Gray)) then do (Set VariableSet ReadyPL9 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 10 (Light Blue)) then do (Set VariableSet ReadyPL10 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 11 (Dark Green)) then do (Set VariableSet ReadyPL11 = True) else do (Do nothing)
    If ((Triggering player) Equal to Player 12 (Brown)) then do (Set VariableSet ReadyPL12 = True) else do (Do nothing)
    -------- Someone decides to use the Blood Elves, so the Blood Elf units are created for that player --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Clicked dialog button) Equal to ButtonYes
      Then - Actions
        -------- Replaces the units normal workers with Blood Elf workers --------
        Set VariableSet TempGroup = (Units owned by (Triggering player) matching (((Matching unit) is A peon-type unit) Equal to True).)
        Unit Group - Pick every unit in TempGroup and do (Replace (Picked unit) with a Worker (Quel'Dorei) using The new unit's default life and mana)
        -------- Replaces the normal town-hall with Blood Elf town-hall --------
        Set VariableSet TempGroup = (Units owned by (Triggering player) matching (((Matching unit) is A town-hall-type unit) Equal to True).)
        Unit Group - Pick every unit in TempGroup and do (Replace (Picked unit) with a Arcane Refuge using The new unit's default life and mana)
        -------- Check Trigger Comment --------
        -------- 1.1 --------
        If ((Race of (Triggering player)) Equal to Undead) then do (Create 2.Worker (Quel'Dorei) for (Triggering player) at ((Triggering player) start location) facing Default building facing degrees) else do (Do nothing)
        -------- 1.2 --------
        Set VariableSet TempGroup = (Units owned by (Triggering player) matching ((Unit-type of (Matching unit)) Equal to Ghoul).)
        Unit Group - Pick every unit in TempGroup and do (Remove (Picked unit) from the game)
        Set VariableSet TempGroup = (Units owned by (Triggering player) matching ((Unit-type of (Matching unit)) Equal to Haunted Gold Mine).)
        Unit Group - Pick every unit in TempGroup and do (Remove (Picked unit) from the game)
        -------- 1.3 --------
        Set VariableSet AllUnits = (Units in (Playable map area))
        Unit Group - Pick every unit in AllUnits and do (Pause (Picked unit))
      Else - Actions
    -------- Run the trigger that decides to start or not the game --------
    Trigger - Run Start_Game <gen> (checking conditions)
Victory
  Events
  Conditions
  Actions
    -------- Check Trigger Comments --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to False
            DefeatPL2 Equal to True
            DefeatPL3 Equal to True
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            DefeatPL12 Equal to True
      Then - Actions
        Game - Victory Player 1 (Red) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to False
            DefeatPL3 Equal to True
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            DefeatPL12 Equal to True
      Then - Actions
        Game - Victory Player 2 (Blue) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 3 (Teal) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 4 (Purple) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 5 (Yellow) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 6 (Orange) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 7 (Green) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 8 (Pink) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 9 (Gray) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 10 (Light Blue) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 11 (Dark Green) (Show dialogs, Show scores)
      Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        And - All (Conditions) are true
          Conditions
            DefeatPL1 Equal to True
            DefeatPL2 Equal to True
            DefeatPL3 Equal to False
            DefeatPL4 Equal to True
            DefeatPL5 Equal to True
            DefeatPL6 Equal to True
            DefeatPL7 Equal to True
            DefeatPL8 Equal to True
            DefeatPL9 Equal to True
            DefeatPL10 Equal to True
            DefeatPL11 Equal to True
            ReadyPL12 Equal to True
      Then - Actions
        Game - Victory Player 12 (Brown) (Show dialogs, Show scores)
      Else - Actions
Defeat
  Events
    Unit - A unit Dies
  Conditions
    (Owner of (Triggering unit)) Not equal to Neutral Hostile
  Actions
    Set VariableSet TempPlayer = (Owner of (Triggering unit))
    -------- Check Triggers Comment --------
    -------- 1.1 --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Or - Any (Conditions) are true
          Conditions
            (DefeatPL1 Equal to True) and (Player 1 (Red) Equal to TempPlayer)
            (DefeatPL2 Equal to True) and (Player 2 (Blue) Equal to TempPlayer)
            (DefeatPL3 Equal to True) and (Player 3 (Teal) Equal to TempPlayer)
            (DefeatPL4 Equal to True) and (Player 4 (Purple) Equal to TempPlayer)
            (DefeatPL5 Equal to True) and (Player 5 (Yellow) Equal to TempPlayer)
            (DefeatPL6 Equal to True) and (Player 6 (Orange) Equal to TempPlayer)
            (DefeatPL7 Equal to True) and (Player 7 (Green) Equal to TempPlayer)
            (DefeatPL8 Equal to True) and (Player 8 (Pink) Equal to TempPlayer)
            (DefeatPL9 Equal to True) and (Player 9 (Gray) Equal to TempPlayer)
            (DefeatPL10 Equal to True) and (Player 10 (Light Blue) Equal to TempPlayer)
            (DefeatPL11 Equal to True) and (Player 11 (Dark Green) Equal to TempPlayer)
            (DefeatPL12 Equal to True) and (Player 12 (Brown) Equal to TempPlayer)
      Then - Actions
        Skip remaining actions
      Else - Actions
    -------- Creates a group that checks buldings and workers --------
    Set VariableSet TempGroup = (Units owned by TempPlayer matching ((((Matching unit) is A structure) Equal to True) or (((Matching unit) is A peon-type unit) Equal to True)).)
    -------- If the units in the group last created are dead... --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (All units of TempGroup are dead) Equal to True
      Then - Actions
        -------- ...then the player will be defeated --------
        Game - Defeat TempPlayer with the message: Defeat!
        -------- Tells the other players the player was defeated --------
        Game - Display to (All players) the text: ((Name of TempPlayer) + was defeated.)
        Set VariableSet TempGroup = (Units owned by TempPlayer.)
        Unit Group - Pick every unit in TempGroup and do (Actions)
          Loop - Actions
            Unit - Order (Picked unit) to Stop.
        -------- Checks who was the defeated player to set the variable "Defeat" to true for the correct player --------
        If (TempPlayer Equal to Player 1 (Red)) then do (Set VariableSet DefeatPL1 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 2 (Blue)) then do (Set VariableSet DefeatPL2 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 3 (Teal)) then do (Set VariableSet DefeatPL3 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 4 (Purple)) then do (Set VariableSet DefeatPL4 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 5 (Yellow)) then do (Set VariableSet DefeatPL5 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 6 (Orange)) then do (Set VariableSet DefeatPL6 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 7 (Green)) then do (Set VariableSet DefeatPL7 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 8 (Pink)) then do (Set VariableSet DefeatPL8 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 9 (Gray)) then do (Set VariableSet DefeatPL9 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 10 (Light Blue)) then do (Set VariableSet DefeatPL10 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 11 (Dark Green)) then do (Set VariableSet DefeatPL11 = True) else do (Do nothing)
        If (TempPlayer Equal to Player 12 (Brown)) then do (Set VariableSet DefeatPL12 = True) else do (Do nothing)
        Trigger - Run Victory <gen> (checking conditions)
      Else - Actions
Quest
  Events
    Time - Elapsed game time is 0.01 seconds
  Conditions
  Actions
    Quest - Create a Required quest titled The High Elves with the description The High Elves are a very powerful ancient race. They are the descendants of the Highborne exiled from Kalimdor because of weilding and learning Arcane Magic., using icon path war3mapPreview.tga
    Quest - Create a Required quest titled Weakness and Powers with the description Powers:Powerful Heroes, Strong late game units, and Spellcasters.Weakness:Only regenerates during day time, no defenses and fragile early game., using icon path ReplaceableTextures\CommandButtons\BTNAnasterian.blp
    Quest - Create a Optional quest titled Credits with the description Credits:ElenaiPauLHFranksterChaosyAmigurumi(Diablo2)RadamantusDonate_XXX-BerZeKeR-CallahanBetaGodNFWar67ChromeMr.GoblinChenralstszManasurge, using icon path ReplaceableTextures\CommandButtons\BTNDragonHawk.blp
Silence Bolt
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Silence Bolt
    ((Target unit of ability being cast) has buff Silence) Equal to True
  Actions
    -------- ------------------------------------------------------------------ --------
    -------- Basi variables --------
    -------- ------------------------------------------------------------------ --------
    Set VariableSet SBcaster = (Triggering unit)
    Set VariableSet SBtarget = (Target unit of ability being cast)
    Set VariableSet SBtargetposition = (Position of SBtarget)
    Set VariableSet SBowner = (Owner of SBcaster)
    Set VariableSet SBlevel = (Level of Silence Bolt for SBcaster)
    -------- ------------------------------------------------------------------ --------
    -------- Setting the bonus damage --------
    -------- ------------------------------------------------------------------ --------
    Set VariableSet SBdamage = ((Intelligence of SBcaster (Include bonuses)) x SBlevel)
    -------- ------------------------------------------------------------------ --------
    -------- Here we set the chance to mana burn the target --------
    -------- ------------------------------------------------------------------ --------
    Set VariableSet SBburnchance = (15.00 x (Real(SBlevel)))
    -------- ------------------------------------------------------------------ --------
    -------- Create some effect, apply damage and show it via floating text --------
    -------- ------------------------------------------------------------------ --------
    Special Effect - Create a special effect attached to the origin (attachpoint) of SBtarget using Abilities\Spells\Items\AIil\AIilTarget.mdl
    Unit - Cause SBcaster to damage SBtarget, dealing (Real(SBdamage)) damage of attack type Spells and damage type Normal
    Special Effect - Destroy (Last created special effect)
    Floating Text - Create floating text that reads (String(SBdamage)) above SBtarget with Z offset 0.00, using font size 10.00, color (50.00%, 40.00%, 100.00%), and 0% transparency
    Set VariableSet SBtext = (Last created floating text)
    Floating Text - Set the velocity of SBtext to 100.00 towards 90.00 degrees
    Floating Text - Change SBtext: Disable permanence
    Floating Text - Change the lifespan of SBtext to 5.00 seconds
    Floating Text - Change the fading age of SBtext to 0.65 seconds
    -------- ------------------------------------------------------------------ --------
    -------- Now we proceed to check if target is goint to get mana burned --------
    -------- ------------------------------------------------------------------ --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Random real number between 0 and 100.00) Less than or equal to SBburnchance
      Then - Actions
        Unit - Create 1.Dummy for SBowner at SBtargetposition facing Default building facing degrees
        Set VariableSet SBdummy = (Last created unit)
        Unit - Add a 1.50 second Generic expiration timer to SBdummy
        Unit - Add Dummy Silence Bolt Burn Mana (Dummy) to SBdummy
        Unit - Set level of Dummy Silence Bolt Burn Mana (Dummy) for SBdummy to SBlevel
        Unit - Order SBdummy to Night Elf Demon Hunter - Mana Burn.SBtarget
      Else - Actions
    -------- ------------------------------------------------------------------ --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------ --------
    Custom script: call RemoveLocation (udg_SBtargetposition)
Arcane Blast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Arcane Blast
  Actions
    -------- ------------------------------------------------------------------ --------
    -------- Basi variables --------
    -------- ------------------------------------------------------------------ --------
    Set VariableSet ABcaster = (Triggering unit)
    Set VariableSet ABowner = (Owner of ABcaster)
    Set VariableSet ABlevel = (Level of Dummy Arcane Blast (Dummy) for ABcaster)
    Set VariableSet ABpoint = (Position of (Triggering unit))
    For each (Integer A) from 1 to 8, do (Actions)
      Loop - Actions
        -------- ------------------------------------------------------------------ --------
        -------- Setting the target location of the bolts and creating them --------
        -------- ------------------------------------------------------------------ --------
        Set VariableSet ABtargetpoint = (ABpoint offset by 500.00 towards ((Real((Integer A))) x 45.00) degrees.)
        Unit - Create 1 Dummy for ABowner at ABpoint facing ABtargetpoint
        Set VariableSet ABdummy = (Last created unit)
        Unit - Add Dummy Arcane Blast (Dummy) to ABdummy
        Unit - Set level of Dummy Arcane Blast (Dummy) for ABdummy to ABlevel
        Unit - Add Dummy Arcane Blast Aoe (Dummy) to ABdummy
        Unit - Set level of Dummy Arcane Blast Aoe (Dummy) for ABdummy to ABlevel
        -------- ------------------------------------------------------------------ --------
        -------- Order the dummy to cast the bolt damage effect and the silence effect --------
        -------- ------------------------------------------------------------------ --------
        Unit - Order ABdummy to Undead Dreadlord - Carrion Swarm.ABtargetpoint
        Unit - Order ABdummy to Neutral Dark Ranger - Silence.ABtargetpoint
        Unit - Add a 8.00 second Generic expiration timer to ABdummy
        -------- ------------------------------------------------------------------ --------
        -------- Clearing leaks --------
        -------- ------------------------------------------------------------------ --------
        Custom script: call RemoveLocation (udg_ABtargetpoint)
    Custom script: call RemoveLocation (udg_ABpoint)
Shock Aura
  Events
    Unit - A unit Is attacked
  Conditions
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        ((Attacking unit) has buff Endurance Aura) Equal to True
        (Level of Shock Aura for (Triggering unit)) Greater than 0
      Then - Actions
        -------- ------------------------------------------------------------------ --------
        -------- Basi variables --------
        -------- ------------------------------------------------------------------ --------
        Set VariableSet SAcaster = (Triggering unit)
        Set VariableSet SAlevel = (Level of Shock Aura for SAcaster)
        Set VariableSet SAplayer = (Owner of SAcaster)
        Set VariableSet SAtarget = (Attacking unit)
        Set VariableSet SAtargetlocation = (Position of SAtarget)
        -------- ------------------------------------------------------------------ --------
        -------- Here we set the shock damage --------
        -------- ------------------------------------------------------------------ --------
        Set VariableSet SAdamage = ((Intelligence of SAcaster (Include bonuses)) x 2)
        -------- ------------------------------------------------------------------ --------
        -------- Here we set the shock proc chances --------
        -------- ------------------------------------------------------------------ --------
        Set VariableSet SAshockchance = ((Real(SAlevel)) x 10.00)
        -------- ------------------------------------------------------------------ --------
        -------- And over here are the actions that triggers if the chance procs --------
        -------- ------------------------------------------------------------------ --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random real number between 0 and 100.00) Less than or equal to SAshockchance
          Then - Actions
            -------- ------------------------------------------------------------------ --------
            -------- Special effect and floating text display --------
            -------- ------------------------------------------------------------------ --------
            Special Effect - Create a special effect attached to the origin (attachpoint) of SAtarget using Abilities\Weapons\Bolt\BoltImpact.mdl
            Unit - Cause SAcaster to damage SAtarget, dealing (Real(SAdamage)) damage of attack type Spells and damage type Normal
            Special Effect - Destroy (Last created special effect)
            Floating Text - Create floating text that reads (String(SAdamage)) above SAtarget with Z offset 0.00, using font size 10.00, color (50.00%, 40.00%, 100.00%), and 0% transparency
            Set VariableSet SAtext = (Last created floating text)
            Floating Text - Set the velocity of SAtext to 100.00 towards 90.00 degrees
            Floating Text - Change SAtext: Disable permanence
            Floating Text - Change the lifespan of SAtext to 5.00 seconds
            Floating Text - Change the fading age of SAtext to 0.65 seconds
            -------- ------------------------------------------------------------------ --------
            -------- Order the dummy unit to silence the target --------
            -------- ------------------------------------------------------------------ --------
            Unit - Create 1.Dummy for SAplayer at SAtargetlocation facing Default building facing degrees
            Set VariableSet SAtarget = (Last created unit)
            Unit - Add a 1.50 second Generic expiration timer to SAdummy
            Unit - Add Slence Dummy (Dummy) to SAdummy
            Unit - Set level of Slence Dummy (Dummy) for SAdummy to SAlevel
            Unit - Order SAdummy to Neutral Fire Lord - Soul Burn.SAtarget
          Else - Actions
      Else - Actions
    -------- ------------------------------------------------------------------ --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------ --------
    Custom script: call RemoveLocation (udg_SAtargetlocation)
Silencers Wrath
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Silencer's Wrath
  Actions
    -------- ------------------------------------------------------------------ --------
    -------- Basic Settings --------
    -------- ------------------------------------------------------------------ --------
    Set VariableSet GScaster = (Triggering unit)
    Set VariableSet GSplayer = (Owner of GScaster)
    Set VariableSet GStargetlocation = (Position of GScaster)
    Unit - Create 1.Dummy for GSplayer at GStargetlocation facing Default building facing degrees
    Unit - Add a 1.50 second Generic expiration timer to GSdummy
    Set VariableSet GSdummy = (Last created unit)
    Unit - Add Global Silence Dummy (Dummy) to GSdummy
    Unit - Order GSdummy to Neutral Dark Ranger - Silence.GStargetlocation
    -------- ------------------------------------------------------------------ --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------ --------
    Custom script: call RemoveLocation (udg_GStargetlocation)
Suns Blessing
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Sun's Blessing
  Actions
    Set VariableSet UnitVarCaster12 = (Triggering unit)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Random integer number between 1 and 100) Less than or equal to 50
      Then - Actions
        Unit - Set life of UnitVarCaster12 to 100%
        Unit - Make UnitVarCaster12 Invulnerable
        Special Effect - Create a special effect attached to the origin (attachpoint) of UnitVarCaster12 using Abilities\Spells\Human\DivineShield\DivineShieldTarget.mdl
        Set VariableSet Sfx[12] = (Last created special effect)
        Special Effect - Create a special effect attached to the origin (attachpoint) of UnitVarCaster12 using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
        Special Effect - Destroy (Last created special effect)
      Else - Actions
    Unit - Set life of UnitVarCaster12 to ((Life of UnitVarCaster12) + 310.00)
    Unit - Remove Negative buffs from UnitVarCaster12
    Set VariableSet TempLoc49 = (Position of UnitVarCaster12)
    Set VariableSet GroupVar13 = (Units within 400.00 of TempLoc49 matching ((((Owner of (Matching unit)) is an ally of (Owner of UnitVarCaster12).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
    Unit Group - Pick every unit in GroupVar13 and do (Actions)
      Loop - Actions
        Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + 90.00)
        Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Spells\Other\Transmute\GoldBottleMissile.mdl
        Special Effect - Destroy (Last created special effect)
    Custom script: call RemoveLocation (udg_TempLoc49)
    Custom script: call DestroyGroup (udg_GroupVar13)
    Wait 7.00 game-time seconds
    Unit - Make UnitVarCaster12 Vulnerable
    Special Effect - Destroy Sfx[12]
I like this spell :D
It can fuck up with some angles...don't know how to fix it D:
Divine Strike
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Divine Strike
  Actions
    Set VariableSet UnitVarCaster8 = (Triggering unit)
    Animation - Play UnitVarCaster8's stand, victory (animationname) animation
    Wait 0.10 seconds
    Unit - Pause UnitVarCaster8
    Animation - Change UnitVarCaster8's animation speed to 0.00% of its original speed
    For each (Integer A) from 1 to 6, do (Actions)
      Loop - Actions
        Wait 0.15 game-time seconds
        Set VariableSet TempLoc36 = (Position of UnitVarCaster8)
        Unit - Make UnitVarCaster8 face ((Facing of UnitVarCaster8) - 180.00) over 0.00 seconds
        Special Effect - Create a special effect attached to the foot (attachpoint) of UnitVarCaster8 using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect attached to the weapon (attachpoint) of UnitVarCaster8 using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect attached to the weapon (attachpoint) of UnitVarCaster8 using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
        Special Effect - Destroy (Last created special effect)
        Unit - Create 1.Dummy for (Owner of UnitVarCaster8) at TempLoc36 facing Default building facing degrees
        Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
        Unit - Add DivineStrike (dummy) to (Last created unit)
        Unit - Set level of DivineStrike (dummy) for (Last created unit) to (Level of Mana Tap for UnitVarCaster8)
        Set VariableSet AngleVar04 = ((Facing of UnitVarCaster8) + 180.00)
        Set VariableSet TempLoc37 = (TempLoc36 offset by 15.00 towards AngleVar04 degrees.)
        Unit - Order (Last created unit) to Orc Tauren Chieftain - Shockwave.TempLoc37
        Custom script: call RemoveLocation (udg_TempLoc36)
        Custom script: call RemoveLocation (udg_TempLoc37)
    Wait 0.35 seconds
    Unit - Unpause UnitVarCaster8
    Animation - Reset UnitVarCaster8's animation
    Animation - Change UnitVarCaster8's animation speed to 100.00% of its original speed
Crystalization is combination of DPI (Damage Per Interval) with throwing fragments.
Crystalization Loop trigger cause damage per second
Crystalization Fragments Loop loop actions for fragments
Crystalization Setings
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    Crystalization Equal to (Ability being cast)
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        C_Skip Equal to 0
      Then - Actions
        Trigger - Turn on Crystalyzation_Loop <gen>
      Else - Actions
    Set VariableSet C_Skip = (C_Skip + 1)
    Set VariableSet C_Times = (C_Times + 1)
    Set VariableSet C_Off[C_Times] = True
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet C_Hero[C_Times] = (Casting unit)
    Set VariableSet C_Level[C_Times] = (Level of Crystalization for C_Hero[C_Times])
    Set VariableSet C_Target[C_Times] = (Target unit of ability being cast)
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Lets pause target. We dont want it to attack and cast spells :P --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Unit - Pause C_Target[C_Times]
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Animatios is 0% because we need target to do not play stand animation, but freeze :) --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Animation - Change C_Target[C_Times]'s animation speed to 0.00% of its original speed
    Set VariableSet C_Duration[C_Times] = (1.50 + (0.50 x (Real(C_Level[C_Times]))))
    Set VariableSet C_Dmg[C_Times] = (20.00 + (10.00 x (Real(C_Level[C_Times]))))
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Below we are set number of fragments which will throw aroun after unit dies by effect of spell --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet C_Spawn[C_Times] = (3 + (2 x C_Level[C_Times]))
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Lets calculate angle what clusters will have when they are spawn --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet C_Angle[C_Times] = (360.00 / (Real(C_Spawn[C_Times])))
    Set VariableSet C_Interval[C_Times] = 0.50
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Lets set interval check to 0.5 like interval, because spell start deal dmg when casted and not after 0.5 seconds --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet C_IntervaCheck[C_Times] = 0.50
    Set VariableSet C_Fade[C_Times] = 0.00
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- That is no Points here Dont need to Remove any location ^^ --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
Crystalyzation Loop
  Events
    Time - Every 0.02 seconds of game time
  Conditions
  Actions
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Eny C_Times become C at this loop --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    For each (Integer C) from 1 to C_Times, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            C_Off[C] Equal to True
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                C_Duration[C] Less than or equal to 0.00
              Then - Actions
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- From Object editor spell duration is 3600, so we will remove buff menualy when duration will be 0 --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Unit - Remove Entangling Roots buff from C_Target[C]
                Animation - Change C_Target[C]'s animation speed to 100.00% of its original speed
                Set VariableSet C_Fade[C] = 0.00
                Animation - Change C_Target[C]'s vertex coloring to (100%, 100%, 100%) with C_Fade[C]% transparency
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- Do not forget to unpause ^^ --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Unit - Unpause C_Target[C]
                Set VariableSet C_Skip = (C_Skip - 1)
                Set VariableSet C_Off[C] = False
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    C_Skip Equal to 0
                  Then - Actions
                    Set VariableSet C_Times = 0
                    Trigger - Turn off (This trigger)
                  Else - Actions
              Else - Actions
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- Duration is descreased by loop time --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Set VariableSet C_Duration[C] = (C_Duration[C] - 0.02)
                Set VariableSet C_Fade[C] = (C_Fade[C] + 0.50)
                Animation - Change C_Target[C]'s vertex coloring to (100%, 100%, 100%) with C_Fade[C]% transparency
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- We have set Damage interval to 0.5, se every 0.5 seconds target will take damage. So we also cheking when 0.5 seconds elapsed to deal dmg --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    C_IntervaCheck[C] Less than C_Interval[C]
                  Then - Actions
                    Set VariableSet C_IntervaCheck[C] = (C_IntervaCheck[C] + 0.02)
                  Else - Actions
                    Set VariableSet C_IntervaCheck[C] = 0.00
                    Unit - Cause C_Hero[C] to damage C_Target[C], dealing C_Dmg[C] damage of attack type Spells and damage type Cold
                    Special Effect - Create a special effect attached to the chest (attachpoint) of C_Target[C] using Abilities\Weapons\LichMissile\LichMissile.mdl
                    Special Effect - Destroy (Last created special effect)
            -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
            -------- If target have no buff (someone dispell the spell ^^) duration will set to 0. But if target dies when duration is not 0, crystall will explode and throw clusters! --------
            -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Or - Any (Conditions) are true
                  Conditions
                    (C_Target[C] has buff Entangling Roots) Equal to False
                    (C_Target[C] is dead) Equal to True
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (C_Target[C] is dead) Equal to True
                  Then - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        CM_Skip Equal to 0
                      Then - Actions
                        Trigger - Turn on Crystalization_Fragments_Loop <gen>
                      Else - Actions
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- We set point of target here and not at start, cuz if someone knockbach enemy and it will die by effect of spell clusters will spawn at point where enemy was first --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Set VariableSet CM_Point[0] = (Position of C_Target[C])
                    Special Effect - Create a special effect attached to the origin (attachpoint) of C_Target[C] using Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl
                    Special Effect - Destroy (Last created special effect)
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- Here we loop some actions, us so much fragments will be thrown, to set up and spawn them. Fragments will move, impact and deal dmg at uther trigger. --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    For each (Integer A) from 1 to C_Spawn[C], do (Actions)
                      Loop - Actions
                        Set VariableSet CM_Skip = (CM_Skip + 1)
                        Set VariableSet CM_Times = (CM_Times + 1)
                        Set VariableSet CM_Off[CM_Times] = True
                        Set VariableSet CM_Hero[CM_Times] = C_Hero[C]
                        Set VariableSet CM_Point[0] = (Position of C_Target[C])
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        -------- Angle of fragments is a bit randomly. It is for more or less chance to someone got damaged --------
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        Set VariableSet CM_Angle[CM_Times] = ((C_Angle[C] x (Real((Integer A)))) + (Random real number between -30.00 and 30.00))
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        -------- Distance is randomed too. Not all fragments throwed at same distance. --------
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        Set VariableSet CM_Distance[CM_Times] = (Random real number between 200.00 and 350.00)
                        Set VariableSet CM_Dmg[CM_Times] = (30.00 + (15.00 x (Real(C_Level[C]))))
                        Set VariableSet CM_Speed[CM_Times] = 10.00
                        Unit - Create 1.Dummy for (Owner of C_Hero[C]) at CM_Point[0] facing CM_Angle[CM_Times] degrees
                        Set VariableSet C_Missile[CM_Times] = (Last created unit)
                        Animation - Change C_Missile[CM_Times]'s size to (80.00%, 80.00%, 80.00%) of its original size
                        Animation - Change C_Missile[CM_Times] flying height to 50.00 at 0.00
                        Special Effect - Create a special effect attached to the chest (attachpoint) of C_Missile[CM_Times] using Abilities\Weapons\LichMissile\LichMissile.mdl
                        Set VariableSet CM_Effect[CM_Times] = (Last created special effect)
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- Remove point where fragments have been spawned to avoid leaks :) --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Custom script: call RemoveLocation ( udg_CM_Point[0] )
                  Else - Actions
                Set VariableSet C_Duration[C] = 0.00
              Else - Actions
          Else - Actions
this trigger loop functions of clusters
Crystalization Fragments Loop
  Events
    Time - Every 0.02 seconds of game time
  Conditions
  Actions
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- CM_Times become CM --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    For each (Integer CM) from 1 to CM_Times, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            CM_Off[CM] Equal to True
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                CM_Distance[CM] Less than or equal to 0.00
              Then - Actions
                Special Effect - Destroy CM_Effect[CM]
                Unit - Kill C_Missile[CM]
                Set VariableSet CM_Skip = (CM_Skip - 1)
                Set VariableSet CM_Off[CM] = False
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    CM_Skip Equal to 0
                  Then - Actions
                    Set VariableSet CM_Times = 0
                    Trigger - Turn off (This trigger)
                  Else - Actions
              Else - Actions
                Set VariableSet CM_Point[1] = (Position of C_Missile[CM])
                Set VariableSet CM_Point[2] = (CM_Point[1] offset by CM_Speed[CM] towards CM_Angle[CM] degrees.)
                Unit - Move C_Missile[CM] instantly to CM_Point[2]
                Set VariableSet CM_Distance[CM] = (CM_Distance[CM] - CM_Speed[CM])
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- 1 fragment can hit 1 unit --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Set VariableSet CM_Group[CM] = (Random 1 units from (Units within 50.00 of CM_Point[2] matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A flying unit) Equal to False)) and (((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) is dead) Equal to False)) and (((Matching unit) belongs to an ally of (Owner of CM_Hero[CM]).) Equal to False))).))
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Number of units in CM_Group[CM]) Greater than 0
                  Then - Actions
                    Unit Group - Pick every unit in CM_Group[CM] and do (Actions)
                      Loop - Actions
                        Unit - Cause CM_Hero[CM] to damage (Picked unit), dealing CM_Dmg[CM] damage of attack type Spells and damage type Cold
                        Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Weapons\LichMissile\LichMissile.mdl
                        Special Effect - Destroy (Last created special effect)
                        Set VariableSet CM_Distance[CM] = 0.00
                  Else - Actions
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- Below leaks are cleaned :) --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Custom script: call RemoveLocation ( udg_CM_Point[1] )
                Custom script: call RemoveLocation ( udg_CM_Point[2] )
                Custom script: call DestroyGroup ( udg_CM_Group[udg_CM] )
          Else - Actions
Aqua Burst
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Aqua Burst
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Aqua_Burst_Caster = (Triggering unit)
    Set VariableSet Aqua_Burst_Location = (Target point of ability being cast)
    Set VariableSet Aqua_Burst_Ability_Level = (Level of (Ability being cast) for Aqua_Burst_Caster)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the Spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Aqua_Burst_Area_of_Effect = 175.00
    Set VariableSet Aqua_Burst_Base_Damage = 70.00
    Set VariableSet Aqua_Burst_Total_Damage = (Aqua_Burst_Base_Damage x (Real(Aqua_Burst_Ability_Level)))
    Set VariableSet Aqua_Burst_Damage_Group = (Units within Aqua_Burst_Area_of_Effect of Aqua_Burst_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of (Owner of Aqua_Burst_Caster).) Equal to True))).)
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit Group - Pick every unit in Aqua_Burst_Damage_Group and do (Actions)
      Loop - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Damaging the units from unit group and creating nice special effects --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Cause Aqua_Burst_Caster to damage (Picked unit), dealing Aqua_Burst_Total_Damage damage of attack type Spells and damage type Unknown
        Special Effect - Create a special effect attached to the origin (attachpoint) of (Picked unit) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
        Special Effect - Destroy (Last created special effect)
        -------- ------------------------------------------------------------------------------------------------- --------
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Moving the unit --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit - Pause Aqua_Burst_Caster
    Unit - Move Aqua_Burst_Caster instantly to Aqua_Burst_Location
    Unit - Unpause Aqua_Burst_Caster
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Playing a nice unit animation --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Animation - Play Aqua_Burst_Caster's birth (animationname) animation
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating nice special effect --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect attached to the origin (attachpoint) of Aqua_Burst_Caster using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
    Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Clearing Leaks --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_Aqua_Burst_Location)
    Custom script: call DestroyGroup(udg_Aqua_Burst_Damage_Group)
Thunder Rage
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Thunder Rage
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Thunder_Rage_Caster = (Triggering unit)
    Set VariableSet Thunder_Rage_Ability_Level = (Level of (Ability being cast) for Thunder_Rage_Caster)
    Set VariableSet Thunder_Rage_Location = (Target point of ability being cast)
    Set VariableSet Thunder_Rage_Owner = (Owner of Thunder_Rage_Caster)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the Spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Thunder_Rage_Area_of_Effect = 225.00
    Set VariableSet Thunder_Rage_Mini_AoE = 85.00
    Set VariableSet Thunder_Rage_Base_Mini_Damage = 25.00
    Set VariableSet Thunder_Rage_Damage_Factor = 0.20
    Set VariableSet Thunder_Rage_Base_Unit_HP = 75.00
    Set VariableSet Thunder_Rage_Total_Mini_Damage = (Thunder_Rage_Base_Mini_Damage x (Real(Thunder_Rage_Ability_Level)))
    Set VariableSet Thunder_Rage_Unit_HP = (Thunder_Rage_Base_Unit_HP x (Real(Thunder_Rage_Ability_Level)))
    Set VariableSet Thunder_Rage_Total_Damage = (Thunder_Rage_Damage_Factor x (Real(Thunder_Rage_Ability_Level)))
    Set VariableSet Thunder_Rage_Damage_Group = (Units within Thunder_Rage_Area_of_Effect of Thunder_Rage_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an enemy of Thunder_Rage_Owner.) Equal to True) and ((((Matching unit) is A Hero) Not equal to True) and ((Level of Reincarnation for (Matching unit)) Less than 1))))).)
    -------- ------------------------------------------------------------------------------------------------- --------
    For each (Integer A) from 1 to 25, do (Actions)
      Loop - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating the dummies as a ligtning effect --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Set VariableSet Thunder_Rage_Loop_Location = (Thunder_Rage_Location offset by (Random real number between 0 and 20.00) towards (Random angle) degrees.)
        Unit - Create 1.Dummy(Raging Thunder) for Thunder_Rage_Owner at Thunder_Rage_Loop_Location facing (Random angle) degrees
        Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
        Animation - Change (Last created unit) flying height to (30.00 x (Real((Integer A)))) at 0.00
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Clearing leaks --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Custom script: call RemoveLocation(udg_Thunder_Rage_Loop_Location)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Checking for units that gets instantly killed --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit Group - Pick every unit in Thunder_Rage_Damage_Group and do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Life of (Picked unit)) Less than or equal to Thunder_Rage_Unit_HP
          Then - Actions
            -------- ------------------------------------------------------------------------------------------------- --------
            -------- Instantly killing picked units --------
            -------- ------------------------------------------------------------------------------------------------- --------
            Unit - Cause Thunder_Rage_Caster to damage (Picked unit), dealing 5000.00 damage of attack type Spells and damage type Normal
            -------- ------------------------------------------------------------------------------------------------- --------
            -------- Prewenting to explode heroes, that could bug in multiplayer games --------
            -------- ------------------------------------------------------------------------------------------------- --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                ((Picked unit) is A Hero) Equal to False
              Then - Actions
                -------- ------------------------------------------------------------------------------------------------- --------
                -------- Setting locations, creating another smaller group and expolding killed units --------
                -------- ------------------------------------------------------------------------------------------------- --------
                Set VariableSet Thunder_Rage_Location2 = (Position of (Picked unit))
                Set VariableSet Thunder_Rage_Mini_Damage_Group = (Units within Thunder_Rage_Mini_AoE of Thunder_Rage_Location2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of Thunder_Rage_Owner.) Equal to True))).)
                Unit - Remove (Picked unit) from the game
                -------- ------------------------------------------------------------------------------------------------- --------
                -------- Creating nice special effect --------
                -------- ------------------------------------------------------------------------------------------------- --------
                Special Effect - Create a special effect at Thunder_Rage_Location2 using Objects\Spawnmodels\Undead\UndeadLargeDeathExplode\UndeadLargeDeathExplode.mdl
                Special Effect - Destroy (Last created special effect)
                Unit Group - Pick every unit in Thunder_Rage_Mini_Damage_Group and do (Actions)
                  Loop - Actions
                    -------- ------------------------------------------------------------------------------------------------- --------
                    -------- Damaging the smaller area, as a result of corpse explosion --------
                    -------- ------------------------------------------------------------------------------------------------- --------
                    Unit - Cause Thunder_Rage_Caster to damage (Picked unit), dealing Thunder_Rage_Total_Mini_Damage damage of attack type Spells and damage type Normal
                    -------- ------------------------------------------------------------------------------------------------- --------
                    -------- Creating nice special effect --------
                    -------- ------------------------------------------------------------------------------------------------- --------
                    Special Effect - Create a special effect attached to the origin (attachpoint) of (Picked unit) using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
                    Special Effect - Destroy (Last created special effect)
                    -------- ------------------------------------------------------------------------------------------------- --------
                -------- ------------------------------------------------------------------------------------------------- --------
                -------- Clearing leaks --------
                -------- ------------------------------------------------------------------------------------------------- --------
                Custom script: call DestroyGroup(udg_Thunder_Rage_Mini_Damage_Group)
                Custom script: call RemoveLocation(udg_Thunder_Rage_Location2)
                -------- ------------------------------------------------------------------------------------------------- --------
              Else - Actions
          Else - Actions
            -------- ------------------------------------------------------------------------------------------------- --------
            -------- Damaging units from the unit group --------
            -------- ------------------------------------------------------------------------------------------------- --------
            Unit - Cause Thunder_Rage_Caster to damage (Picked unit), dealing ((Max life of (Picked unit)) x Thunder_Rage_Total_Damage) damage of attack type Spells and damage type Unknown
            -------- ------------------------------------------------------------------------------------------------- --------
            -------- Creating nice special effect --------
            -------- ------------------------------------------------------------------------------------------------- --------
            Special Effect - Create a special effect attached to the origin (attachpoint) of (Picked unit) using Abilities\Spells\Orc\LightningShield\LightningShieldBuff.mdl
            Special Effect - Destroy (Last created special effect)
            -------- ------------------------------------------------------------------------------------------------- --------
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating nice special effect --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect at Thunder_Rage_Location using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect at Thunder_Rage_Location using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
    Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_Thunder_Rage_Location)
    Custom script: call DestroyGroup(udg_Thunder_Rage_Damage_Group)
Fire Grip
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Fire Grip
  Actions
    Set VariableSet UnitVarCaster10 = (Triggering unit)
    Set VariableSet UnitVarTarget8 = (Target unit of ability being cast)
    Trigger - Turn on Fire_Grip_Turn_On <gen>
    Wait 5.00 game-time seconds
    Trigger - Turn off Fire_Grip_Turn_On <gen>
Fire Grip Turn On
  Events
    Time - Every 0.20 seconds of game time
  Conditions
  Actions
    Unit - Cause UnitVarCaster10 to damage UnitVarTarget8, dealing 35.00 damage of attack type Spells and damage type Normal
    Special Effect - Create a special effect attached to the origin (attachpoint) of UnitVarTarget8 using Abilities\Spells\Other\Volcano\VolcanoMissile.mdl
    Special Effect - Destroy (Last created special effect)
    Floating Text - Create floating text that reads 35! above UnitVarTarget8 with Z offset 0, using font size 10, color (100.00%, 20.00%, 0.00%), and 0% transparency
    Floating Text - Change (Last created floating text): Disable permanence
    Floating Text - Set the velocity of (Last created floating text) to 64 towards 90 degrees
    Floating Text - Change the fading age of (Last created floating text) to 3.00 seconds
    Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Life of UnitVarTarget8) Less than or equal to 10
      Then - Actions
        Set VariableSet TempLoc45 = (Position of UnitVarTarget8)
        Special Effect - Create a special effect at TempLoc45 using Abilities\Spells\Other\Doom\DoomDeath.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at TempLoc45 using Abilities\Spells\Human\FlameStrike\FlameStrikeTarget.mdl
        Special Effect - Destroy (Last created special effect)
        Set VariableSet GroupVar10 = (Units within 250.00 of TempLoc45 matching ((((Owner of (Matching unit)) is an enemy of (Owner of UnitVarCaster10).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
        Unit Group - Pick every unit in GroupVar10 and do (Actions)
          Loop - Actions
            Unit - Cause UnitVarCaster10 to damage (Picked unit), dealing 180.00 damage of attack type Spells and damage type Normal
            Special Effect - Create a special effect attached to the chest (attachpoint) of UnitTarget using Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
            Special Effect - Destroy (Last created special effect)
        Custom script: call DestroyGroup (udg_GroupVar10)
        Custom script: call RemoveLocation (udg_TempLoc45)
        Trigger - Turn off Fire_Grip_Turn_On <gen>
        Skip remaining actions
      Else - Actions
Sun Wrath
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Sun's Wrath
  Actions
    Set VariableSet D_Start = (D_Start + 1)
    Set VariableSet D_Point[D_Start] = (Target point of ability being cast)
    Set VariableSet D_Unit[D_Start] = (Triggering unit)
    Special Effect - Create a special effect at D_Point[D_Start] using Abilities\Spells\Orc\LiquidFire\Liquidfire.mdl
    Set VariableSet D_SpecialEffect[D_Start] = (Last created special effect)
    Wait 1.00 seconds
    Set VariableSet D_End = (D_End + 1)
    Special Effect - Destroy D_SpecialEffect[D_End]
    Special Effect - Create a special effect at D_Point[D_End] using Abilities\Spells\Other\Doom\DoomDeath.mdl
    Special Effect - Destroy (Last created special effect)
    Custom script: set bj_wantDestroyGroup=true
    Unit Group - Pick every unit in (Units within 200.00 of D_Point[D_End] matching (((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is A flying unit) Not equal to True))) and (((Matching unit) belongs to an enemy of (Owner of D_Unit[D_End]).) Equal to True)).) and do (Actions)
      Loop - Actions
        Unit - Cause D_Unit[D_Start] to damage (Picked unit), dealing 140.00 damage of attack type Spells and damage type Normal
    Custom script: call RemoveLocation(udg_D_Point[udg_D_End])
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        D_End Equal to D_Start
      Then - Actions
        Set VariableSet D_End = 0
        Set VariableSet D_Start = 0
      Else - Actions
PyroSphere Start
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Pyro Sphere
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        PS_Times Equal to 0
      Then - Actions
        Trigger - Turn on PyroSphere_Loop <gen>
      Else - Actions
    Set VariableSet PS_Skip = (PS_Skip + 1)
    Set VariableSet PS_Times = (PS_Times + 1)
    Set VariableSet PS_Caster[PS_Times] = (Triggering unit)
    Set VariableSet PS_Point[0] = (Target point of ability being cast)
    Set VariableSet PS_Point[1] = (Position of PS_Caster[PS_Times])
    Set VariableSet PS_Distance[PS_Times] = (Distance between PS_Point[0] and PS_Point[1])
    Set VariableSet PS_Angle[PS_Times] = (Angle from PS_Point[1] to PS_Point[0])
    Set VariableSet PS_Off[PS_Times] = False
    Unit - Create 1.PS Dummy for (Owner of PS_Caster[PS_Times]) at PS_Point[1] facing PS_Angle[PS_Times] degrees
    Set VariableSet PS_Dummy[PS_Times] = (Last created unit)
    Custom script: call RemoveLocation(udg_PS_Point[0])
    Custom script: call RemoveLocation(udg_PS_Point[1])
PyroSphere Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer PS) from 1 to PS_Times, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            PS_Off[PS] Equal to False
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                PS_Distance[PS] Less than or equal to 0.00
              Then - Actions
                Set VariableSet PS_Skip = (PS_Skip - 1)
                Set VariableSet PS_Off[PS] = True
                Set VariableSet PS_Point[0] = (Position of PS_Dummy[PS])
                Custom script: set bj_wantDestroyGroup=true
                Unit Group - Pick every unit in (Units within 175.00 of PS_Point[0] matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of PS_Dummy[PS]).) Equal to True)) and ((((Matching unit) is A structure) Not equal to True) and (((Picked unit) is Magic Immune) Not equal to True))).) and do (Actions)
                  Loop - Actions
                    Unit - Cause PS_Caster[PS] to damage (Picked unit), dealing 70.00 damage of attack type Spells and damage type Normal
                Unit - Create 1 PS Dummy Caster for (Owner of PS_Caster[PS]) at PS_Point[0] facing PS_Point[0]
                Set VariableSet PS_Dummy[0] = (Last created unit)
                Unit - Add Silence (Pyro Sphere) to PS_Dummy[0]
                Unit - Order PS_Dummy[0] to Neutral Dark Ranger - Silence.PS_Point[0]
                Unit - Make PS_Dummy[0] Explode on death
                Unit - Add a 0.50 second Generic expiration timer to PS_Dummy[0]
                Special Effect - Create a special effect at PS_Point[0] using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
                Special Effect - Destroy (Last created special effect)
                Unit - Remove PS_Dummy[PS] from the game
                Custom script: call RemoveLocation(udg_PS_Point[0])
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    PS_Skip Less than or equal to 0
                  Then - Actions
                    Trigger - Turn off (This trigger)
                    Set VariableSet PS_Times = 0
                  Else - Actions
              Else - Actions
                Set VariableSet PS_Point[0] = (Position of PS_Dummy[PS])
                Set VariableSet PS_Point[1] = (PS_Point[0] offset by 20.00 towards PS_Angle[PS] degrees.)
                Custom script: set bj_wantDestroyGroup=true
                Unit Group - Pick every unit in (Units within 50.00 of PS_Point[0] matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of PS_Dummy[PS]).) Equal to True)) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is Magic Immune) Not equal to True))).) and do (Actions)
                  Loop - Actions
                    Unit - Cause PS_Caster[PS] to damage (Picked unit), dealing 10.00 damage of attack type Spells and damage type Normal
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Terrain pathing at PS_Point[1] of type Walkability is off) Equal to True
                  Then - Actions
                    Set VariableSet PS_Distance[PS] = 0.00
                  Else - Actions
                    Unit - Move PS_Dummy[PS] instantly to PS_Point[1], facing PS_Angle[PS] degrees
                Set VariableSet PS_Distance[PS] = (PS_Distance[PS] - 20.00)
                Custom script: call RemoveLocation(udg_PS_Point[0])
                Custom script: call RemoveLocation(udg_PS_Point[1])
          Else - Actions
Arcane Burn
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Arcane Burn
  Actions
    Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing 150.00 damage of attack type Spells and damage type Magic
    Unit - Remove Positive buffs considered Magic or physical from (Target unit of ability being cast) (Include expiration timers, Include auras)
DShield
  Events
    Unit - A unit Begins casting an ability
  Conditions
    (Ability being cast) Equal to Defenders Shield
  Actions
    Unit - Remove Negative buffs from (Triggering unit)
DShield2
  Events
    Unit - A unit Begins casting an ability
  Conditions
    (Ability being cast) Equal to Defenders Shield (Silvermoon Elite)
  Actions
    Unit - Remove Negative buffs from (Triggering unit)
MR
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Mindless Rage
  Actions
    Set VariableSet Changed_Unit = (Target unit of ability being cast)
    Set VariableSet Owner_Of_Change = (Owner of Changed_Unit)
    Unit - Change ownership of Changed_Unit to (Owner of (Casting unit)) and Change color
    Wait 15.00 seconds
    Unit - Change ownership of Changed_Unit to Owner_Of_Change and Change color
    Set VariableSet Changed_Unit = No unit
You can edit the below items according to your preference.

====[[Legend]]====
Position[Array] - Sets the position where to initially create the dummies or the glaives. (Default: 30,130,270)
BladeSpeed - Identifies the speed of the glaive spin. (Default: 30)
Offset - This indicates how far the glaives are within the caster. (Default: 100)
BladeDamage[Array] - Sets the damage dealt by each glaive on enemy contact. (Default: 60,90,120,140)
BladeDuration[Array] - Sets the duration of the ability. (Default: 5)

Just remember to give credits when used on map...
s000
  Events
    Unit - A unit Learns a skill
  Conditions
    (Learned Hero Skill) Equal to Elven Blades
  Actions
    Set VariableSet Position[1] = 270.00
    Set VariableSet Position[2] = 30.00
    Set VariableSet Position[3] = 130.00
    Set VariableSet BladeSpeed = 30.00
    Set VariableSet Offset = 100.00
    Set VariableSet BladeDamage[1] = 60.00
    Set VariableSet BladeDamage[2] = 90.00
    Set VariableSet BladeDamage[3] = 120.00
    Set VariableSet BladeDuration[1] = 5.00
    Set VariableSet BladeDuration[2] = 5.00
    Set VariableSet BladeDuration[3] = 5.00
    Trigger - Turn on s001 <gen>
    Trigger - Turn off (This trigger)
Note: You must have a dummy unit to proceed with the skill... (its your call in choosing the dummy model, feel free to change it.)
s001
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Elven Blades
  Actions
    Set VariableSet CasterUnit = (Triggering unit)
    Unit - Remove Blade[1] from the game
    Unit - Remove Blade[2] from the game
    Unit - Remove Blade[3] from the game
    Unit - Create 1.Glaive for (Owner of CasterUnit) at ((Position of CasterUnit) offset by Offset towards Position[1] degrees.) facing Default building facing degrees
    Set VariableSet Blade[1] = (Last created unit)
    Unit - Create 1.Glaive for (Owner of CasterUnit) at ((Position of CasterUnit) offset by Offset towards Position[2] degrees.) facing Default building facing degrees
    Set VariableSet Blade[2] = (Last created unit)
    Unit - Create 1.Glaive for (Owner of CasterUnit) at ((Position of CasterUnit) offset by Offset towards Position[3] degrees.) facing Default building facing degrees
    Set VariableSet Blade[3] = (Last created unit)
    Countdown Timer - Start SkillDuration as a One-shot timer that will expire in BladeDuration[(Level of (Ability being cast) for CasterUnit)] seconds
    Trigger - Turn on s002 <gen>
    Trigger - Turn on s003 <gen>
    Trigger - Turn on s004 <gen>
s002
  Events
    Time - Every 0.05 seconds of game time
  Conditions
  Actions
    Set VariableSet FullLoop = 359.00
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Position[1] Greater than FullLoop
      Then - Actions
        Set VariableSet Position[1] = 0.00
        Set VariableSet TempPoint[1] = ((Position of CasterUnit) offset by Offset towards Position[1] degrees.)
        Unit - Move Blade[1] instantly to TempPoint[1]
        Custom script: call RemoveLocation (udg_TempPoint[1])
      Else - Actions
        Set VariableSet Position[1] = (Position[1] + BladeSpeed)
        Set VariableSet TempPoint[1] = ((Position of CasterUnit) offset by Offset towards Position[1] degrees.)
        Unit - Move Blade[1] instantly to TempPoint[1]
        Custom script: call RemoveLocation (udg_TempPoint[1])
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Position[2] Greater than FullLoop
      Then - Actions
        Set VariableSet Position[2] = 0.00
        Set VariableSet TempPoint[2] = ((Position of CasterUnit) offset by Offset towards Position[2] degrees.)
        Unit - Move Blade[2] instantly to TempPoint[2]
        Custom script: call RemoveLocation (udg_TempPoint[2])
      Else - Actions
        Set VariableSet Position[2] = (Position[2] + BladeSpeed)
        Set VariableSet TempPoint[2] = ((Position of CasterUnit) offset by Offset towards Position[2] degrees.)
        Unit - Move Blade[2] instantly to TempPoint[2]
        Custom script: call RemoveLocation (udg_TempPoint[2])
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Position[3] Greater than FullLoop
      Then - Actions
        Set VariableSet Position[3] = 0.00
        Set VariableSet TempPoint[3] = ((Position of CasterUnit) offset by Offset towards Position[3] degrees.)
        Unit - Move Blade[3] instantly to TempPoint[3]
        Custom script: call RemoveLocation (udg_TempPoint[3])
      Else - Actions
        Set VariableSet Position[3] = (Position[3] + BladeSpeed)
        Set VariableSet TempPoint[3] = ((Position of CasterUnit) offset by Offset towards Position[3] degrees.)
        Unit - Move Blade[3] instantly to TempPoint[3]
        Custom script: call RemoveLocation (udg_TempPoint[3])
s003
  Events
    Time - Every 0.25 seconds of game time
  Conditions
  Actions
    Unit Group - Pick every unit in (Units within 100.00 of (Position of Blade[1]) matching ((Owner of (Matching unit)) Not equal to (Owner of CasterUnit)).) and do (Actions)
      Loop - Actions
        Unit - Cause CasterUnit to damage (Picked unit), dealing BladeDamage[(Level of Elven Blades for CasterUnit)] damage of attack type Spells and damage type Normal
    Unit Group - Pick every unit in (Units within 100.00 of (Position of Blade[2]) matching ((Owner of (Matching unit)) Not equal to (Owner of CasterUnit)).) and do (Actions)
      Loop - Actions
        Unit - Cause CasterUnit to damage (Picked unit), dealing BladeDamage[(Level of Elven Blades for CasterUnit)] damage of attack type Spells and damage type Normal
    Unit Group - Pick every unit in (Units within 100.00 of (Position of Blade[3]) matching ((Owner of (Matching unit)) Not equal to (Owner of CasterUnit)).) and do (Actions)
      Loop - Actions
        Unit - Cause CasterUnit to damage (Picked unit), dealing BladeDamage[(Level of Elven Blades for CasterUnit)] damage of attack type Spells and damage type Normal
s004
  Events
    Time - SkillDuration expires
  Conditions
  Actions
    Unit - Remove Blade[1] from the game
    Unit - Remove Blade[2] from the game
    Unit - Remove Blade[3] from the game
    Trigger - Turn off s002 <gen>
    Trigger - Turn off s003 <gen>
    Trigger - Turn off (This trigger)
SplitShot Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Split Shot
  Actions
    -------- ----------------------------------------------------------------------------------- --------
    -------- Starting the loop for the spell. The level of the ability determines the number of arrows --------
    -------- ----------------------------------------------------------------------------------- --------
    For each (Integer Loop_Int) from 1 to ((Level of Split Shot for (Triggering unit)) x 3), do (Actions)
      Loop - Actions
        Set VariableSet CastPos = (Position of (Triggering unit))
        -------- ----------------------------------------------------------------------------------- --------
        -------- All the configurations needed before 1 arrow is created --------
        -------- ----------------------------------------------------------------------------------- --------
        Set VariableSet ArrowDamage = 100.00
        Set VariableSet ArrowRange = 600.00
        Set VariableSet ArrowSpeed = (ArrowRange x 0.03)
        Set VariableSet ArrowLifeTime = 1.50
        Set VariableSet AbilityLevel = (Level of (Ability being cast) for (Triggering unit))
        Set VariableSet ArrowAngle = ((Facing of (Triggering unit)) + (Random real number between 1.00 and 30.00))
        Set VariableSet ArrowFullDamage = (ArrowDamage x (Real(AbilityLevel)))
        -------- ----------------------------------------------------------------------------------- --------
        -------- Creating an arrow --------
        -------- ----------------------------------------------------------------------------------- --------
        Unit - Create 1 Arrow for (Owner of (Triggering unit)) at CastPos facing (Target point of ability being cast)
        Set VariableSet ArrowLoop = (Last created unit)
        -------- ----------------------------------------------------------------------------------- --------
        -------- All the settings are saved for the UNIT into our hashtable --------
        -------- ----------------------------------------------------------------------------------- --------
        Hashtable - Save ArrowAngle as (Key angle.) of (Key (Last created unit).) in SpellHashtable.
        Hashtable - Save ArrowFullDamage as (Key damage.) of (Key (Last created unit).) in SpellHashtable.
        Hashtable - Save ArrowRange as (Key range.) of (Key (Last created unit).) in SpellHashtable.
        Hashtable - Save ArrowSpeed as (Key speed.) of (Key (Last created unit).) in SpellHashtable.
        Hashtable - Save ArrowLifeTime as (Key time.) of (Key (Last created unit).) in SpellHashtable.
        -------- ----------------------------------------------------------------------------------- --------
        -------- Finally we are read to run the loop trigger. --------
        -------- ----------------------------------------------------------------------------------- --------
        Unit Group - Add ArrowLoop to ArrowGroup
        Custom script: call RemoveLocation (udg_CastPos)
    Trigger - Turn on SplitShot_Loop <gen>
Hashtable
  Events
    Map initialization
  Conditions
  Actions
    -------- ----------------------------------------------------------------------------------- --------
    -------- Creating the hashtables used for the spell --------
    -------- Note: without this trigger the spell will never work. --------
    -------- ----------------------------------------------------------------------------------- --------
    Hashtable - Create a hashtable
    Set VariableSet SpellHashtable = (Last created hashtable)
SplitShot Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Number of units in ArrowGroup) Equal to 0
      Then - Actions
        Trigger - Turn off (This trigger)
      Else - Actions
    Unit Group - Pick every unit in ArrowGroup and do (Actions)
      Loop - Actions
        Set VariableSet ArrowAngle = (Load (Key angle.) of (Key (Picked unit).) from SpellHashtable.)
        Set VariableSet ArrowRange = (Load (Key range.) of (Key (Picked unit).) from SpellHashtable.)
        Set VariableSet ArrowSpeed = (Load (Key speed.) of (Key (Picked unit).) from SpellHashtable.)
        Set VariableSet ArrowFullDamage = (Load (Key damage.) of (Key (Picked unit).) from SpellHashtable.)
        Set VariableSet ArrowLifeTime = (Load (Key time.) of (Key (Picked unit).) from SpellHashtable.)
        Set VariableSet ArrowLoop = (Picked unit)
        Set VariableSet ArrowPos = (Position of ArrowLoop)
        Set VariableSet ArrowMovePos = (ArrowPos offset by ArrowSpeed towards ArrowAngle degrees.)
        Set VariableSet Targets = (Random 1 units from (Units within 50.00 of ArrowMovePos.))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            ArrowLifeTime Greater than 0.00
          Then - Actions
            Hashtable - Save (ArrowLifeTime - 0.03) as (Key time.) of (Key (Picked unit).) in SpellHashtable.
            Unit - Move ArrowLoop instantly to ArrowMovePos, facing ArrowAngle degrees
            Unit Group - Pick every unit in Targets and do (Actions)
              Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    ((Picked unit) is A structure) Equal to False
                    ((Picked unit) belongs to an ally of (Owner of ArrowLoop).) Equal to False
                    ((Picked unit) is alive) Equal to True
                  Then - Actions
                    Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Spells\Other\FrostArrows\NagaColdArrowMissile.mdl
                    Special Effect - Destroy (Last created special effect)
                    Unit - Cause ArrowLoop to damage (Picked unit), dealing ArrowFullDamage damage of attack type Pierce and damage type Normal
                    Unit - Remove ArrowLoop from the game
                  Else - Actions
          Else - Actions
            Hashtable - Clear all child hashtables of child (Key (Picked unit).) in SpellHashtable.
            Unit - Remove ArrowLoop from the game
            Special Effect - Create a special effect at ArrowMovePos using Abilities\Spells\Other\FrostArrows\NagaColdArrowMissile.mdl
            Special Effect - Destroy (Last created special effect)
        Custom script: call DestroyGroup (udg_Targets)
        Custom script: call RemoveLocation (udg_ArrowMovePos)
        Custom script: call RemoveLocation (udg_ArrowPos)
This spell is very special because idea of spell is from funny cartoon works :D
Did you remember at cartoons one character hold an uther from leg or hand or something
and smashing him at ground from front and back?
If yes, you meaby will laught when you see the spell :D

This spell is channeling
Telekinetic Seizure Setings
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    Telekinetic Seizure Equal to (Ability being cast)
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        TS_Skip Equal to 0
      Then - Actions
        Trigger - Turn on Telekinetic_Seizure_Loop <gen>
      Else - Actions
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Skip = (TS_Skip + 1)
    Set VariableSet TS_Times = (TS_Times + 1)
    Set VariableSet TS_Off[TS_Times] = True
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Lets set some variables at start about smash times, damage, range, distance, who smashing whom etc. :D --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Hero[TS_Times] = (Casting unit)
    Set VariableSet TS_Target[TS_Times] = (Target unit of ability being cast)
    Animation - Change TS_Target[TS_Times]'s animation speed to 0.00% of its original speed
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- If we will add storm crow ability to unit, we will be able to change it height :) --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Unit - Add Storm Crow Form to TS_Target[TS_Times]
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Lets pause the target. If we will not, player who own targeted unit will see Storm Crow Form ability at unit comand panel. --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Unit - Pause TS_Target[TS_Times]
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Turn off colision. Or unit will not fly up cliff levels and trees and uther units :P --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Unit - Turn collision for TS_Target[TS_Times] Off.
    Set VariableSet TS_Point[0] = (Position of TS_Hero[TS_Times])
    Set VariableSet TS_Point[1] = (Position of TS_Target[TS_Times])
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- We will need radius variable, because hero cant from unit at greater or leaser distance per smash. --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Radius[TS_Times] = (Distance between TS_Point[0] and TS_Point[1])
    Set VariableSet TS_Angle[TS_Times] = (Angle from TS_Point[1] to TS_Point[0])
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- This spell is using parabola to make target fly realistic at air. Distance and max distance will be needed --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Distance[TS_Times] = (TS_Radius[TS_Times] x 2.00)
    Set VariableSet TS_MaxDistance[TS_Times] = TS_Distance[TS_Times]
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Speed variable is percentage value of max distance, because we need target to land at same period of time from different distances. Height will show how much hight unit will be thrown at air --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Speed[TS_Times] = (TS_MaxDistance[TS_Times] x 0.04)
    Set VariableSet TS_Height[TS_Times] = TS_Radius[TS_Times]
    Set VariableSet TS_Damage[TS_Times] = (40.00 + (10.00 x (Real((Level of Telekinetic Seizure for TS_Hero[TS_Times])))))
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Smashes increased with level. Did that is not cool? :P --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Set VariableSet TS_Slams[TS_Times] = (1 + (Level of Telekinetic Seizure for TS_Hero[TS_Times]))
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Some special effect with same models to show who controll target. Like that enemy's friend know whom he must to stun to release his ally. Nothing at spells are perfect XD --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect attached to the origin (attachpoint) of TS_Hero[TS_Times] using Abilities\Spells\Other\Charm\CharmTarget.mdl
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect attached to the origin (attachpoint) of TS_Target[TS_Times] using Abilities\Spells\Other\Charm\CharmTarget.mdl
    Special Effect - Destroy (Last created special effect)
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- This is my 2nd favorite idea of spell! (1st idea was this spell :P) I make Hero to look the target. It is more realistic, because to controll unit he must to look on it. Like that telekinez works! --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Animation - Lock TS_Hero[TS_Times]'s Head to face TS_Target[TS_Times], offset by (0, 0, (Current flying height of TS_Target[TS_Times]))
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    -------- Remove points to do not leak memory. --------
    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation ( udg_TS_Point[0] )
    Custom script: call RemoveLocation ( udg_TS_Point[1] )
Telekinetic Seizure Loop
  Events
    Time - Every 0.02 seconds of game time
  Conditions
  Actions
    For each (Integer TS) from 1 to TS_Times, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            TS_Off[TS] Equal to True
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                TS_Slams[TS] Greater than 0
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    TS_Distance[TS] Less than or equal to 0.00
                  Then - Actions
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- When enemy reach the ground, he will be damaged with his allys near him. Smashes descreased by 1 because smash ends --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Set VariableSet TS_Slams[TS] = (TS_Slams[TS] - 1)
                    Set VariableSet TS_Point[4] = (Position of TS_Target[TS])
                    Set VariableSet TS_Group[TS] = (Units within 200.00 of TS_Point[4] matching (((((Matching unit) is A flying unit) Equal to False) and (((Matching unit) is dead) Equal to False)) and (((Matching unit) belongs to an ally of (Owner of TS_Hero[TS]).) Equal to False)).)
                    Unit Group - Pick every unit in TS_Group[TS] and do (Actions)
                      Loop - Actions
                        Unit - Cause TS_Hero[TS] to damage (Picked unit), dealing TS_Damage[TS] damage of attack type Hero and damage type Force
                    Special Effect - Create a special effect at TS_Point[4] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
                    Special Effect - Destroy (Last created special effect)
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- If hero who cast ability will stop casting it for some reason, he will stop slaming enemy. --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        Or - Any (Conditions) are true
                          Conditions
                            (TS_Target[TS] is dead) Equal to True
                            (TS_Target[TS] has buff Aerial Shackles) Equal to False
                      Then - Actions
                        Set VariableSet TS_Slams[TS] = 0
                        Animation - Change TS_Target[TS_Times]'s animation speed to 100.00% of its original speed
                      Else - Actions
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        -------- Actions below calculate next point where unit will be thrown. --------
                        -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                        Set VariableSet TS_Point[5] = (Position of TS_Hero[TS])
                        Set VariableSet TS_Angle[TS] = (Angle from TS_Point[4] to TS_Point[5])
                        Set VariableSet TS_Angle[TS] = (TS_Angle[TS] + (Random real number between -30.00 and 30.00))
                        Set VariableSet TS_Point[6] = (TS_Point[5] offset by TS_Radius[TS] towards TS_Angle[TS] degrees.)
                        Set VariableSet TS_Angle[TS] = (Angle from TS_Point[4] to TS_Point[6])
                        Set VariableSet TS_Distance[TS] = (Distance between TS_Point[4] and TS_Point[6])
                        Set VariableSet TS_MaxDistance[TS] = TS_Distance[TS]
                        Custom script: call RemoveLocation ( udg_TS_Point[5] )
                        Custom script: call RemoveLocation ( udg_TS_Point[6] )
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- Remove points and groups to do not cause leaks --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Custom script: call RemoveLocation ( udg_TS_Point[4] )
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- This group have index. So script will have [udg_indexname] after group name. --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Custom script: call DestroyGroup ( udg_TS_Group[udg_TS] )
                  Else - Actions
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- If unit is not "traveled" distance he shuld, and he is still at air, he will move a bit forward to point he must smash on ground >:) --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Set VariableSet TS_Distance[TS] = (TS_Distance[TS] - TS_Speed[TS])
                    Set VariableSet TS_Point[2] = (Position of TS_Target[TS])
                    Set VariableSet TS_Point[3] = (TS_Point[2] offset by TS_Speed[TS] towards TS_Angle[TS] degrees.)
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- Condition below check if unit is at playable map area. If colusion of unit is off, it can go even out of map. It will cause to trubles with how to get him out or meaby crash of game :O --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        ((Playable map area) contains TS_Point[3]) Equal to False
                      Then - Actions
                      Else - Actions
                        Unit - Move TS_Target[TS] instantly to TS_Point[3]
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- This parabola variable calculate how high unit must be at air. So better copy this action of parabola calculation and paste it to your map and replace variables with yours or write it with custom script :P --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Set VariableSet TS_Parabola[TS] = (((4.00 x TS_Height[TS]) / TS_MaxDistance[TS]) x ((TS_MaxDistance[TS] - TS_Distance[TS]) x (TS_Distance[TS] / TS_MaxDistance[TS])))
                    Animation - Change TS_Target[TS] flying height to TS_Parabola[TS] at 0.00
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    -------- Hero must face unit he throw, So here it is. --------
                    -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                    Unit - Make TS_Hero[TS] face TS_Target[TS] over 0 seconds
                    Custom script: call RemoveLocation ( udg_TS_Point[2] )
                    Custom script: call RemoveLocation ( udg_TS_Point[3] )
              Else - Actions
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- That is no more smashes hero can do, so remove buff from unit, remove storm crom ability, turn collision on and unpause it. --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                Animation - Change TS_Target[TS_Times]'s animation speed to 100.00% of its original speed
                Animation - Reset TS_Hero[TS]'s body-part facing
                Unit - Remove Aerial Shackles buff from TS_Target[TS]
                Unit - Remove Storm Crow Form from TS_Target[TS]
                Unit - Turn collision for TS_Target[TS] On.
                Unit - Unpause TS_Target[TS]
                Set VariableSet TS_Skip = (TS_Skip - 1)
                Set VariableSet TS_Off[TS] = False
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                -------- If spell end, TS_Skip descreased. If TS_Skip is o, then no spells are runing and TS_Times must be 0 too. Turn off trigger if that is no spellsruning at map. --------
                -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    TS_Skip Equal to 0
                  Then - Actions
                    Set VariableSet TS_Times = 0
                    Trigger - Turn off (This trigger)
                  Else - Actions
          Else - Actions
Startup
  Events
    Map initialization
  Conditions
  Actions
    -------- ======================================================================= --------
    -------- DON'T TOUCH THIS --------
    -------- ======================================================================= --------
    Hashtable - Create a hashtable
    Set VariableSet WS_Hashtable = (Last created hashtable)
    -------- WS_DummyMonsoon --------
    Set VariableSet WS_DummyMonsoon = Lightning Dummy (Visual Monsoon)
    -------- WS_Dummy --------
    Set VariableSet WS_Dummy = Dummy
    -------- ======================================================================= --------
    -------- CUSTOMISE THIS --------
    -------- You can customise the rest of the ability in Trigger "Manastorm Cast" --------
    -------- Some visual effects are in the object editor (spells, buffs, units) --------
    -------- ======================================================================= --------
    -------- Number of Lightnings / Number of times Loop is repeated --------
    Set VariableSet WS_Loops = 5
    -------- Lightning Type --------
    Set VariableSet WS_LightningType = Chain Lightning - Primary
    -------- Specifies the effect which appears at the lightning strike point --------
    -------- Target - FreezingRing.mdx --------
    Set VariableSet WS_Impact = (Art path of Dummy Arcane Blast (Dummy).Target Art (index 0))
    -------- Lightning Duration in seconds --------
    Set VariableSet WS_LightningDuration = 0.80
    -------- --------
    -------- Base Range --------
    -------- WS_BaseDamageRange + (WS_Lvl x WS_BonusDamageRange) --------
    -------- WS_BaseDamageRange: 200 + (50 x 3) = 350 --------
    Set VariableSet WS_BaseDamageRange = 200.00
    -------- Bonus Range (This is added to the base range each new level) --------
    Set VariableSet WS_BonusDamageRange = 50.00
    -------- Base Range Visual Effect --------
    -------- WS_BaseEffectRange + (WS_Lvl x WS_BonusEffectRange) --------
    -------- WS_BaseEffectRange: 200 + (50 x 3) = 350 --------
    Set VariableSet WS_BaseEffectRange = 200.00
    -------- Bonus Range Visual Effect (This is added to the base range each new level) --------
    Set VariableSet WS_BonusEffectRange = 50.00
    -------- Base Damage --------
    -------- WS_BaseDamage x WS_Lvl = WS_Damage --------
    -------- WS_Damage: 100 x 3 = 300 --------
    Set VariableSet WS_BaseDamage = 100.00
    -------- --------
    -------- Base Damage Dealt when a unit with mana gets burned to 0 --------
    -------- WS_BaseEnddamage x WS_Lvl = WS_EndDamage --------
    -------- WS_EndDamage: 100 x 3 = 300 --------
    Set VariableSet WS_BaseEnddamage = 100.00
    -------- --------
    -------- Base Mana Burned ( IN PERCENT(%)) --------
    -------- Mana Burned: WS_BaseManaBurn x WS_Lvl + WS_BonusManaBurn --------
    -------- Mana Burned: 5 + (5 x 3) = 20% --------
    Set VariableSet WS_BaseManaBurn = 5.00
    -------- Bonus Mana Burned ( IN PERCENT(%)) --------
    Set VariableSet WS_BonusManaBurn = 5.00
    -------- --------
    -------- Cooldown can be customised in the Object Editor --------
    -------- Default Cooldown is 10 seconds at all levels --------
    -------- Mana Cost can be customised in the Object Editor --------
    -------- Default Mana Cost 120/160/180 --------
    -------- =================================================================== --------
    -------- =================================================================== --------
    -------- READ ME! --------
    -------- --------
    -------- Manasurge's Manastorm! --------
    -------- Provides a base of triggers with multiple exchangeable values to maximize the different way to combine this spell --------
    -------- --------
    -------- Tooltip --------
    -------- Manastorm --------
    -------- Damages units within 300/350/400 yards and deals 100/200/300 damage per unit. It also ignites the mana of the units affected, burning 10%/15%/20% and leaves the victim with a debuff that slows movementspeed for 7/10/14 seconds. --------
    -------- --------
    -------- HOW TO IMPORT --------
    -------- To get this spell to your map you need to copy and paste these: --------
    -------- NOTE: Make sure your map has "Automatically create unknown variables while pasting trigger data" box checked, you find it under File > Preferences --------
    -------- --------
    -------- Units: Dummy, Lightning Dummy (Visual Monsoon), Lightning Dummy (Visual Thunderclap) --------
    -------- Models: LightningWrath.mdx, FreezingRing.mdx (You find them in import manager on this map) --------
    -------- Spells: Shock (Dummy), Manastorm (Dummy), Manastorm --------
    -------- Buffs: Mana Residue --------
    -------- Triggers: Startup, Manastorm Cast, Lightning Clear --------
    -------- All Special Effects (except Lightning andLightning impact) is in the Object Editor spells. --------
    -------- --------
    -------- You can customise: --------
    -------- --------
    -------- Number of Lightnings --------
    -------- Number of Levels (in the spell in object editor and Manastorm Cast trigger, change the lvl check on Mana Burn, DamageRange and Range --------
    -------- Lightning type --------
    -------- Damage --------
    -------- End Damage --------
    -------- Mana Burned --------
    -------- Range of Damage --------
    -------- Range of the Effects --------
    -------- Mana Cost ( In object editor ) --------
    -------- Cooldown (In the spell in Object Editor) --------
    -------- Visual Effects (In the spells themselfes in Object Editor, 2 of the effects are units with a effect model: Dummy (Visual Monsoon) and Dummy (Visual Thunderclap)) --------
    -------- Duration of the Slow (This is modified in the Object Editor) --------
Manastorm Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Manastorm
  Actions
    -------- ======================================================================= --------
    -------- ======================================================================= --------
    -------- ///////////////// DO NOT CHANGE ANYTHING IN THIS TRIGGER! //////////////////// --------
    -------- ///////////////// DO NOT CHANGE ANYTHING IN THIS TRIGGER! //////////////////// --------
    -------- ///////////////// DO NOT CHANGE ANYTHING IN THIS TRIGGER! //////////////////// --------
    -------- ======================================================================= --------
    -------- ======================================================================= --------
    -------- --------
    -------- Determins who is the triggering unit, (Caster) --------
    Set VariableSet WS_Caster = (Triggering unit)
    -------- Adds the triggering player to WS_MessageGroup --------
    Set VariableSet WS_Force = (Player group((Triggering player)))
    -------- Determins who owns the triggering unit, (Triggering Player) --------
    Set VariableSet WS_Owner = (Triggering player)
    -------- Determins what level the ability cast is. (Thunderstorm) --------
    Set VariableSet WS_Lvl = (Level of (Ability being cast) for WS_Caster)
    -------- Fixates the position of the caster to originate all effects --------
    Set VariableSet WS_Point1 = (Position of WS_Caster)
    -------- Recycle WS_Real --------
    Set VariableSet WS_Real = 0.00
    Set VariableSet WS_DamageRange = (WS_BaseDamageRange + (WS_BonusDamageRange x (Real(WS_Lvl))))
    Set VariableSet WS_Range = (WS_BaseEffectRange + (WS_BonusEffectRange x (Real(WS_Lvl))))
    Set VariableSet WS_Damage = ((Real(WS_Lvl)) x WS_BaseDamage)
    Set VariableSet WS_EndDamage = ((Real(WS_Lvl)) x WS_BaseEnddamage)
    -------- Default slow duration is 7/10/14 seconds --------
    Set VariableSet WS_Manaburn = ((Integer(WS_BaseManaBurn)) + ((Integer(WS_BonusManaBurn)) x WS_Lvl))
    -------- Creates Visual Dummy --------
    Unit - Create 1.WS_DummyMonsoon for WS_Owner at WS_Point1 facing Default building facing degrees
    Custom script: set udg_lastunit = bj_lastCreatedUnit
    Unit - Make lastunit Explode on death
    Unit - Add a 0.50 second Generic expiration timer to lastunit
    -------- Creates Visual Dummy --------
    Unit - Create 1.WS_DummyMonsoon for WS_Owner at WS_Point1 facing Default building facing degrees
    Custom script: set udg_lastunit = bj_lastCreatedUnit
    Unit - Make lastunit Explode on death
    Unit - Add a 0.50 second Generic expiration timer to lastunit
    Trigger - Turn on Lightning_Clear <gen>
    -------- Starts Integer Loop to create lightnings and effects --------
    For each (Integer WS_Integer) from 1 to WS_Loops, do (Actions)
      Loop - Actions
        -------- Determins the point where the lightning starts and targets --------
        Set VariableSet WS_Point3 = (WS_Point1 offset by WS_DamageRange towards WS_Real degrees.)
        -------- Creates the Lightning Effect and a small impact effect --------
        Custom script: call AddLightningLoc( udg_WS_LightningType, udg_WS_Point1, udg_WS_Point3 )
        Special Effect - Create a special effect at WS_Point3 using WS_Impact
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at WS_Point3 using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at WS_Point1 using war3mapImported\LightningWrath.mdx
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at WS_Point1 using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
        Special Effect - Destroy (Last created special effect)
        -------- Activates timed life of Lightning Effects --------
        Unit - Create 1.WS_Dummy for WS_Owner at WS_Point1 facing Default building facing degrees
        Custom script: set udg_lastunit = bj_lastCreatedUnit
        Unit - Make lastunit Explode on death
        Unit - Add a WS_LightningDuration second Generic expiration timer to lastunit
        Unit Group - Add lastunit to WS_LightningGroup
        Set VariableSet WS_Group_Integer = (WS_Group_Integer + 1)
        Hashtable - Save Handle Of(Last created lightning effect) as 0 of (Key (Last created unit).) in WS_Hashtable.
        Set VariableSet WS_Point2 = (WS_Point1 offset by WS_Range towards WS_Real degrees.)
        -------- Creates Dummy For ability Effect --------
        Unit - Create 1.WS_Dummy for WS_Owner at WS_Point3 facing Default building facing degrees
        Unit - Add Manastorm (Dummy) to lastunit
        Unit - Set level of Manastorm (Dummy) for lastunit to WS_Lvl
        Unit - Order lastunit to Undead Dreadlord - Carrion Swarm.WS_Point2
        Unit - Add a 1.00 second Generic expiration timer to lastunit
        Unit - Make lastunit Explode on death
        Set VariableSet WS_Real = (WS_Real + (360.00 / (Real(WS_Loops))))
        -------- Clears location leaks --------
        Custom script: call RemoveLocation(udg_WS_Point2)
        Custom script: call RemoveLocation(udg_WS_Point3)
    Custom script: set bj_wantDestroyGroup = true
    Unit Group - Pick every unit in (Units within WS_DamageRange of WS_Point1 matching ((((Matching unit) belongs to an enemy of WS_Owner.) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) is alive) Equal to True)))).) and do (Actions)
      Loop - Actions
        Set VariableSet WS_PickedPos = (Position of (Picked unit))
        Set VariableSet WS_PickedUnit = (Picked unit)
        Set VariableSet WS_CurrentHp1 = (Life of WS_PickedUnit)
        Unit - Cause WS_Caster to damage WS_PickedUnit, dealing WS_Damage damage of attack type Spells and damage type Normal
        Unit - Create 1.WS_Dummy for WS_Owner at WS_Point1 facing Default building facing degrees
        Custom script: set udg_lastunit = bj_lastCreatedUnit
        Unit - Add Shocked (Dummy) to lastunit
        Unit - Set level of Shocked (Dummy) for lastunit to WS_Lvl
        Unit - Order lastunit to Orc Shaman - Purge.WS_PickedUnit
        Unit - Add a 1.00 second Generic expiration timer to lastunit
        Unit - Make lastunit Explode on death
        -------- Calculates mana that will be burned --------
        Set VariableSet WS_BurnedMana1 = ((Max mana of WS_PickedUnit) / 100.00)
        Set VariableSet WS_BurnedMana = ((Mana of WS_PickedUnit) - (WS_BurnedMana1 x (Real(WS_Manaburn))))
        -------- Checking if any mana was burned and --------
        -------- Applies the calculated burn --------
        Unit - Set mana of WS_PickedUnit to WS_BurnedMana
        Set VariableSet WS_CurrentMana = (Mana of (Picked unit))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            WS_CurrentMana Greater than 0.00
          Then - Actions
            Set VariableSet WS_BurnedmessageInteger = ((Integer(WS_BurnedMana1)) x WS_Manaburn)
            Set VariableSet WS_BurnedMessage = (- + (String(WS_BurnedmessageInteger)))
          Else - Actions
            Set VariableSet WS_DisplayOverdrain = ((Integer(WS_Damage)) + (Integer(WS_EndDamage)))
            Set VariableSet WS_BurnedMessage = (- + (String(WS_DisplayOverdrain)))
        -------- Creates the Floating Text effect reflecting the burned amount --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Integer(WS_BurnedMana1)) Greater than 0
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                WS_BurnedmessageInteger Greater than 0
                WS_CurrentMana Less than or equal to 0.00
              Then - Actions
                Unit - Cause WS_Caster to damage WS_PickedUnit, dealing WS_EndDamage damage of attack type Chaos and damage type Normal
                Set VariableSet WS_AfterHp1 = (Life of WS_PickedUnit)
                Set VariableSet WS_DisplayOverdrain = ((Integer(WS_CurrentHp1)) - (Integer(WS_AfterHp1)))
                Set VariableSet WS_BurnedMessage = (- + (String(WS_DisplayOverdrain)))
                Special Effect - Create a special effect at WS_PickedPos using Units\Undead\Abomination\AbominationExplosion.mdl
                Special Effect - Destroy (Last created special effect)
                Floating Text - Create floating text that reads WS_BurnedMessage above WS_PickedUnit with Z offset 0, using font size 10.00, color (100.00%, 10.00%, 10.00%), and 0% transparency
              Else - Actions
                Special Effect - Create a special effect at WS_PickedPos using Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
                Special Effect - Destroy (Last created special effect)
                Floating Text - Create floating text that reads WS_BurnedMessage above WS_PickedUnit with Z offset 0, using font size 8.00, color (50.00%, 50.00%, 100.00%), and 0% transparency
            Custom script: set udg_lastfloating = bj_lastCreatedTextTag
            Floating Text - Hide lastfloating for (All players)
            Floating Text - Show lastfloating for WS_Force
            Floating Text - Set the velocity of lastfloating to 64 towards 90 degrees
            Floating Text - Change lastfloating: Disable permanence
            Floating Text - Change the lifespan of lastfloating to 1.50 seconds
            Floating Text - Change the fading age of lastfloating to 1.20 seconds
          Else - Actions
        Custom script: call RemoveLocation(udg_WS_PickedPos)
    -------- Clear Lightning leak in Trigger "Lightning Clear" --------
    -------- Clears some leaks --------
    Custom script: call RemoveLocation(udg_WS_Point1)
    Custom script: call DestroyForce(udg_WS_Force)
Lightning Clear
  Events
    Unit - A unit Dies
  Conditions
    ((Triggering unit) is in WS_LightningGroup.) Equal to True
  Actions
    Unit Group - Remove (Triggering unit) from WS_LightningGroup.
    Set VariableSet WS_Group_Integer = (WS_Group_Integer - 1)
    Lightning - Destroy (Load 0 of (Key (Triggering unit).) in WS_Hashtable.)
    Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in WS_Hashtable.
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        WS_Group_Integer Equal to 0
      Then - Actions
        Trigger - Turn off (This trigger)
      Else - Actions
AE SetUp
  Events
    Map initialization
  Conditions
  Actions
    Custom script: set udg_AE_Hash = InitHashtable()
    -------- Configuration --------
    -------- Determines the damage --------
    Set VariableSet AE_Damage[1] = 50.00
    Set VariableSet AE_Damage[2] = 75.00
    Set VariableSet AE_Damage[3] = 100.00
    -------- Determines the mana burn --------
    Set VariableSet AE_ManaBurn[1] = 50.00
    Set VariableSet AE_ManaBurn[2] = 75.00
    Set VariableSet AE_ManaBurn[3] = 100.00
    -------- Determines the duration --------
    Set VariableSet AE_Duration[1] = 5.00
    Set VariableSet AE_Duration[2] = 10.00
    Set VariableSet AE_Duration[3] = 15.00
    -------- Determines the radius of AoE --------
    Set VariableSet AE_Radius[1] = 500.00
    Set VariableSet AE_Radius[2] = 750.00
    Set VariableSet AE_Radius[3] = 1000.00
    -------- Determines the height of the orbs --------
    -------- By Arc --------
    Set VariableSet AE_Height[1] = 0.50
    Set VariableSet AE_Height[2] = 0.75
    Set VariableSet AE_Height[3] = 1.00
    -------- Determines the touch radius of the orb --------
    Set VariableSet AE_DamageRadius = 75.00
    -------- Determines the number of orbs --------
    -------- By Hex --------
    Set VariableSet AE_OrbsNumberMin[1] = 1
    Set VariableSet AE_OrbsNumberMax[1] = 3
    Set VariableSet AE_OrbsNumberMin[2] = 2
    Set VariableSet AE_OrbsNumberMax[2] = 4
    Set VariableSet AE_OrbsNumberMin[3] = 3
    Set VariableSet AE_OrbsNumberMax[3] = 5
    -------- Determines the orb interval --------
    Set VariableSet AE_OrbInterval = 0.20
    -------- Determines the SFX when orbs drop --------
    Set VariableSet AE_SFX[1] = Units\NightElf\Wisp\WispExplode.mdl
AE Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Arcane Eruption
  Actions
    -------- Variables --------
    Set VariableSet AE_Caster = (Triggering unit)
    Custom script: set udg_AE_CasterKey = GetHandleId(udg_AE_Caster)
    -------- Starting Loop --------
    Set VariableSet AE_CurrentDuration = 0.00
    Set VariableSet AE_Level = (Level of Arcane Eruption for AE_Caster)
    Hashtable - Save AE_CurrentDuration as 0 of AE_CasterKey in AE_Hash.
    Hashtable - Save AE_Level as 1 of AE_CasterKey in AE_Hash.
    Unit Group - Add AE_Caster to AE_LoopGroup
AE Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    Unit Group - Pick every unit in AE_LoopGroup and do (Actions)
      Loop - Actions
        Set VariableSet AE_U = (Picked unit)
        Custom script: set udg_AE_UKey = GetHandleId(udg_AE_U)
        -------- Load --------
        Set VariableSet AE_CurrentDuration = (Load 0 of AE_UKey from AE_Hash.)
        Set VariableSet AE_Level = (Load 1 of AE_UKey from AE_Hash.)
        Set VariableSet AE_Timer = (Load 2 of AE_UKey from AE_Hash.)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            AE_CurrentDuration Less than AE_Duration[AE_Level]
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                AE_Timer Greater than AE_OrbInterval
              Then - Actions
                -------- Creating Orbs --------
                Set VariableSet AE_ULoc = (Position of AE_U)
                Set VariableSet AE_Owner = (Owner of AE_U)
                -------- Determines the hex number of orbs --------
                Set VariableSet AE_OrbHex = (Random integer number between AE_OrbsNumberMin[AE_Level] and AE_OrbsNumberMax[AE_Level])
                For each (Integer AE_Integer) from 1 to AE_OrbHex, do (Actions)
                  Loop - Actions
                    Unit - Create 1.AE Missile for AE_Owner at AE_ULoc facing (Random angle) degrees
                    Set VariableSet AE_Orb = (Last created unit)