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 haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. Join the 6th Melee Mapping Contest for a chance to have your map featured in this year's Hive Cup!
    Dismiss Notice
  5. Shoot to thrill, play to kill. Sate your hunger with the 33rd Modeling Contest!
    Dismiss Notice
  6. Do you hear boss music? It's the 17th Mini Mapping Contest!
    Dismiss Notice
  7. Let your favorite entries duke it out in the 15th Techtree Contest Poll.
    Dismiss Notice
  8. Weave light to take you to your highest hopes - the 6th Special Effect Contest is here!
    Dismiss Notice
  9. 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

custom racev0.0472.w3x
Variables
Initialization
Melee Initialization
test
gotest
Alternate Altar
Human
Horde Unit Spells
Shredder
Rexxar
Rexxar Spells Double Spinning Blades
Configuration
Double Spinning Blade
DSB Loop
Rexxar Spells Beast Attack
Beast Attack
Rexxar Spells Earth Fury
Earth Fury
Rexxar Spells Combat Urgency
Rexxar Spells Haratha
Grom
Groms Spells Cutting Edge
Hastable for CE
Cutting Edge
Cutting Edge Knock
Remove Dummies
Grom Spells Fade Step
Init
Fade Step
Fade Step Loop
Grom Spells Agile
ReadMe
AgileConfig
AgileAbilityCast
AgileTime
Groms Spells Wind Storm
Wind Storm A
Wind Storm B
Grom Spells Sinister Strike
Sinister Strike
Teron
Teron Spells Shadow Drain
Shadow Drain Cast
Shadow Drain Loop
Teron Spells Soul Tether
Soul Tether Configuration
Soul Tether Activation
Soul Tether Loop
Teron Spells Walk of Shadows
Walk of Shadows Cast
Walk of Shadows Loop
Teron Spells Knowledge of Shadows
Knowledge of Shadows
Teron Spells Love of Shadows
Love the Shadows
Teron Spells Extra System
Add Special Effect to System
SpecialEffectSystemLoop
Dentarg
Dentarg Spells Power Suction
Dentarg Spells Earth Slam
EarthSlam
Dentarg Spells Glyph of Nature
Glyph of Nature
Dentarg Spells Thorn Armour
Thorn Armor Config
Thorn Armor
Remove Dummy Leak
Thorns GDD
GDD Variable Creator
GUI Friendly Damage Detection
Dentarg Spells Psychic Onslaught
Psychic Rape
Fenris
Fenris Spells Aqua Burst
Aqua Burst
Fenris Spells Hydro
HydroJetCast
HydroJetDebug
HydroJetWater
Fenris Spells Elemental
LiquidElementalCast
LiquidElemetalPuddles
LiquidElementalDeath
Fenris Spells Watery Chill
Fenris Spells Whirlpool
WhirlPoolCast
WhirlPoolLoop
Fenris Water
HashtableSetup
Tagar
Tagar Spells Raging Slam
Start
Loop
Tagar Spells Conflict Craving
Tagar Spells Earth Pulse
EarthPulse A
EarthPulse B
Tagar Spells Raze
Tagar Spells Bolder Bombardment
BoulderBombardment A
BoulderBombardment B
Danath
Danath Spells Unexpected Charge
Cast Charge
Projectile Dash by Paladon
FadeDummyEffects System by Paladon
getFaded
callFading
Danath Spells Fury Peak
Fury Peak
Danath Spells Battle Focus
Init Copy 2
Battle Focus
Battle Focus Loop
Tagar Spells Storming Flame
DDS Main
DDS Add Unit
DDS Init
Storming Flame loop
Danath Spells Power Slam
Power Slam
Kurdan
Kurdan Spells Storm Rotation
SR Start
SR Loop
Kurdan Spells Lightning Field
Preload SF
Static Field
Lightning Fade
Kurdan Spells Surging Pulse
Surging Pulse
Kurdan Spells Energizing Presence
Kurdan Spells Voltage Overload
Turalyon
Turalyon Spells Holy Blessing
Holy Blessing
Turalyon Spells Hammer of Thor
|ZZZZZZZZZZZZZZZZZZZZZZ|
|ZZZZZZZ| README |ZZZZZZZ|
Hammer of Thor
Hammer of Thor Move Up Down
Hammer of Thor Lightning Move
Hammer of Thor Slam
Hammer of Thor Up
Hammer of Thor Stun
|ZZZZZZZZZZZZZZZZZZZZZZ|
Hammer of Thor Hash
Melee Initialization Copy
Turalyon Spells Volatile Light
VL readme SS
VL Config SS
VL Cast SS
VL Loop SS
Bribe's GUI Spell System
Spell System Config
Spell System
Turalyon Spells Song of Angels
Turalyon Spells Heaven's Justice
---------------------------
Spell Information: Heaven's Justice
Heavens Justice Configuration
Heavens Justice Execution
Heavens Justice Loop
---------------------------
Unit Indexer System ( Bribe )
---------------------------
Unit Indexer
---------------------------
Khadgar
Khadgar Spells Phantom Bolt
Phantom Bolt Init
Phantom Bolt Per
Khadgar Spells Star
Importing
AbsoluteINT
AbsoluteCAST
AbsoluteLOOP
Khadgar Spells Telekinesis
Initial Telekinesis GUI
Telekinesis GUI
Khadgar Spells Arcane Resort
Arcane Resort
Khadgar Spells Arcane Storm
ASHashtable
ASInit
ASPeriodic
Krasus
Krasus Spells Fire Blast
Fire blast init
Fire Blast loop
Krasus Spells Blaze
Blaze init
Blaze loop
Krasus Spells Molten Armour
Molten Armor
Krasus Spells Draconian Invocation
Antonidas
Antonidas Spells Stop
Stop cast
Stop loop
Antonidas Spells Temporal Flick
Flick INIT
Flick
Reflect
Trigg Reflect
Reflect
Deathwing Spells Sandstorm
SandStormCast
SandStormMovement
Deathwing Spells Shadowwalk
Shadow Walk
Extra
Khadgar Item Teleport
TP Actions to apply basic
TP Actions to apply FULL
Example Jaina
How to import
How it's work
TP Setup
TP Call
TP Loop
Rexxar Spells Assassin Aura
AA Preload
AA Effect
Fenris Spells Water Wave
WaterWaveCast
WaveMovement
Meteor Slash
Meteor Slash On
Meteor Slash Loop
Holy Shockwave
Details
HS init
HS cast
HS loop
HS cancel
IsDestructableTree
init Copy
system
system
init
event
prepare
Holy Cross
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
A_AoE real No
A_Bool boolean No
A_Damage real No
A_Duration real No
A_Int integer No
A_Real real No
A_Real2 real No
A_Speed real No
A_UType unitcode No
AA_A_Group group No
AA_Cstr_Group group No
AA_E_HP real No
AA_HPcount real No
AA_Loc location Yes
AA_Percent real Yes
AA_PreLoop integervar No
Absolaoe real No
AbsolBoolean1 boolean No
AbsolBoolean2 boolean No
AbsolBoolean3 boolean No
AbsolBoolean4 boolean No
AbsolCast unit No
AbsolCnt integer No
AbsolCol real No
AbsolDamg real No
AbsolDestroy boolean No
AbsolDummy unit No
AbsolDummy2 unit No
AbsolGroup group No
AbsolGroupTARGET group No
AbsolId integer No
AbsolINTEGER integer No
AbsolLightningId integer No
AbsolLoop integervar No
AbsolMax integer No
AbsolMaxBound integer No
AbsolPlayer player No
AbsolREAL real No
AbsolRealHeightUp real No
AbsolTrigger integer No
AbsolUnitInteger integer No
Agile_AoE real No
AgileAbility abilcode No
AgileAmount integer Yes
AgileCasters unit Yes
AgileCasterSE effect Yes
AgileDamage integer No
AgileDamageArea location No
AgileDamageEnemy group No
AgileDamagePercent real No
AgileDamageSize integer No
AgileEnemies unit No
Agileindex integer Yes
Agileindex_max_size integer No
Agileindex_size integer No
AgileInteger integer No
AgileLevel integer No
AgileLoop integervar No
AgileRAmount integer No
AgileRTime integer No
AgileSFX1 string No
AgileSFX1_AP string No
AgileSFX2 string No
AgileSFX2_AP string No
AgileSFX3 string No
AgileSFX3_Ap string No
AgileTime integer Yes
AH1 real No
AH2 real No
AH3 real No
AL lightning No
ALT lightningtype No
Amount real No
Angle_setter real No
AP location No
AP2 location No
AP3 location 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
AR_Point location No
AS integervar No
AS_Angle real Yes
AS_Animation real No
AS_Defense_fake integer Yes
AS_Distance real Yes
AS_Equation real Yes
AS_FLY real Yes
AS_Formula real Yes
AS_Group group Yes
AS_Hero unit Yes
AS_Max_Height real Yes
AS_Off boolean Yes
AS_Point location Yes
AS_Skip integer No
AS_Special effect Yes
AS_Speed real Yes
AS_Stable_Distance real Yes
AS_Times integer No
AS_X_Special effect Yes
ASAOE real No
ASCaster unit No
ASCasterGroup group No
ASCasterPoint location No
ASDamage real No
ASDamageGroup group No
ASExplosion unit No
ASHashtable hashtable No
ASPlayer player No
ASRandomGroup group No
ASRay unit No
ASRayFly real No
ASTarget unit No
ASTargetPoint location No
ASTime real No
BB integervar No
BB2 integervar No
BB_Angle real Yes
BB_Attacked unit No
BB_Caster unit Yes
BB_Casting unit Yes
BB_CastNumber integer No
BB_Chance integer No
BB_Damage real Yes
BB_Distance real Yes
BB_Expire integer Yes
BB_Group group No
BB_Height real Yes
BB_LEVEL integer No
BB_Loop integervar No
BB_Missile unit Yes
BB_Off boolean Yes
BB_Point location Yes
BB_Real_Damage_Spam integer Yes
BB_Skip integer No
BB_Speed real Yes
BB_Switch integer No
BB_Targ unit Yes
BB_Times integer No
BB_Up boolean Yes
Beast_Attack_Ability_Level integer No
Beast_Attack_Atribute integer No
Beast_Attack_Atribute_Damage real No
Beast_Attack_Caster unit No
Beast_Attack_Damage_Splitter integer No
Beast_Attack_Life_Damage real No
Beast_Attack_Location location No
Beast_Attack_Location2 location No
Beast_Attack_Max_Life real No
Beast_Attack_Target unit No
Beast_Attack_Total_Damage real No
BFAbility abilcode Yes
BFAura unit Yes
BFAura2 unit Yes
BFAura3 unit Yes
BFCaster unit Yes
BFCasterAbility abilcode Yes
BFCount integer No
BFGroup group Yes
BFHas boolean Yes
BFIndex integer No
BFInteger integervar No
BFLastRecycled integer No
BFMax integer No
BFRecycledList integer Yes
BFTimer real Yes
BlazeCaster unit Yes
BlazeDuration real Yes
BlazeIndexsize integer No
BlazeInteger integer Yes
BlazeLoop integervar No
BlazeMaxsize integer No
BlazePoint location No
BlazeTemp integer No
Caster unit No
CE_Ability_Level integer No
CE_Area_of_Effect real No
CE_Base_Damage real No
CE_Caster unit No
CE_Damage_Group group No
CE_Destroy_Trees boolean No
CE_Knock_Angle real No
CE_Knock_Distance real No
CE_Knock_Group group No
CE_Knock_Loc1 location No
CE_Knock_Loc2 location No
CE_Knock_Speed real No
CE_Knocktable hashtable No
CE_Location location No
CE_Location2 location No
CE_Pathing_On boolean No
CE_Special_Effect effect No
CE_Special_Effect1 effect No
CE_Total_Damage real No
Currant_intstances integer No
DDS_Detect group No
Debug integervar No
Degrees_set real No
DSB_Ability_ID abilcode No
DSB_Ability_Level integer Yes
DSB_Angle real Yes
DSB_Animation_Speed real No
DSB_AoE real No
DSB_Caster unit Yes
DSB_Conditions boolean Yes
DSB_Current_Index integervar No
DSB_Damage real Yes
DSB_Damage_Group group No
DSB_Destroy_Tree boolean No
DSB_Destroyer unit No
DSB_Distance real No
DSB_Dummy unit Yes
DSB_Dummy2 unit Yes
DSB_Dummy2_Animation string No
DSB_Dummy2_BLUE real No
DSB_Dummy2_GREEN real No
DSB_Dummy2_Lifetime real No
DSB_Dummy2_RED real No
DSB_Dummy2_Transparency real No
DSB_Dummy_Type unitcode No
DSB_Dummy_Type2 unitcode No
DSB_Max_Index integer No
DSB_Owner player Yes
DSB_Shadow boolean No
DSB_Shdow boolean Yes
DSB_SoundEffect sound No
DSB_Special_Effect string No
DSB_Special_Effect_Location string No
DSB_Stage integer Yes
DSB_Start_Range real No
DSB_UnDamage_Group group Yes
Earth_Fury_Ability_Level integer No
Earth_Fury_AoE_Bouns real No
Earth_Fury_Base_Area_of_Effect real No
Earth_Fury_Base_Damage real No
Earth_Fury_Bonus_Damage real No
Earth_Fury_Caster unit No
Earth_Fury_Chance real No
Earth_Fury_Damage_Group group No
Earth_Fury_Dummy_Ability abilcode No
Earth_Fury_Dummy_Ability_2 abilcode No
Earth_Fury_Location location No
Earth_Fury_Owner player No
Earth_Fury_Total_Area_of_Effec real No
Earth_Fury_Total_Damage real No
EP integervar No
EP_Angle real Yes
EP_Caster unit Yes
EP_CastNumber integer No
EP_ConstDistance real Yes
EP_Distance real Yes
EP_Height real Yes
EP_Integer integervar No
EP_Missile unit Yes
EP_Off boolean Yes
EP_Point location Yes
EP_Speed real Yes
EP_Switch integer No
ES_Caster unit No
ES_Group group No
ES_Integer integervar No
ES_Point location Yes
ES_Target unit No
F_Integers integer Yes
F_ReachedFading real Yes
F_Time real Yes
F_Unit unit Yes
FA_Time real No
FA_Unit unit No
FB_Blast unit Yes
FB_Caster unit Yes
FB_Dummy unit Yes
FB_Explosion integervar Yes
FB_Indexsize integer No
FB_Integer integer Yes
FB_Loop integervar No
FB_Maxindexsize integer No
FB_Point location Yes
FB_Real real Yes
FB_Temp integer No
Flck_Ability abilcode No
Flck_CaptureDistance real No
Flck_CaptureRadius real No
Flck_Caster unit No
Flck_CasterPoint location No
Flck_Facing real No
Flck_SpecialEffectWarpInCaster string No
Flck_SpecialEffectWarpOutCast string No
Flck_TargetPoint location No
Flck_Tempangle real No
Flck_Tempgroup group No
Flck_Temppoint location No
Flck_Temppoint2 location No
Flck_Temppoint3 location No
Flck_Victim unit No
FP_Point location No
FSCaster unit Yes
FSCasterPoint location Yes
FSCount integer No
FSDistance real Yes
FSDummy unit Yes
FSDummyGroup group Yes
FSFace real Yes
FSFade real Yes
FSFadeC real Yes
FSHas boolean Yes
FSIndex integer No
FSInteger integervar No
FSLastRecycled integer No
FSMax integer No
FSMaxDistance real Yes
FSMove real Yes
FSRecycledList integer Yes
FSTime real No
GDD__Integers integer Yes
GDD__LeftMapGroup group No
GDD__TriggerArray trigger Yes
GDD__UnitArray unit Yes
GDD_Damage real No
GDD_DamagedUnit unit No
GDD_DamageSource unit No
GDD_Event real No
Gravity_unit unit No
Gravity_Unit_ID handle No
Handle_Absol integer No
HashAbsol hashtable No
Hashtable hashtable No
HJ_Ability abilcode No
HJ_AbilityMaxLevel integer No
HJ_AttackType attacktype No
HJ_Caster unit Yes
HJ_CasterPlayer player Yes
HJ_CollisionRange real No
HJ_CustomBoolean boolean Yes
HJ_CustomInteger integervar No
HJ_CustomReal real Yes
HJ_CustomReal2 real Yes
HJ_CustomReal3 real Yes
HJ_CustomReal4 real Yes
HJ_DamageType damagetype No
HJ_DummyType unitcode No
HJ_Effect string Yes
HJ_EffectCount integer No
HJ_EnemySoulModelHandler effect Yes
HJ_EnemySoulUnit unit Yes
HJ_FriendlySoulModelHandler effect Yes
HJ_FriendlySoulUnit unit Yes
HJ_Group group No
HJ_ID integer No
HJ_JudgeDuration real Yes
HJ_JudgeDurationCounter real Yes
HJ_Level integer Yes
HJ_LevitateSpeedCalculation real Yes
HJ_LoopInterval real No
HJ_ModelHandler effect Yes
HJ_Pause boolean No
HJ_PauseAbility abilcode No
HJ_PauseEnemyEffectAttach string No
HJ_PauseEnemyEffectHandler effect Yes
HJ_PauseFriendlyEffectAttach string No
HJ_PauseFriendlyEffectHandler effect Yes
HJ_PauseOrder string No
HJ_PickedUnit unit No
HJ_Radius real Yes
HJ_RadiusEffectAngle real No
HJ_RadiusEffectCount integer Yes
HJ_ReturnHeightCalculation real Yes
HJ_SoulDamage real Yes
HJ_SoulDistance real Yes
HJ_SoulDistanceCounter real Yes
HJ_SoulEnemyExitAttach string No
HJ_SoulEnemyModelAttach string No
HJ_SoulFriendlyExitAttach string No
HJ_SoulFriendlyModelAttach string No
HJ_SoulHeal real Yes
HJ_SoulInitialHeight real Yes
HJ_SoulLevitateTime real Yes
HJ_SoulLevitateTravel boolean No
HJ_SoulLevitateTravelAngle real Yes
HJ_SoulMaxHeight real Yes
HJ_SoulMotionEffect string Yes
HJ_SoulMotionEffectAttach string Yes
HJ_SoulMotionEffectChance integer No
HJ_SoulReturnDamageAttach string No
HJ_SoulReturnHealAttach string No
HJ_SoulSize real Yes
HJ_SoulUnit unit Yes
HJ_TravelSpeedCalculation real Yes
HJ_Unit unit No
HoT_Const_AoE real No
HoT_Const_Dmg_Base real No
HoT_Const_Dmg_Bonus real No
HoT_Const_Dmg_Burn real No
HoT_Const_Dmg_Stun real No
HoT_Const_Dmg_Stun_Bonus real No
HoT_Const_Duration real No
HoT_Const_Range real No
HoT_Const_Stun_Duration real No
HoT_Group group No
HoT_Hash hashtable No
HoT_Lightning_Group group No
HoT_Slam_Group group No
HoT_Stun_Group group No
HoT_Targets group No
HoT_Up_Group group No
HS_ability abilcode No
HS_animation string No
HS_attack_type attacktype No
HS_caster unit No
HS_caster_loc location No
HS_charge_counter integer No
HS_charges integer Yes
HS_cone real No
HS_counter real No
HS_damage real Yes
HS_damageType damagetype No
HS_destroy_dest boolean No
HS_detect_area real No
HS_direction real No
HS_effect string No
HS_effect2 string No
HS_explosion_count integer No
HS_facing real No
HS_group group No
HS_hash hashtable No
HS_height real No
HS_knockup boolean No
HS_knockup_animation string No
HS_knockup_effect string No
HS_knockup_speed real No
HS_level integer No
HS_loop_speed real No
HS_speed real Yes
HS_temp_loc location No
HS_time real No
HS_trigger trigger No
HS_trigger2 trigger No
HydroJetCasters group No
HydroJetProjectiles group No
Intervals timer No
ISD_boolean boolean No
ISD_d destructable No
ISD_dummy unit No
ISD_loc location No
ISD_p location No
KoS_Angle real Yes
KOS_BackstabEffect string No
KUS_animation string No
KUS_effect modelfile No
KUS_group group No
KUS_hash hashtable No
KUS_height real No
KUS_knockup boolean No
KUS_speed real No
KUS_target unit No
KUS_temp_loc location No
KUS_temp_speed real No
Leak_Point location No
LF_A_Decrease real Yes
LF_Alpha real Yes
LF_B real Yes
LF_CountInteger integer Yes
LF_Debug boolean Yes
LF_G real Yes
LF_Lightning lightning Yes
LF_R real Yes
LiquidElementals group No
MA_Chance integer No
MA_Chance2 real No
MA_Nova integervar No
MA_Point location Yes
MA_Real real No
pb_angle_1 real Yes
pb_angle_2 real Yes
pb_caster unit Yes
pb_caster_loc location Yes
pb_counter real Yes
pb_distance_1 real Yes
pb_distance_2 real Yes
pb_effect_1 unit Yes
pb_effect_2 unit Yes
pb_effect_3 unit Yes
pb_index1 integer No
pb_index2 integer No
pb_index3 integervar No
pb_light_1 lightning Yes
pb_light_2 lightning Yes
pb_loopon boolean Yes
pb_segment_1 location Yes
pb_segment_2 location Yes
pb_segment_3 location Yes
pb_target_loc location Yes
PD_Angle real Yes
PD_Distances real Yes
PD_Integers integer Yes
PD_ReachedDistance real Yes
PD_RealTimer real Yes
PD_SpeedUnits real Yes
PD_TempPoint location Yes
PD_TestGroup group No
PD_TreesDestroy boolean Yes
PD_Unit unit Yes
Power_Slam_Ability_Level integer No
Power_Slam_Base_Chance real No
Power_Slam_Caster unit No
Power_Slam_Damage real No
Power_Slam_Damage_Multiplier real No
Power_Slam_Dummy_Ability abilcode No
Power_Slam_Location location No
Power_Slam_Owner player No
Power_Slam_Strength integer No
Power_Slam_Target unit No
Power_Slam_Total_Chance real No
PR_Ability_Level integer No
PR_Atribute integer No
PR_Caster unit No
PR_Caster_Loc location No
PR_Damage real No
PR_Damage_Factor real No
PR_Dummy_Ability abilcode No
PR_Target unit No
PR_Target_Loc location No
PR_Target_Mana real No
Reflect_Users group No
Returning_to_normal_fly_height group No
RS_Angle real Yes
RS_Boolean boolean Yes
RS_Caster unit Yes
RS_CurDis real Yes
RS_Damage real Yes
RS_Index integer Yes
RS_LevelA integer Yes
RS_Loc location Yes
RS_MaxD real Yes
RS_MaxH real Yes
RS_Player player Yes
RS_Real real Yes
RS_Speed real Yes
RS_Target unit Yes
S_caster unit Yes
S_dummy unit Yes
S_dummypoint location No
S_index1 integer Yes
S_index2 integer No
S_index3 integervar No
S_index_max integer No
S_index_size integer No
S_pause boolean Yes
S_speed real Yes
S_stopduration real Yes
S_stopgroup group Yes
S_targetpoint location No
SandStorm group No
SD_Caster unit Yes
SD_Damage real Yes
SD_DamageEffect string Yes
SD_Index integer Yes
SD_LightningEffect lightning Yes
SD_MaxDistance real Yes
SD_Off boolean Yes
SD_TargetedUnit unit Yes
SD_Timer real Yes
SD_TimeToDoDamage real Yes
Sepharic_Star_Hashtable hashtable No
Sepharic_Star_Speed integer No
SES_Index integer Yes
SES_Off boolean Yes
SES_SpecialEffect effect Yes
SES_Timer real Yes
SF integervar No
SF_AoE real No
SF_Caster unit No
SF_CastNumber integer No
SF_ChainProc integer No
SF_Hero unit Yes
SF_Integer integervar Yes
SF_Loc location Yes
SF_Loc1 location Yes
SF_Off boolean Yes
SF_Real real No
SF_Switch integer No
SF_Time real Yes
Sinister_Strike_Ability_Level integer No
Sinister_Strike_Atribute integer No
Sinister_Strike_Base_Chance real No
Sinister_Strike_Bonus_Armor integer No
Sinister_Strike_Caster unit No
Sinister_Strike_Damage_Factor real No
Sinister_Strike_Dummy_Ability abilcode No
Sinister_Strike_Dummy_Ability2 abilcode No
Sinister_Strike_Location location No
Sinister_Strike_Normal_Armor integer No
Sinister_Strike_Owner player No
Sinister_Strike_Target unit No
Sinister_Strike_Total_Chance real No
Sinister_Strike_Total_Damage real No
Spell__Ability abilcode No
Spell__Caster unit No
Spell__CasterOwner player No
Spell__CastPoint location No
Spell__Channeling boolean No
Spell__Completed boolean No
Spell__DummyOwner player No
Spell__DummyType unitcode No
Spell__Duration real No
Spell__Expired boolean No
Spell__Filter_AllowAlly boolean No
Spell__Filter_AllowDead boolean No
Spell__Filter_AllowEnemy boolean No
Spell__Filter_AllowFlying boolean No
Spell__Filter_AllowHero boolean No
Spell__Filter_AllowLiving boolean No
Spell__Filter_AllowMagicImmune boolean No
Spell__Filter_AllowMechanical boolean No
Spell__Filter_AllowNonHero boolean No
Spell__Filter_AllowStructure boolean No
Spell__Hash hashtable No
Spell__Index integer No
Spell__InRange real No
Spell__InRangeCount integer No
Spell__InRangeGroup group No
Spell__InRangePoint location No
Spell__InRangeUnits unit Yes
Spell__Interval real No
Spell__Level integer No
Spell__LevelMultiplier real No
Spell__Running boolean No
Spell__Target unit No
Spell__TargetGroup group No
Spell__TargetPoint location No
Spell__Time real No
Spell__Trigger_OnCast trigger No
Spell__Trigger_OnChannel trigger No
Spell__Trigger_OnEffect trigger No
Spell__Trigger_OnFinish trigger No
Spell__Trigger_OnLoop trigger No
Spell__UseTargetGroup boolean No
Spell__WakeTargets boolean No
Spell_i_AllowAlly boolean Yes
Spell_i_AllowDead boolean Yes
Spell_i_AllowEnemy boolean Yes
Spell_i_AllowFlying boolean Yes
Spell_i_AllowHero boolean Yes
Spell_i_AllowLiving boolean Yes
Spell_i_AllowMagicImmune boolean Yes
Spell_i_AllowMechanical boolean Yes
Spell_i_AllowNonHero boolean Yes
Spell_i_AllowStructure boolean Yes
Spell_i_Caster unit Yes
Spell_i_Channeling boolean Yes
Spell_i_Completed boolean Yes
Spell_i_Duration real Yes
Spell_i_EventType integer Yes
Spell_i_GroupN integer No
Spell_i_GroupStack group Yes
Spell_i_Head integer Yes
Spell_i_Instances integer No
Spell_i_LastTime real Yes
Spell_i_Level integer Yes
Spell_i_Linked boolean Yes
Spell_i_OnCastStack trigger Yes
Spell_i_OnChannelStack trigger Yes
Spell_i_OnEffectStack trigger Yes
Spell_i_OnFinishStack trigger Yes
Spell_i_OnLoopStack trigger Yes
Spell_i_PreloadDummy unit No
Spell_i_Recycle integer No
Spell_i_RecycleList integer Yes
Spell_i_Stack integer Yes
Spell_i_StackN integer No
Spell_i_StackRef integer Yes
Spell_i_Target unit Yes
Spell_i_TargetGroup group Yes
Spell_i_TargetX real Yes
Spell_i_TargetY real Yes
Spell_i_Time real Yes
Spell_i_Timer timer No
Spell_i_UseTG boolean Yes
SpellLevel integer No
SR_Angle real Yes
SR_Boolean boolean Yes
SR_Caster unit Yes
SR_Duration real Yes
SR_Group group Yes
SR_Index integer Yes
SR_Loc location Yes
SR_Projectile unit Yes
SR_WaitCounter real Yes
ST_Angle real No
ST_Aoe real Yes
ST_AoeBase real No
ST_AoePerLevel real No
ST_BarrierModel string No
ST_BarrierSpaceTaken real No
ST_Core unit Yes
ST_CurrentLightningEffect lightning Yes
ST_DissappearenceSFX string No
ST_DummyType unitcode No
ST_EffectScalingSpawn real No
ST_HealthPenaltyPerSecond real No
ST_Index integervar No
ST_LightningBlue real No
ST_LightningEffect string No
ST_LightningGreen real No
ST_LightningRed real No
ST_LightningZ real No
ST_MaxIndex integer No
ST_OriginalCaster unit Yes
ST_SecondaryIndex integervar No
ST_SpawnSFX string No
ST_SpecialEffect effect Yes
ST_Spell abilcode No
ST_StageID integer Yes
ST_TempGroup group No
ST_TempInteger integer No
ST_TempPoint location No
ST_TempPoint2 location No
ST_TempReal real No
ST_TempUnit unit No
ST_TempUnit2 unit No
ST_TempUnit3 unit No
ST_TempX real No
ST_TempX2 real No
ST_TempY real No
ST_TempY2 real No
ST_TempZ real No
ST_TempZ2 real No
ST_TetherDurationBase real No
ST_TetherDurationPerLevel real No
ST_TetherModel string No
ST_TriggeringHealthPercent real No
ST_UndeadDuration real Yes
ST_UndeadDurationBase real No
ST_UndeadDurationPerLevel real No
ST_UnitIDStorage unit No
ST_UnitIndex unit Yes
ST_UnitTransparency real No
Surging_Pulse_Caster_Loc location No
Surging_Pulse_Formula real No
Surging_Pulse_Location location No
Surging_Pulse_Loop integer No
Surging_Pulse_Loop_Location location No
Surging_Pulse_Owner player No
SystemPoint location Yes
SystemUnitGroup group Yes
TA_BaseChance integer No
TA_BaseDamage real No
TA_ChanceGrowth integer No
TA_DamageGrowth real No
TA_Levels integer No
TA_SFX string No
TA_ThornEffect location No
TA_ThornSpawn location No
Target_Dummy unit No
Temp_Group group No
Temp_Group_1 group No
Temp_Group_2 group No
Temp_Lightning lightning No
Temp_Loc_1 location No
Temp_Loc_2 location No
Temp_Loc_3 location No
Temp_Point location No
Temp_Point_2 location No
Temp_Real_1 real No
Temp_Real_2 real No
Temp_Real_3 real No
Temp_Unit_1 unit No
Temp_Unit_2 unit No
Temp_Unit_3 unit No
Temp_Unit_4 unit No
TempDest destructable No
TempGroup group No
TempHandle handle No
TempInteger integer No
TempLoc location No
TempPoint location No
TempPoint2 location No
TempPoint3 location No
temppointnature location No
tempSESSpecialEffect effect No
tempSESTimer real No
TempUnit unit No
TempUnit2 unit No
Thorn_Dummy unit No
TK_AttackType attacktype No
TK_DamageType damagetype No
TK_FlyingUnits group No
TK_FSpeed real Yes
TK_HDmgInPercIncreasement real No
TK_HDmgInPercStart real No
TK_Hero unit Yes
TK_ImpactDmgIncreasement real No
TK_ImpactDmgStart real No
TK_ImpactSFX string No
TK_Integers integer Yes
TK_Interval real Yes
TK_Level integer Yes
TK_LiftSFX string No
TK_LiftSFXTimer real No
TK_LsfxT real Yes
TK_MaxHeight real Yes
TK_MaxHeightIncreasement real No
TK_MaxHeightStart real No
TK_MinHeightIncreasement real No
TK_MinHeightStart real No
TK_Pause boolean No
TK_Speed real No
TK_SpeedVariationPerc real No
TK_SpellAoEIncreasement real No
TK_SpellAoEStart real No
TK_StartSFX string No
TK_TempPoint location Yes
TK_Unit unit Yes
TK_UnitGroup group No
TP_A_down_height_min real No
TP_A_infinity_longs boolean Yes
TP_A_Only_Top boolean No
TP_A_Only_Top_ex boolean Yes
TP_A_Pan_Camera boolean No
TP_A_Pan_Camera_ex boolean Yes
TP_A_Pan_Camera_Time real No
TP_A_Pan_Camera_Time_ex real Yes
TP_A_player player No
TP_A_point_create location No
TP_A_point_destination location No
TP_A_size real No
TP_A_time_before_created real No
TP_A_time_closing real No
TP_A_time_life real No
TP_A_time_opening real No
TP_A_top_height_max real No
TP_A_top_height_min real No
TP_A_two_directions boolean No
TP_accelerate real No
TP_accelerate_ex real Yes
TP_angle real No
TP_angle_ex real Yes
TP_distance real No
TP_distance_current real Yes
TP_distance_max real Yes
TP_DOWN_1_effect effect Yes
TP_DOWN_2_effect effect Yes
TP_down_height_min_ex real Yes
TP_dummy_down_model string No
TP_dummy_down_model_ex string Yes
TP_dummy_down_size real No
TP_dummy_down_size_ex real Yes
TP_dummy_top_model string No
TP_dummy_top_model_ex string Yes
TP_dummy_top_size real No
TP_dummy_top_size_ex real Yes
TP_dummy_type unitcode No
TP_E_eff_constant string No
TP_E_eff_constant_ex effect Yes
TP_E_eff_constant_ex2 effect Yes
TP_E_eff_create_finish string No
TP_E_eff_create_finish_ex string Yes
TP_E_eff_create_start string No
TP_E_eff_create_start_ex string Yes
TP_E_eff_dissapear_finish string No
TP_E_eff_dissapear_finish_ex string Yes
TP_E_eff_dissapear_start string No
TP_E_eff_dissapear_start_ex string Yes
TP_E_eff_unit_move string No
TP_E_eff_unit_move2 string No
TP_E_eff_unit_move2_ex string Yes
TP_E_eff_unit_move_ex string Yes
TP_fly_height real No
TP_fly_heights real Yes
TP_get_X real Yes
TP_get_Y real Yes
TP_Go_go_missile boolean No
TP_Go_go_missile_ex boolean Yes
TP_go_X real Yes
TP_go_Y real Yes
TP_i integer Yes
TP_i_last integer No
TP_index integer No
TP_life_timer_is_expired boolean Yes
TP_loop_interval real No
TP_Max_Size integer No
TP_missile unit Yes
TP_missile_eff effect Yes
TP_missile_gfx string No
TP_missile_gfx_ex string Yes
TP_missile_scale real No
TP_missile_scale_ex real Yes
TP_move_units_now boolean Yes
TP_move_units_now_2 boolean Yes
TP_Movement_type integer No
TP_player_ex player Yes
TP_point_temp location No
TP_point_temp2 location No
TP_portal_created_ex boolean Yes
TP_Potral_Index integer Yes
TP_Potral_Number integer Yes
TP_real real No
TP_Recently_Teleported group No
TP_Recently_Teleported_time real Yes
TP_seconds_to_reach real No
TP_size_ex real Yes
TP_slow_time_factor real No
TP_slow_time_factor_ex real Yes
TP_slow_time_finished_ex boolean Yes
TP_slow_time_place real No
TP_slow_time_place_ex real Yes
TP_slow_time_started_ex boolean Yes
TP_slow_time_width real No
TP_slow_time_width_ex real Yes
TP_speed real No
TP_speed_ex real Yes
TP_speed_up real No
TP_t_activated boolean Yes
TP_t_activated_2 boolean Yes
TP_t_down unit Yes
TP_t_down2 unit Yes
TP_t_is_busy1 boolean Yes
TP_t_is_busy2 boolean Yes
TP_t_top unit Yes
TP_t_top2 unit Yes
TP_t_unbusy1 boolean Yes
TP_t_unbusy2 boolean Yes
TP_t_unbusy_timer1 real Yes
TP_t_unbusy_timer2 real Yes
TP_teleported_unit unit Yes
TP_TEMP_LOOP integer No
TP_TEMP_POINT_0 location No
TP_TEMP_POINT_1 location No
TP_TEMP_POINT_2 location No
TP_this_is_not_portal boolean Yes
TP_time_before_create_ex real Yes
TP_time_closing_ex real Yes
TP_time_life_ex real Yes
TP_time_opening_ex real Yes
TP_time_to_move real Yes
TP_time_to_move_2 real Yes
TP_TOP_1_effect effect Yes
TP_TOP_2_effect effect Yes
TP_top_height_max_ex real Yes
TP_top_height_min_ex real Yes
TP_Transparecy_down real No
TP_Transparecy_down_ex real Yes
TP_Transparecy_top real No
TP_Transparecy_top_ex real Yes
TP_turn_on boolean Yes
TP_turn_on_2 boolean Yes
TP_two_directions_ex boolean Yes
TP_x1 real Yes
TP_x2 real Yes
TP_y1 real Yes
TP_y2 real Yes
UC_Counter integer Yes
UC_Groups group Yes
UC_Inv boolean Yes
UC_SETTINGS_AreaOfEffect real Yes
UC_SETTINGS_Collosion boolean No
UC_SETTINGS_DestroyTrees_Dash boolean No
UC_SETTINGS_Invulnerable boolean No
UC_SETTINGS_Speed real No
UC_Target unit No
UC_TempPoint location Yes
UDex integer No
UDexGen integer No
UDexNext integer Yes
UDexPrev integer Yes
UDexRecycle integer No
UDexUnits unit Yes
UDexWasted integer No
UnitIndexerEnabled boolean No
UnitIndexEvent real No
VL_Ability abilcode No
VL_AbilityCurse abilcode No
VL_AbilityHeal abilcode No
VL_AoE real Yes
VL_Buff buffcode No
VL_C_Amount integer No
VL_C_Even real No
VL_C_GrowRate real Yes
VL_C_GrowTime real No
VL_C_MoveRate real Yes
VL_C_SFX string No
VL_C_Speed real No
VL_CurrentAoE real Yes
VL_Debuff buffcode No
VL_Degree real No
VL_DummyCaster unit No
VL_Duration real Yes
VL_L lightning Yes
VL_L_Amount integer No
VL_L_CheckSFX boolean Yes
VL_L_Counter real Yes
VL_L_Direction real No
VL_L_Distance real No
VL_L_Duration real No
VL_L_Height real No
VL_L_ID integer No
VL_L_SFX lightningtype No
VL_L_SFX_EndPoint string No
VL_MaxLevel integer No
VL_SFX string No
VL_TempInt integervar No
VL_TempLoc location No
VL_TempReal real No
VL_TempUnit unit No
WaterWaves group No
WhirlPools group No
WoS_Angle real Yes
WoS_AttackEffect string Yes
WoS_AttackRange real Yes
WoS_AttackTimer real Yes
WoS_Caster unit Yes
WoS_Damage real Yes
WoS_Index integer Yes
WoS_MaxSpeed real Yes
WoS_Off boolean Yes
WoS_OnAttackSpeedDecrease real Yes
WoS_ShadowEffect string Yes
WoS_ShadowEffectCreatingDelay real Yes
WoS_ShadowEffectDuration real Yes
WoS_ShadowEffectTimer real Yes
WoS_Speed real Yes
WoS_SpeedIncreasement real Yes
WoS_SpellDuration real Yes
WoS_TargetedUnit unit Yes
WS integervar No
WS_Angle real Yes
WS_Caster unit Yes
WS_CastNumber integer No
WS_Chance integer No
WS_Distance real Yes
WS_Dummie unit Yes
WS_Effect1 unit Yes
WS_Effect2 unit Yes
WS_Effect3 unit Yes
WS_Off boolean Yes
WS_Point location Yes
WS_Speed real Yes
WS_Switch integer No
zzTestReal real No
Default melee game initialization for all players
Melee Initialization
  Events
    Map initialization
  Conditions
  Actions
    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)
    Melee Game - Create starting units (for all players)
    Melee Game - Run melee AI scripts (for computer players)
    Melee Game - Enforce victory/defeat conditions (for all players)
gotest
  Events
    Player - Player 1 (Red) types a chat message containing gotest (stringnoformat) as An exact match
  Conditions
  Actions
    Cinematic - Turn cinematic mode On for (All players)
Human
  Events
    Unit - A unit Finishes an upgrade
  Conditions
    (Unit-type of (Triggering unit)) Equal to Alternate Altar of Unity
  Actions
    Unit - Change ownership of (Triggering unit) to Player 3 (Teal) and Change color
Shredder
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Self-Destruct (Goblin Sapper)
  Actions
    Special Effect - Create a special effect attached to the overhead (attachpoint) of (Triggering unit) using Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl
    Wait 3.00 seconds
    Special Effect - Destroy (Last created special effect)
Configuration
  Events
    Map initialization
  Conditions
  Actions
    -------- --------------------------------------------- --------
    -------- Store your ability id here --------
    Set VariableSet DSB_Ability_ID = Echo Toss
    -------- Store your dummy here --------
    Set VariableSet DSB_Dummy_Type = Spinning Blade - Rexxar Double Blade Spell
    Set VariableSet DSB_Dummy_Type2 = Rokhan Dummy - Rexxar Double Blade Spell
    -------- Your Dummy's animation when cast the spell --------
    Set VariableSet DSB_Dummy2_Animation = attack
    -------- Your Dummy's animation speed when play it's animation --------
    Set VariableSet DSB_Animation_Speed = 200.00
    -------- Your 2nd Dummy's expiration timer --------
    Set VariableSet DSB_Dummy2_Lifetime = 1.00
    -------- Your 2nd Dummy's color (RGB) --------
    Set VariableSet DSB_Dummy2_RED = 60.00
    Set VariableSet DSB_Dummy2_GREEN = 60.00
    Set VariableSet DSB_Dummy2_BLUE = 60.00
    -------- Your 2nd Dummy's transparency --------
    Set VariableSet DSB_Dummy2_Transparency = 60.00
    -------- Your ability's damage when it's hit enemies in the line --------
    Set VariableSet DSB_Damage[1] = 75.00
    Set VariableSet DSB_Damage[2] = 100.00
    Set VariableSet DSB_Damage[3] = 125.00
    -------- Area of Effect of the ability --------
    Set VariableSet DSB_AoE = 150.00
    -------- How far your blade travels --------
    Set VariableSet DSB_Distance = 1000.00
    -------- How far your blade spawns --------
    Set VariableSet DSB_Start_Range = 100.00
    -------- Sound Effect which will appear when your caster cast the spell. Set it to no sound if you don't want to play a sound --------
    Set VariableSet DSB_SoundEffect = HeroShadowhunterMissileLaunch1 <gen>
    -------- Special Effect which spawn when the blade hits your enemies --------
    Set VariableSet DSB_Special_Effect = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
    -------- which point your special effect will spawned at? head/chest/hand/overhead/origin, etc --------
    Set VariableSet DSB_Special_Effect_Location = chest
    -------- Yes = Will Destroy Trees / No = Won't Destroy Trees --------
    Set VariableSet DSB_Destroy_Tree = True
    -------- Do you want your shadow throw the blade back to you? if yes, set this to "True". if no, set this to "False" --------
    Set VariableSet DSB_Shadow = True
    -------- --------------------------------------------- --------
    -------- Conditions Configuration --------
    -------- --------------------------------------------- --------
    -------- Units Belongs to enemy player --------
    Set VariableSet DSB_Conditions[1] = True
    -------- Units is Alive --------
    Set VariableSet DSB_Conditions[2] = True
    -------- Units is Magic Immune --------
    Set VariableSet DSB_Conditions[3] = False
    -------- Units is a Structure --------
    Set VariableSet DSB_Conditions[4] = False
    -------- Units is in UnDamage Group (to prevent damage looping) --------
    Set VariableSet DSB_Conditions[5] = False
    -------- --------------------------------------------- --------
    -------- DO NOT CHANGE THIS (BELOW) --------
    -------- --------------------------------------------- --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        DSB_Destroy_Tree Equal to True
      Then - Actions
        Set VariableSet TempPoint = (Center of (Playable map area))
        Unit - Create 1.Peasant for Neutral Passive at TempPoint facing Default building facing degrees
        Custom script: call RemoveLocation(udg_TempPoint)
        Set VariableSet DSB_Destroyer = (Last created unit)
        Unit - Hide DSB_Destroyer
      Else - Actions
    -------- --------------------------------------------- --------
Double Spinning Blade
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to DSB_Ability_ID
  Actions
    Set VariableSet DSB_Max_Index = (DSB_Max_Index + 1)
    Set VariableSet DSB_Owner[DSB_Max_Index] = (Triggering player)
    Set VariableSet DSB_Caster[DSB_Max_Index] = (Triggering unit)
    Set VariableSet DSB_Ability_Level[DSB_Max_Index] = (Level of DSB_Ability_ID for DSB_Caster[DSB_Max_Index])
    Set VariableSet TempPoint = (Position of DSB_Caster[DSB_Max_Index])
    Set VariableSet TempPoint2 = (Target point of ability being cast)
    Set VariableSet DSB_Angle[DSB_Max_Index] = (Angle from TempPoint to TempPoint2)
    Set VariableSet TempPoint3 = (TempPoint offset by DSB_Start_Range towards DSB_Angle[DSB_Max_Index] degrees.)
    Sound - Play DSB_SoundEffect at 100% volume, located at TempPoint with Z offset 0
    Unit - Create 1.DSB_Dummy_Type for DSB_Owner[DSB_Max_Index] at TempPoint3 facing DSB_Angle[DSB_Max_Index] degrees
    Set VariableSet DSB_Dummy[DSB_Max_Index] = (Last created unit)
    Unit - Add a ((DSB_Distance x 0.03) x 0.03) second Generic expiration timer to DSB_Dummy[DSB_Max_Index]
    Set VariableSet DSB_Shdow[DSB_Max_Index] = True
    Set VariableSet DSB_Stage[DSB_Max_Index] = 1
    Custom script: set udg_DSB_UnDamage_Group[udg_DSB_Max_Index] = CreateGroup()
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        DSB_Max_Index Equal to 1
      Then - Actions
        Trigger - Turn on DSB_Loop <gen>
      Else - Actions
    Custom script: call RemoveLocation(udg_TempPoint)
    Custom script: call RemoveLocation(udg_TempPoint2)
    Custom script: call RemoveLocation(udg_TempPoint3)
DSB Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer DSB_Current_Index) from 1 to DSB_Max_Index, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            DSB_Stage[DSB_Current_Index] Equal to 1
          Then - Actions
            Set VariableSet TempPoint = (Position of DSB_Dummy[DSB_Current_Index])
            Set VariableSet TempPoint2 = (TempPoint offset by (DSB_Distance x 0.03) towards DSB_Angle[DSB_Current_Index] degrees.)
            Unit - Move DSB_Dummy[DSB_Current_Index] instantly to TempPoint2
            Set VariableSet DSB_Damage_Group = (Units within DSB_AoE of TempPoint.)
            Unit Group - Pick every unit in DSB_Damage_Group and do (Actions)
              Loop - Actions
                Set VariableSet TempUnit = (Picked unit)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (TempUnit belongs to an enemy of DSB_Owner[DSB_Current_Index].) Equal to DSB_Conditions[1]
                    (TempUnit is alive) Equal to DSB_Conditions[2]
                    (TempUnit is Magic Immune) Equal to DSB_Conditions[3]
                    (TempUnit is A structure) Equal to DSB_Conditions[4]
                    (TempUnit is in DSB_UnDamage_Group[DSB_Current_Index].) Equal to DSB_Conditions[5]
                  Then - Actions
                    Unit - Cause DSB_Caster[DSB_Current_Index] to damage TempUnit, dealing DSB_Damage[DSB_Ability_Level[DSB_Current_Index]] damage of attack type Spells and damage type Normal
                    Special Effect - Create a special effect attached to the DSB_Special_Effect_Location of TempUnit using DSB_Special_Effect
                    Special Effect - Destroy (Last created special effect)
                    Unit Group - Add TempUnit to DSB_UnDamage_Group[DSB_Current_Index]
                  Else - Actions
            Custom script: call DestroyGroup(udg_DSB_Damage_Group)
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                DSB_Destroy_Tree Equal to True
              Then - Actions
                Destructible - Pick every destructible within DSB_AoE of TempPoint and do (Actions)
                  Loop - Actions
                    Set VariableSet TempDest = (Picked destructible)
                    Unit - Order DSB_Destroyer to Harvest.TempDest
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Current order of DSB_Destroyer) Equal to (Order(harvest))
                      Then - Actions
                        Destructible - Kill TempDest
                      Else - Actions
                    Unit - Order DSB_Destroyer to Stop.
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (DSB_Dummy[DSB_Current_Index] is dead) Equal to True
              Then - Actions
                Custom script: call DestroyGroup(udg_DSB_UnDamage_Group[udg_DSB_Current_Index])
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    DSB_Shdow[DSB_Current_Index] Equal to True
                  Then - Actions
                    Custom script: set udg_DSB_UnDamage_Group[udg_DSB_Max_Index] = CreateGroup()
                    Set VariableSet DSB_Stage[DSB_Current_Index] = 2
                    Set VariableSet TempPoint2 = (Position of DSB_Caster[DSB_Current_Index])
                    Unit - Create 1 DSB_Dummy_Type2 for DSB_Owner[DSB_Current_Index] at TempPoint facing TempPoint2
                    Set VariableSet DSB_Dummy2[DSB_Current_Index] = (Last created unit)
                    Unit - Add a DSB_Dummy2_Lifetime second Generic expiration timer to DSB_Dummy2[DSB_Current_Index]
                    Animation - Change DSB_Dummy2[DSB_Current_Index]'s animation speed to DSB_Animation_Speed% of its original speed
                    Animation - Change DSB_Dummy2[DSB_Current_Index]'s vertex coloring to (DSB_Dummy2_RED%, DSB_Dummy2_GREEN%, DSB_Dummy2_BLUE%) with DSB_Dummy2_Transparency% transparency
                    Animation - Play DSB_Dummy2[DSB_Current_Index]'s DSB_Dummy2_Animation animation
                    Set VariableSet TempPoint = (Position of DSB_Dummy2[DSB_Current_Index])
                    Set VariableSet DSB_Angle[DSB_Current_Index] = (Angle from TempPoint to TempPoint2)
                    Custom script: call RemoveLocation(udg_TempPoint2)
                    Set VariableSet TempPoint3 = (TempPoint offset by DSB_Start_Range towards DSB_Angle[DSB_Current_Index] degrees.)
                    Unit - Remove DSB_Dummy[DSB_Current_Index] from the game
                    Unit - Create 1.DSB_Dummy_Type for DSB_Owner[DSB_Current_Index] at TempPoint3 facing DSB_Angle[DSB_Current_Index] degrees
                    Set VariableSet DSB_Dummy[DSB_Current_Index] = (Last created unit)
                    Unit - Add a ((DSB_Distance x 0.03) x 0.03) second Generic expiration timer to DSB_Dummy[DSB_Current_Index]
                    Custom script: call RemoveLocation(udg_TempPoint)
                    Custom script: call RemoveLocation(udg_TempPoint3)
                  Else - Actions
                    Unit - Remove DSB_Dummy[DSB_Current_Index] from the game
                    Set VariableSet DSB_Shdow[DSB_Current_Index] = DSB_Shdow[DSB_Max_Index]
                    Set VariableSet DSB_Dummy[DSB_Current_Index] = DSB_Dummy[DSB_Max_Index]
                    Set VariableSet DSB_Dummy[DSB_Max_Index] = No unit
                    Set VariableSet DSB_Caster[DSB_Current_Index] = DSB_Caster[DSB_Max_Index]
                    Set VariableSet DSB_Caster[DSB_Max_Index] = No unit
                    Set VariableSet DSB_Angle[DSB_Current_Index] = DSB_Angle[DSB_Max_Index]
                    Set VariableSet DSB_Angle[DSB_Max_Index] = 0.00
                    Set VariableSet DSB_Ability_Level[DSB_Current_Index] = DSB_Ability_Level[DSB_Max_Index]
                    Set VariableSet DSB_Ability_Level[DSB_Max_Index] = 0
                    Set VariableSet DSB_Stage[DSB_Current_Index] = DSB_Stage[DSB_Max_Index]
                    Set VariableSet DSB_Stage[DSB_Max_Index] = 0
                    Set VariableSet DSB_Current_Index = (DSB_Current_Index - 1)
                    Set VariableSet DSB_Max_Index = (DSB_Max_Index - 1)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        DSB_Max_Index Equal to 0
                      Then - Actions
                        Trigger - Turn off (This trigger)
                      Else - Actions
              Else - Actions
            Custom script: call RemoveLocation(udg_TempPoint)
            Custom script: call RemoveLocation(udg_TempPoint2)
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                DSB_Stage[DSB_Current_Index] Equal to 2
              Then - Actions
                Set VariableSet TempPoint = (Position of DSB_Dummy[DSB_Current_Index])
                Set VariableSet TempPoint2 = (TempPoint offset by (DSB_Distance x 0.03) towards DSB_Angle[DSB_Current_Index] degrees.)
                Unit - Move DSB_Dummy[DSB_Current_Index] instantly to TempPoint2
                Set VariableSet DSB_Damage_Group = (Units within DSB_AoE of TempPoint.)
                Unit Group - Pick every unit in DSB_Damage_Group and do (Actions)
                  Loop - Actions
                    Set VariableSet TempUnit = (Picked unit)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (TempUnit belongs to an enemy of DSB_Owner[DSB_Current_Index].) Equal to DSB_Conditions[1]
                        (TempUnit is alive) Equal to DSB_Conditions[2]
                        (TempUnit is Magic Immune) Equal to DSB_Conditions[3]
                        (TempUnit is A structure) Equal to DSB_Conditions[4]
                        (TempUnit is in DSB_UnDamage_Group[DSB_Current_Index].) Equal to DSB_Conditions[5]
                      Then - Actions
                        Unit - Cause DSB_Caster[DSB_Current_Index] to damage TempUnit, dealing DSB_Damage[DSB_Ability_Level[DSB_Current_Index]] damage of attack type Spells and damage type Normal
                        Special Effect - Create a special effect attached to the DSB_Special_Effect_Location of TempUnit using DSB_Special_Effect
                        Special Effect - Destroy (Last created special effect)
                        Unit Group - Add TempUnit to DSB_UnDamage_Group[DSB_Current_Index]
                      Else - Actions
                Custom script: call DestroyGroup(udg_DSB_Damage_Group)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    DSB_Destroy_Tree Equal to True
                  Then - Actions
                    Destructible - Pick every destructible within DSB_AoE of TempPoint and do (Actions)
                      Loop - Actions
                        Set VariableSet TempDest = (Picked destructible)
                        Unit - Order DSB_Destroyer to Harvest.TempDest
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Current order of DSB_Destroyer) Equal to (Order(harvest))
                          Then - Actions
                            Destructible - Kill TempDest
                          Else - Actions
                        Unit - Order DSB_Destroyer to Stop.
                  Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (DSB_Dummy[DSB_Current_Index] is dead) Equal to True
                  Then - Actions
                    Set VariableSet DSB_Shdow[DSB_Current_Index] = False
                    Set VariableSet DSB_Stage[DSB_Current_Index] = 1
                  Else - Actions
                Custom script: call RemoveLocation(udg_TempPoint)
                Custom script: call RemoveLocation(udg_TempPoint2)
              Else - Actions
Note:

You must copy the variable and one action from initalization to your map, else knock back won't work!

Variable and action are:
Create hashtable
Knockback table
Beast Attack
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Empowered Slice
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Beast_Attack_Caster = (Triggering unit)
    Set VariableSet Beast_Attack_Target = (Target unit of ability being cast)
    Set VariableSet Beast_Attack_Ability_Level = (Level of (Ability being cast) for Beast_Attack_Caster)
    Set VariableSet Beast_Attack_Location = (Position of Beast_Attack_Caster)
    Set VariableSet Beast_Attack_Location2 = (Position of Beast_Attack_Target)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the Spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Beast_Attack_Max_Life = (Max life of Beast_Attack_Caster)
    Set VariableSet Beast_Attack_Damage_Splitter = 8
    Set VariableSet Beast_Attack_Atribute = (Strength of Beast_Attack_Caster (Include bonuses))
    Set VariableSet Beast_Attack_Life_Damage = (Beast_Attack_Max_Life / (Real(Beast_Attack_Damage_Splitter)))
    Set VariableSet Beast_Attack_Atribute_Damage = ((Real(Beast_Attack_Atribute)) x (Real(Beast_Attack_Ability_Level)))
    Set VariableSet Beast_Attack_Total_Damage = (Beast_Attack_Life_Damage + Beast_Attack_Atribute_Damage)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Knockback Setings --------
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Damaging the target --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit - Cause Beast_Attack_Caster to damage Beast_Attack_Target, dealing Beast_Attack_Total_Damage damage of attack type Spells and damage type Unknown
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating nice special effect --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect attached to the hand, left (attachpoint) of Beast_Attack_Caster using units\human\phoenix\phoenix.mdl
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect attached to the hand, right (attachpoint) of Beast_Attack_Caster using units\human\phoenix\phoenix.mdl
    Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Crreating Floating Text --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Floating Text - Create floating text that reads ((String((Integer(Beast_Attack_Total_Damage)))) + !) above Beast_Attack_Caster with Z offset 0, using font size 10, color (100.00%, 5.00%, 5.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 5.00 seconds
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_Beast_Attack_Location)
    Custom script: call RemoveLocation(udg_Beast_Attack_Location2)
Earth Fury
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Earth Fury
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Earth_Fury_Caster = (Triggering unit)
    Set VariableSet Earth_Fury_Owner = (Owner of Earth_Fury_Caster)
    Set VariableSet Earth_Fury_Location = (Position of Earth_Fury_Caster)
    Set VariableSet Earth_Fury_Ability_Level = (Level of (Ability being cast) for Earth_Fury_Caster)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the Spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Earth_Fury_Dummy_Ability = Earth Fury(dummy)
    Set VariableSet Earth_Fury_Dummy_Ability_2 = Earth Fury(dummy frenzy)
    Set VariableSet Earth_Fury_Chance = 45.00
    Set VariableSet Earth_Fury_Base_Damage = 50.00
    Set VariableSet Earth_Fury_Bonus_Damage = 75.00
    Set VariableSet Earth_Fury_Total_Damage = (Earth_Fury_Base_Damage + (Earth_Fury_Bonus_Damage x (Real(Earth_Fury_Ability_Level))))
    Set VariableSet Earth_Fury_Base_Area_of_Effect = 125.00
    Set VariableSet Earth_Fury_AoE_Bouns = 75.00
    Set VariableSet Earth_Fury_Total_Area_of_Effec = (Earth_Fury_Base_Area_of_Effect + (Earth_Fury_AoE_Bouns x (Real(Earth_Fury_Ability_Level))))
    Set VariableSet Earth_Fury_Damage_Group = (Units within Earth_Fury_Total_Area_of_Effec of Earth_Fury_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 Earth_Fury_Owner.) Equal to True))).)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- If/Then/Else checks for a chance --------
    -------- ------------------------------------------------------------------------------------------------- --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Random real number between 1.00 and 100.00) Less than or equal to Earth_Fury_Chance
      Then - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating and setting the dummy unit --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Create 1.Dummy for Earth_Fury_Owner at Earth_Fury_Location facing Default building facing degrees
        Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
        Unit - Add Earth_Fury_Dummy_Ability to (Last created unit)
        Unit - Set level of Earth_Fury_Dummy_Ability for (Last created unit) to Earth_Fury_Ability_Level
        Unit - Order (Last created unit) to Night Elf Warden - Fan Of Knives.
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating and setting the dummy unit --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Create 1.Dummy(Earth Fury) for Earth_Fury_Owner at Earth_Fury_Location facing Default building facing degrees
        Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
        Unit - Add Earth_Fury_Dummy_Ability_2 to (Last created unit)
        Unit - Set level of Earth_Fury_Dummy_Ability_2 for (Last created unit) to Earth_Fury_Ability_Level
        Unit - Order (Last created unit) to Undead Necromancer - Unholy Frenzy.Earth_Fury_Caster
      Else - Actions
    Unit Group - Pick every unit in Earth_Fury_Damage_Group and do (Actions)
      Loop - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Damaging the Arera and creating special effect --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Cause Earth_Fury_Caster to damage (Picked unit), dealing Earth_Fury_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\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
        Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating nice special effect --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect at Earth_Fury_Location using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect at Earth_Fury_Location using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect at Earth_Fury_Location using Doodads\LordaeronSummer\Terrain\LoardaeronRockChunks\LoardaeronRockChunks0.mdl
    Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_Earth_Fury_Location)
    Custom script: call DestroyGroup(udg_Earth_Fury_Damage_Group)
Hastable for CE
  Events
    Map initialization
  Conditions
  Actions
    Hashtable - Create a hashtable
    Set VariableSet CE_Knocktable = (Last created hashtable)
Cutting Edge
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Cutting Edge
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet CE_Caster = (Triggering unit)
    Set VariableSet CE_Location = (Position of CE_Caster)
    Set VariableSet CE_Location2 = (Target point of ability being cast)
    Set VariableSet CE_Ability_Level = (Level of (Ability being cast) for CE_Caster)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet CE_Base_Damage = 10.00
    Set VariableSet CE_Total_Damage = (CE_Base_Damage x (Real(CE_Ability_Level)))
    Set VariableSet CE_Area_of_Effect = 200.00
    Set VariableSet CE_Destroy_Trees = True
    -------- Set pathing to False, if you want your hero to move trough cliffs and doodads, note you can go off map, which could cause bugs, so I suggest you leave it to True --------
    Set VariableSet CE_Pathing_On = True
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Knockback Setings --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Special Effect - Create a special effect attached to the weapon (attachpoint) of CE_Caster using Abilities\Spells\Items\OrbCorruption\OrbCorruptionSpecialArt.mdl
    Set VariableSet CE_Special_Effect = (Last created special effect)
    Special Effect - Create a special effect attached to the weapon (attachpoint) of CE_Caster using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
    Set VariableSet CE_Special_Effect1 = (Last created special effect)
    Set VariableSet CE_Knock_Angle = (Angle from CE_Location to CE_Location2)
    Set VariableSet CE_Knock_Speed = 50.00
    Set VariableSet CE_Knock_Distance = 900.00
    Hashtable - Save CE_Knock_Angle as (Key angle.) of (Key (Triggering unit).) in CE_Knocktable.
    Hashtable - Save CE_Knock_Speed as (Key speed.) of (Key (Triggering unit).) in CE_Knocktable.
    Hashtable - Save CE_Knock_Distance as (Key distance.) of (Key (Triggering unit).) in CE_Knocktable.
    Hashtable - Save Handle OfCE_Caster as (Key caster.) of (Key (Triggering unit).) in CE_Knocktable.
    Hashtable - Save Handle OfCE_Special_Effect as (Key sfx.) of (Key (Triggering unit).) in CE_Knocktable.
    Hashtable - Save Handle OfCE_Special_Effect1 as (Key sfx1.) of (Key (Triggering unit).) in CE_Knocktable.
    Animation - Change CE_Caster's animation speed to 1500.00% of its original speed
    Unit - Turn collision for CE_Caster Off.
    Unit Group - Add CE_Caster to CE_Knock_Group
    Trigger - Turn on Cutting_Edge_Knock <gen>
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Clearing leaks --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_CE_Location)
    Custom script: call RemoveLocation(udg_CE_Location2)
Cutting Edge Knock
  Events
    Time - Every 0.06 seconds of game time
  Conditions
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Leave this actions as they are/// You can add change special effects but that's it --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit Group - Pick every unit in CE_Knock_Group and do (Actions)
      Loop - Actions
        Set VariableSet CE_Knock_Angle = (Load (Key angle.) of (Key (Picked unit).) from CE_Knocktable.)
        Set VariableSet CE_Knock_Speed = (Load (Key speed.) of (Key (Picked unit).) from CE_Knocktable.)
        Set VariableSet CE_Knock_Distance = (Load (Key distance.) of (Key (Picked unit).) from CE_Knocktable.)
        Set VariableSet CE_Caster = (Load (Key caster.) of (Key (Picked unit).) in CE_Knocktable.)
        Set VariableSet CE_Special_Effect = (Load (Key sfx.) of (Key (Picked unit).) in CE_Knocktable.)
        Set VariableSet CE_Special_Effect1 = (Load (Key sfx1.) of (Key (Picked unit).) in CE_Knocktable.)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            CE_Knock_Distance Greater than 0.00
          Then - Actions
            Set VariableSet CE_Knock_Loc1 = (Position of (Picked unit))
            Set VariableSet CE_Knock_Loc2 = (CE_Knock_Loc1 offset by CE_Knock_Speed towards CE_Knock_Angle degrees.)
            Set VariableSet CE_Damage_Group = (Units within CE_Area_of_Effect of CE_Knock_Loc1 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 (Picked unit)).) Equal to True))).)
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                CE_Destroy_Trees Equal to True
              Then - Actions
                Destructible - Pick every destructible within CE_Area_of_Effect of CE_Knock_Loc1 and do (Actions)
                  Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        ((Picked destructible) is alive) Equal to True
                      Then - Actions
                        Unit - Create 1.Peasant for (Owner of (Picked unit)) at CE_Knock_Loc1 facing Default building facing degrees
                        Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                        Unit - Hide (Last created unit)
                        Unit - Order (Last created unit) to Harvest.(Picked destructible)
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Current order of (Last created unit)) Equal to (Order(harvest))
                          Then - Actions
                            Destructible - Kill (Picked destructible)
                          Else - Actions
                      Else - Actions
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                CE_Pathing_On Equal to True
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Terrain pathing at CE_Knock_Loc2 of type Walkability is off) Equal to True
                  Then - Actions
                    Unit - Turn collision for CE_Caster On.
                    Animation - Reset (Picked unit)'s animation
                    Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
                    Special Effect - Destroy CE_Special_Effect
                    Special Effect - Destroy CE_Special_Effect1
                    Custom script: call RemoveLocation(udg_CE_Knock_Loc1)
                    Custom script: call RemoveLocation(udg_CE_Knock_Loc2)
                    Hashtable - Clear all child hashtables of child (Key (Picked unit).) in CE_Knocktable.
                    Unit Group - Remove (Picked unit) from CE_Knock_Group.
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Number of units in CE_Knock_Group) Equal to 0
                      Then - Actions
                        Trigger - Turn off Cutting_Edge_Knock <gen>
                      Else - Actions
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        ((Picked unit) is dead) Equal to True
                      Then - Actions
                        Unit - Turn collision for CE_Caster On.
                        Animation - Reset (Picked unit)'s animation
                        Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
                        Special Effect - Destroy CE_Special_Effect
                        Special Effect - Destroy CE_Special_Effect1
                        Custom script: call RemoveLocation(udg_CE_Knock_Loc1)
                        Custom script: call RemoveLocation(udg_CE_Knock_Loc2)
                        Hashtable - Clear all child hashtables of child (Key (Picked unit).) in CE_Knocktable.
                        Unit Group - Remove (Picked unit) from CE_Knock_Group.
                      Else - Actions
                        Unit - Move (Picked unit) instantly to CE_Knock_Loc2
                        Unit - Make (Picked unit) face CE_Knock_Angle over 0 seconds
                        Animation - Play (Picked unit)'s attack (animationname) animation
                        Unit - Create 1.Dummy(cutting edge) for (Owner of (Picked unit)) at CE_Knock_Loc2 facing CE_Knock_Angle degrees
                        Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                        Animation - Change (Last created unit)'s vertex coloring to (100%, 100%, 100%) with 85.00% transparency
                        Animation - Change (Last created unit)'s animation speed to 200.00% of its original speed
                        Animation - Play (Last created unit)'s attack (animationname) animation
                        Unit Group - Pick every unit in CE_Damage_Group and do (Actions)
                          Loop - Actions
                            Unit - Cause CE_Caster to damage (Picked unit), dealing CE_Total_Damage damage of attack type Spells and damage type Unknown
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                (Random integer number between 1 and 100) Less than 33
                              Then - Actions
                                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
                                    Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
                                    Special Effect - Destroy (Last created special effect)
                                  Else - Actions
                                    Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                                    Special Effect - Destroy (Last created special effect)
                              Else - Actions
                        Hashtable - Save (CE_Knock_Distance - CE_Knock_Speed) as (Key distance.) of (Key (Picked unit).) in CE_Knocktable.
                        Custom script: call RemoveLocation(udg_CE_Knock_Loc1)
                        Custom script: call RemoveLocation(udg_CE_Knock_Loc2)
                        Custom script: call DestroyGroup(udg_CE_Damage_Group)
              Else - Actions
                Unit - Move (Picked unit) instantly to CE_Knock_Loc2
                Unit - Make (Picked unit) face CE_Knock_Angle over 0 seconds
                Animation - Play (Picked unit)'s attack (animationname) animation
                Unit - Create 1.Dummy(cutting edge) for (Owner of (Picked unit)) at CE_Knock_Loc2 facing CE_Knock_Angle degrees
                Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                Animation - Change (Last created unit)'s vertex coloring to (100%, 100%, 100%) with 85.00% transparency
                Animation - Change (Last created unit)'s animation speed to 200.00% of its original speed
                Animation - Play (Last created unit)'s attack (animationname) animation
                Unit Group - Pick every unit in CE_Damage_Group and do (Actions)
                  Loop - Actions
                    Unit - Cause CE_Caster to damage (Picked unit), dealing CE_Total_Damage damage of attack type Spells and damage type Unknown
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 100) Less than 33
                      Then - Actions
                        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
                            Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
                            Special Effect - Destroy (Last created special effect)
                          Else - Actions
                            Special Effect - Create a special effect attached to the chest (attachpoint) of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                            Special Effect - Destroy (Last created special effect)
                      Else - Actions
                Hashtable - Save (CE_Knock_Distance - CE_Knock_Speed) as (Key distance.) of (Key (Picked unit).) in CE_Knocktable.
                Custom script: call RemoveLocation(udg_CE_Knock_Loc1)
                Custom script: call RemoveLocation(udg_CE_Knock_Loc2)
                Custom script: call DestroyGroup(udg_CE_Damage_Group)
          Else - Actions
            Unit - Turn collision for CE_Caster On.
            Animation - Reset (Picked unit)'s animation
            Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
            Special Effect - Destroy CE_Special_Effect
            Special Effect - Destroy CE_Special_Effect1
            Hashtable - Clear all child hashtables of child (Key (Picked unit).) in CE_Knocktable.
            Unit Group - Remove (Picked unit) from CE_Knock_Group.
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Number of units in CE_Knock_Group) Equal to 0
              Then - Actions
                Trigger - Turn off Cutting_Edge_Knock <gen>
              Else - Actions
Remove Dummies
  Events
    Unit - A unit Dies
  Conditions
    (Unit-type of (Triggering unit)) Equal to Dummy(cutting edge)
  Actions
    Unit - Remove (Triggering unit) from the game
Init
  Events
    Map initialization
  Conditions
  Actions
    Set VariableSet TempPoint = (Center of (Playable map area))
    Unit - Create 1.Fade - Grom Fade Step for Neutral Passive at TempPoint facing 0.00 degrees
    Unit - Add Hidden - Grom Fade Step to (Last created unit)
    Unit - Add Fade - Grom Fade Step to (Last created unit)
    Unit - Explode (Last created unit).
    Custom script: call RemoveLocation (udg_TempPoint)
    For each (Integer A) from 1 to 12, do (Actions)
      Loop - Actions
        Player - Disable Hidden - Grom Fade Step for (Player((Integer A)))
    -------- First copy the dummy units then the buffs and abilities. After that copy the triggers and make sure it automatically generate new variables. --------
Fade Step
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Fade Step - Grom Fade Step
  Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        FSHas[FSLastRecycled] Equal to True
      Then - Actions
        Set VariableSet FSMax = (FSMax + 1)
        Set VariableSet FSIndex = FSMax
      Else - Actions
        Set VariableSet FSIndex = FSLastRecycled
        Set VariableSet FSLastRecycled = FSRecycledList[FSLastRecycled]
    Set VariableSet FSCaster[FSIndex] = (Triggering unit)
    Set VariableSet FSCasterPoint[FSIndex] = (Position of FSCaster[FSIndex])
    Set VariableSet FSDistance[FSIndex] = 0.00
    Set VariableSet FSMaxDistance[FSIndex] = (250.00 + (100.00 x (Real((Level of Fade Step - Grom Fade Step for FSCaster[FSIndex])))))
    Custom script: set udg_FSDummyGroup[udg_FSIndex] = CreateGroup()
    -------- --------------------- --------
    -------- Time needed to travel this distance. --------
    -------- --------------------- --------
    -------- If you change this don't forget to change the ability's buff duration too. --------
    -------- --------------------- --------
    Set VariableSet FSTime = 0.40
    Set VariableSet FSMove[FSIndex] = (FSMaxDistance[FSIndex] / (FSTime / 0.03))
    Set VariableSet FSFade[FSIndex] = (100.00 / (FSMaxDistance[FSIndex] / FSMove[FSIndex]))
    Set VariableSet FSFadeC[FSIndex] = (100.00 - FSFade[FSIndex])
    Set VariableSet FSFace[FSIndex] = (Facing of FSCaster[FSIndex])
    Set VariableSet FSHas[FSIndex] = True
    Set VariableSet FSCount = (FSCount + 1)
    Unit - Add Hidden - Grom Fade Step to FSCaster[FSIndex]
    Set VariableSet TempPoint = (Position of FSCaster[FSIndex])
    Unit - Create 1.Fade - Grom Fade Step for (Triggering player) at TempPoint facing FSFace[FSIndex] degrees
    Unit - Add Fade Step DUMMY - Grom Fade Step to (Last created unit)
    Unit - Order (Last created unit) to Orc Troll Berserker - Berserk.
    Set VariableSet FSDummy[FSIndex] = (Last created unit)
    Custom script: call RemoveLocation (udg_TempPoint)
    Animation - Change FSCaster[FSIndex]'s vertex coloring to (100.00%, 100.00%, 100.00%) with FSFade[FSIndex]% transparency
    Animation - Change FSDummy[FSIndex]'s vertex coloring to (100.00%, 100.00%, 100.00%) with FSFade[FSIndex]% transparency
    Animation - Change FSDummy[FSIndex]'s animation speed to 150.00% of its original speed
    Animation - Play FSDummy[FSIndex]'s slam (animationname) animation
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Fade_Step_Loop <gen> is on) Equal to False
      Then - Actions
        Trigger - Turn on Fade_Step_Loop <gen>
      Else - Actions
Fade Step Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer FSInteger) from 0 to FSMax, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            FSHas[FSInteger] Equal to True
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                FSDistance[FSInteger] Less than FSMaxDistance[FSInteger]
              Then - Actions
                Set VariableSet TempPoint = (Position of FSCaster[FSInteger])
                Set VariableSet FSDistance[FSInteger] = (FSDistance[FSInteger] + FSMove[FSInteger])
                Set VariableSet TempPoint2 = (TempPoint offset by FSMove[FSInteger] towards (FSFace[FSInteger] + 180.00) degrees.)
                Set VariableSet FSFadeC[FSInteger] = (FSFadeC[FSInteger] - FSFade[FSInteger])
                Unit - Create 1.Fade - Grom Fade Step for Neutral Passive at TempPoint facing FSFace[FSInteger] degrees
                Unit - Add Fade - Grom Fade Step to (Last created unit)
                Unit - Order (Last created unit) to Orc Blademaster - Wind Walk.
                Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
                Animation - Change FSCaster[FSInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with FSFadeC[FSInteger]% transparency
                Animation - Change FSDummy[FSInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with FSFadeC[FSInteger]% transparency
                Set VariableSet TempGroup = (Units within 125.00 of TempPoint2 matching ((((Matching unit) is A flying unit) Equal to False) and (((Matching unit) Not equal to FSCaster[FSInteger]) and (((Matching unit) is alive) Equal to True))).)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (TempGroup is empty) Equal to True
                  Then - Actions
                    Unit - Move FSCaster[FSInteger] instantly to TempPoint2
                  Else - Actions
                    Unit - Turn collision for FSCaster[FSInteger] Off.
                    Unit - Move FSCaster[FSInteger] instantly to TempPoint2
                    Unit - Turn collision for FSCaster[FSInteger] On.
                Unit - Move FSDummy[FSInteger] instantly to TempPoint2
                Custom script: call DestroyGroup(udg_TempGroup)
                Custom script: call RemoveLocation (udg_TempPoint)
                Custom script: call RemoveLocation (udg_TempPoint2)
              Else - Actions
                Unit - Remove Hidden - Grom Fade Step from FSCaster[FSIndex]
                Unit Group - Pick every unit in FSDummyGroup[FSInteger] and do (Remove (Picked unit) from the game)
                Custom script: call DestroyGroup(udg_FSDummyGroup[udg_FSInteger])
                Unit - Remove FSDummy[FSInteger] from the game
                Custom script: call RemoveLocation (udg_FSCasterPoint[udg_FSInteger])
                Animation - Change FSCaster[FSInteger]'s animation speed to 100.00% of its original speed
                Animation - Change FSCaster[FSInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                Animation - Play FSCaster[FSInteger]'s stand (animationname) animation
                Set VariableSet FSHas[FSInteger] = False
                Set VariableSet FSCount = (FSCount - 1)
                Set VariableSet FSRecycledList[FSInteger] = FSLastRecycled
                Set VariableSet FSLastRecycled = FSInteger
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    FSCount Equal to 0
                  Then - Actions
                    Set VariableSet FSMax = 0
                    Set VariableSet FSLastRecycled = 0
                    Set VariableSet FSRecycledList[0] = 0
                    Trigger - Turn off (This trigger)
                  Else - Actions
          Else - Actions
===========================================================================
Hello,
Here's a simple MUI spell for everyone. This increases the agility of a hero for a period of time.
At the start of the spell, a percentage of the given amount of agility damages the sorounding melee units around the casting hero.
Copy the triggers and the variables into your map.
Do not forget to give credits to me if you use this in your map.

Thanks you,

eubz.
============================================================================
Set these:
AgileConfig
  Events
    Map initialization
  Conditions
  Actions
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- You can modify the integers here --------
    -------- To get how much time is used for the spell, multiply RTime by the level of the ability. --------
    -------- Also, to get the amount of agility, multiply RAmount by the level of the ability. --------
    -------- It is simple: --------
    -------- Time = RTime x Level of the Ability being cast --------
    -------- Agility = RAmount x Level of the Ability being cast --------
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- ------------------------------------------------------------------------------------------------------------ --------
    Set VariableSet AgileAbility = Agile
    -------- ------------------------------------------------------------------------------------------------------------ --------
    Set VariableSet AgileRTime = 5
    Set VariableSet AgileRAmount = 25
    Set VariableSet AgileDamagePercent = 4.00
    Set VariableSet AgileDamageSize = 300
    -------- ------------------------------------------------------------------------------------------------------------ --------
    Set VariableSet AgileSFX1 = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
    Set VariableSet AgileSFX1_AP = origin
    Set VariableSet AgileSFX2 = Abilities\Spells\Human\InnerFire\InnerFireTarget.mdl
    Set VariableSet AgileSFX2_AP = overhead
    Set VariableSet AgileSFX3 = Abilities\Weapons\GlaiveMissile\GlaiveMissileTarget.mdl
    Set VariableSet AgileSFX3_Ap = origin
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- Divide the given agility by the DamagePercent to get the damage dealt to the sorrounding melee units --------
    -------- Damage size is the Area of Effect multiplied by the level of the level of Agile --------
    -------- //////////////////////////////////////////////////////////////////////// --------

AgileAbilityCast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to AgileAbility
  Actions
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- Do not modify anything found below --------
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- counting how many are using the ability --------
    Set VariableSet Agileindex_size = (Agileindex_size + 1)
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- indexing --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Agileindex_size Greater than Agileindex_max_size
      Then - Actions
        Set VariableSet Agileindex[Agileindex_size] = Agileindex_size
        Set VariableSet Agileindex_max_size = Agileindex_size
      Else - Actions
    Set VariableSet AgileInteger = Agileindex[Agileindex_size]
    -------- done indexing --------
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- setting for the arrays --------
    Set VariableSet AgileCasters[AgileInteger] = (Triggering unit)
    Set VariableSet AgileLevel = (Level of Agile for AgileCasters[AgileInteger])
    Set VariableSet AgileAmount[AgileInteger] = (AgileRAmount x AgileLevel)
    Set VariableSet AgileTime[AgileInteger] = (AgileRTime x AgileLevel)
    Set VariableSet AgileDamage = (AgileAmount[AgileInteger] / 4)
    Set VariableSet Agile_AoE = ((Real(AgileDamageSize)) x (Real((Level of Agile for AgileCasters[AgileInteger]))))
    Set VariableSet AgileDamageArea = (Position of AgileCasters[AgileInteger])
    Set VariableSet AgileDamageEnemy = (Units within Agile_AoE of AgileDamageArea matching ((((Matching unit) belongs to an enemy of (Owner of AgileCasters[AgileInteger]).) Equal to True) and (((Matching unit) is A melee attacker) Equal to True)).)
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- The ability is given here --------
    Hero - Modify Agility of AgileCasters[AgileInteger]: Add AgileAmount[AgileInteger].
    -------- additional 1/4 damage take from the given agility. --------
    Unit Group - Pick every unit in AgileDamageEnemy and do (Actions)
      Loop - Actions
        Set VariableSet AgileEnemies = (Picked unit)
        Unit - Cause AgileCasters[AgileInteger] to damage AgileEnemies, dealing (Real(AgileDamage)) damage of attack type Spells and damage type Normal
        Special Effect - Create a special effect attached to the AgileSFX3_Ap of AgileEnemies using AgileSFX3
        Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- Also giving some special effects --------
    Special Effect - Create a special effect attached to the AgileSFX1_AP of AgileCasters[AgileInteger] using AgileSFX1
    Special Effect - Destroy (Last created special effect)
    Special Effect - Create a special effect attached to the AgileSFX2_AP of AgileCasters[AgileInteger] using AgileSFX2
    Set VariableSet AgileCasterSE[AgileInteger] = (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------------------ --------
    Custom script: call RemoveLocation(udg_AgileDamageArea)
    Custom script: call DestroyGroup(udg_AgileDamageEnemy)
    -------- turning on the cast time --------
    Trigger - Turn on AgileTime <gen>
    -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- //////////////////////////////////////////////////////////////////////// --------
AgileTime
  Events
    Time - Every 1.00 seconds of game time
  Conditions
  Actions
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- Do not modify anything found below --------
    -------- //////////////////////////////////////////////////////////////////////// --------
    -------- ------------------------------------------------------------------------------------------------------------ --------
    For each (Integer AgileLoop) from 1 to Agileindex_size, do (Actions)
      Loop - Actions
        Set VariableSet AgileInteger = Agileindex[AgileLoop]
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            AgileTime[AgileInteger] Greater than 0
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (AgileCasters[AgileInteger] is dead) Equal to True
              Then - Actions
                Hero - Modify Agility of AgileCasters[AgileInteger]: Subtract AgileAmount[AgileInteger].
                Special Effect - Destroy AgileCasterSE[AgileInteger]
                Set VariableSet Agileindex[AgileLoop] = Agileindex[Agileindex_size]
                Set VariableSet Agileindex[Agileindex_size] = AgileInteger
                Set VariableSet Agileindex_size = (Agileindex_size - 1)
                Set VariableSet AgileLoop = (AgileLoop - 1)
                If (Agileindex_size Equal to 0) then do (Turn off (This trigger)) else do (Do nothing)
              Else - Actions
                Set VariableSet AgileTime[AgileInteger] = (AgileTime[AgileInteger] - 1)
          Else - Actions
            -------- giving back the original Agility to the caster --------
            Hero - Modify Agility of AgileCasters[AgileInteger]: Subtract AgileAmount[AgileInteger].
            -------- ------------------------------------------------------------------------------------------------------------ --------
            -------- needs to destroy its Special Effects --------
            Special Effect - Destroy AgileCasterSE[AgileInteger]
            -------- ------------------------------------------------------------------------------------------------------------ --------
            -------- recycling --------
            Set VariableSet Agileindex[AgileLoop] = Agileindex[Agileindex_size]
            Set VariableSet Agileindex[Agileindex_size] = AgileInteger
            Set VariableSet Agileindex_size = (Agileindex_size - 1)
            Set VariableSet AgileLoop = (AgileLoop - 1)
            -------- ------------------------------------------------------------------------------------------------------------ --------
            -------- trigger shut off --------
            If (Agileindex_size Equal to 0) then do (Turn off (This trigger)) else do (Do nothing)
            -------- ------------------------------------------------------------------------------------------------------------ --------
    -------- //////////////////////////////////////////////////////////////////////// --------
Wind Storm A
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    And - All (Conditions) are true
      Conditions
        (Level of Wind Storm for (Casting unit)) Greater than 0
        Or - Any (Conditions) are true
          Conditions
            (Ability being cast) Equal to Cutting Edge
            (Ability being cast) Equal to Fade Step - Grom Fade Step
            (Ability being cast) Equal to Agile
  Actions
    Set VariableSet WS_Chance = (Random integer number between 1 and 2)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        WS_Chance Equal to 1
      Then - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            WS_Switch Equal to 0
          Then - Actions
            Trigger - Turn on Wind_Storm_B <gen>
          Else - Actions
        -------- -------- --------
        Set VariableSet WS_CastNumber = (WS_CastNumber + 1)
        Set VariableSet WS_Switch = (WS_Switch + 1)
        Set VariableSet WS_Off[WS_CastNumber] = True
        -------- -------- --------
        Set VariableSet WS_Caster[WS_CastNumber] = (Casting unit)
        Set VariableSet WS_Point[0] = (Position of WS_Caster[WS_CastNumber])
        -------- -------- --------
        Unit - Create 1.Effect: Arkain - Grom Wind Storm for (Owner of WS_Caster[WS_CastNumber]) at WS_Point[0] facing Default building facing degrees
        Set VariableSet WS_Effect1[WS_CastNumber] = (Last created unit)
        Unit - Add Wind Storm: Damage to (Last created unit)
        Unit - Set level of Wind Storm: Damage for (Last created unit) to (Level of Wind Storm for WS_Caster[WS_CastNumber])
        Animation - Play (Last created unit)'s spin (animationname) animation
        -------- -------- --------
        Unit - Create 1.Effect: Arkain - Grom Wind Storm for (Owner of WS_Caster[WS_CastNumber]) at WS_Point[0] facing Default building facing degrees
        Set VariableSet WS_Effect2[WS_CastNumber] = (Last created unit)
        Unit - Add Wind Storm: Damage to (Last created unit)
        Unit - Set level of Wind Storm: Damage for (Last created unit) to (Level of Wind Storm for WS_Caster[WS_CastNumber])
        Animation - Play (Last created unit)'s spin (animationname) animation
        -------- -------- --------
        Unit - Create 1.Effect: Arkain - Grom Wind Storm for (Owner of WS_Caster[WS_CastNumber]) at WS_Point[0] facing Default building facing degrees
        Set VariableSet WS_Effect3[WS_CastNumber] = (Last created unit)
        Unit - Add Wind Storm: Damage to (Last created unit)
        Unit - Set level of Wind Storm: Damage for (Last created unit) to (Level of Wind Storm for WS_Caster[WS_CastNumber])
        Animation - Play (Last created unit)'s spin (animationname) animation
        -------- -------- --------
        Set VariableSet WS_Point[1] = (WS_Point[0] offset by 600.00 towards 0 degrees.)
        -------- -------- --------
        Set VariableSet WS_Angle[WS_CastNumber] = (Angle from WS_Point[0] to WS_Point[1])
        Set VariableSet WS_Distance[WS_CastNumber] = 0.00
        Set VariableSet WS_Speed[WS_CastNumber] = 10.00
        -------- -------- --------
        Unit - Create 1.Effect: Caster - Grom Fury Peak for (Owner of WS_Caster[WS_CastNumber]) at WS_Point[0] facing Default building facing degrees
        Set VariableSet WS_Dummie[WS_CastNumber] = (Last created unit)
        -------- -------- --------
        Custom script: call RemoveLocation (udg_WS_Point[0])
        Custom script: call RemoveLocation (udg_WS_Point[1])
      Else - Actions
Wind Storm B
  Events
    Time - Every 0.02 seconds of game time
  Conditions
  Actions
    For each (Integer WS) from 1 to WS_CastNumber, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            WS_Off[WS] Equal to True
          Then - Actions
            Set VariableSet WS_Distance[WS] = (WS_Distance[WS] + WS_Speed[WS])
            Set VariableSet WS_Angle[WS] = (WS_Angle[WS] + 12.50)
            Set VariableSet WS_Point[3] = (Position of WS_Dummie[WS])
            Set VariableSet WS_Point[4] = (WS_Point[3] offset by WS_Distance[WS] towards (WS_Angle[WS] + 0.00) degrees.)
            Set VariableSet WS_Point[5] = (WS_Point[3] offset by WS_Distance[WS] towards (WS_Angle[WS] + 120.00) degrees.)
            Set VariableSet WS_Point[6] = (WS_Point[3] offset by WS_Distance[WS] towards (WS_Angle[WS] + 240.00) degrees.)
            Unit - Move WS_Effect1[WS] instantly to WS_Point[4]
            Unit - Move WS_Effect2[WS] instantly to WS_Point[5]
            Unit - Move WS_Effect3[WS] instantly to WS_Point[6]
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                WS_Distance[WS] Greater than or equal to 400.00
              Then - Actions
                Set VariableSet WS_Off[WS] = False
                Set VariableSet WS_Switch = (WS_Switch - 1)
                Unit - Explode WS_Effect1[WS].
                Unit - Explode WS_Effect2[WS].
                Unit - Explode WS_Effect3[WS].
                Unit - Explode WS_Dummie[WS].
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    WS_Switch Equal to 0
                  Then - Actions
                    Set VariableSet WS_CastNumber = 0
                    Trigger - Turn off Wind_Storm_B <gen>
                  Else - Actions
              Else - Actions
            Custom script: call RemoveLocation (udg_WS_Point[3])
            Custom script: call RemoveLocation (udg_WS_Point[4])
            Custom script: call RemoveLocation (udg_WS_Point[5])
            Custom script: call RemoveLocation (udg_WS_Point[6])
          Else - Actions
Sinister Strike
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Sinister Strike
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Getting the Spell constants --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Sinister_Strike_Caster = (Triggering unit)
    Set VariableSet Sinister_Strike_Target = (Target unit of ability being cast)
    Set VariableSet Sinister_Strike_Ability_Level = (Level of (Ability being cast) for Sinister_Strike_Caster)
    Set VariableSet Sinister_Strike_Location = (Position of Sinister_Strike_Target)
    Set VariableSet Sinister_Strike_Owner = (Owner of Sinister_Strike_Caster)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting the Spell values --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Set VariableSet Sinister_Strike_Dummy_Ability = Sinister Strike(dummy)
    Set VariableSet Sinister_Strike_Dummy_Ability2 = Sinister Strike(dummy_bonus)
    Set VariableSet Sinister_Strike_Atribute = (Agility of Sinister_Strike_Caster (Include bonuses))
    Set VariableSet Sinister_Strike_Damage_Factor = 2.00
    Set VariableSet Sinister_Strike_Total_Damage = (Sinister_Strike_Damage_Factor x ((Real(Sinister_Strike_Atribute)) x (Real(Sinister_Strike_Ability_Level))))
    Set VariableSet Sinister_Strike_Normal_Armor = (Sinister_Strike_Ability_Level + 2)
    Set VariableSet Sinister_Strike_Bonus_Armor = (Sinister_Strike_Ability_Level + 4)
    Set VariableSet Sinister_Strike_Base_Chance = 15.00
    Set VariableSet Sinister_Strike_Total_Chance = (Sinister_Strike_Base_Chance x (Real(Sinister_Strike_Ability_Level)))
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating a big special effect --------
    -------- ------------------------------------------------------------------------------------------------- --------
    For each (Integer A) from 1 to 10, do (Actions)
      Loop - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating special effect --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Special Effect - Create a special effect attached to the origin (attachpoint) of Sinister_Strike_Target using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
        Special Effect - Destroy (Last created special effect)
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Damaging the Target --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Unit - Cause Sinister_Strike_Caster to damage Sinister_Strike_Target, dealing Sinister_Strike_Total_Damage damage of attack type Spells and damage type Unknown
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Checking for a chance --------
    -------- ------------------------------------------------------------------------------------------------- --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Random real number between 1.00 and 100.00) Less than or equal to Sinister_Strike_Total_Chance
      Then - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating and setting the dummy --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Create 1.Dummy for Sinister_Strike_Owner at Sinister_Strike_Location facing Default building facing degrees
        Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
        Unit - Add Sinister_Strike_Dummy_Ability2 to (Last created unit)
        Unit - Set level of Sinister_Strike_Dummy_Ability for (Last created unit) to Sinister_Strike_Ability_Level
        Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb.Sinister_Strike_Target
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating special effect --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Special Effect - Create a special effect attached to the origin (attachpoint) of Sinister_Strike_Target using units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
        Special Effect - Destroy (Last created special effect)
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating floating text --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Floating Text - Create floating text that reads ((String((Integer(Sinister_Strike_Total_Damage)))) + ( / - + ((String(Sinister_Strike_Bonus_Armor)) + !))) above Sinister_Strike_Target with Z offset 0, using font size 10, color (40.00%, 0.00%, 50.00%), and 0% transparency
      Else - Actions
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating and setting the dummy --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Unit - Create 1.Dummy for Sinister_Strike_Owner at Sinister_Strike_Location facing Default building facing degrees
        Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
        Unit - Add Sinister_Strike_Dummy_Ability to (Last created unit)
        Unit - Set level of Sinister_Strike_Dummy_Ability for (Last created unit) to Sinister_Strike_Ability_Level
        Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb.Sinister_Strike_Target
        -------- ------------------------------------------------------------------------------------------------- --------
        -------- Creating floating text --------
        -------- ------------------------------------------------------------------------------------------------- --------
        Floating Text - Create floating text that reads ((String((Integer(Sinister_Strike_Total_Damage)))) + ( / - + ((String(Sinister_Strike_Normal_Armor)) + !))) above Sinister_Strike_Target with Z offset 0, using font size 10, color (40.00%, 0.00%, 50.00%), and 0% transparency
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Setting floating text --------
    -------- ------------------------------------------------------------------------------------------------- --------
    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 5.00 seconds
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Creating floating text --------
    -------- ------------------------------------------------------------------------------------------------- --------
    Custom script: call RemoveLocation(udg_Sinister_Strike_Location)
Shadow Drain Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Shadow Drain
  Actions
    -------- - - - - - - - - - - - --------
    -------- DO NOT CHANGE --------
    -------- - - - - - - - - - - - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        SD_Index[2] Less than or equal to 0
      Then - Actions
        Trigger - Turn on Shadow_Drain_Loop <gen>
      Else - Actions
    Set VariableSet SD_Index[1] = (SD_Index[1] + 1)
    Set VariableSet SD_Index[2] = (SD_Index[2] + 1)
    Set VariableSet SD_Off[SD_Index[1]] = False
    -------- - - - - - - - - - - - --------
    -------- DO NOT CHANGE --------
    -------- - - - - - - - - - - - --------
    Set VariableSet SystemPoint[0] = (Position of (Triggering unit))
    Set VariableSet SystemPoint[1] = (Position of (Target unit of ability being cast))
    Set VariableSet SD_Caster[SD_Index[1]] = (Triggering unit)
    Set VariableSet SD_TargetedUnit[SD_Index[1]] = (Target unit of ability being cast)
    Set VariableSet SD_Timer[SD_Index[1]] = 0.00
    Lightning - Create a Finger of Death lightning effect from source SystemPoint[0] to target SystemPoint[1]
    Set VariableSet SD_LightningEffect[SD_Index[1]] = (Last created lightning effect)
    Lightning - Change color of SD_LightningEffect[SD_Index[1]] to (0.00 0.00 1.00) with 1 alpha
    -------- - - - - - - - - - - - --------
    -------- CHANGE TO WHAT YOU WANT --------
    -------- - - - - - - - - - - - --------
    -------- THIS IS THE EFFECT THAT WILL APPEAR WHEN THIS SPELL DEALS DAMAGE --------
    Set VariableSet SD_DamageEffect[SD_Index[1]] = Abilities\Spells\Orc\FeralSpirit\feralspiritdone.mdl
    -------- THIS IS THE MAXIMUM DISTANCE THE CASTER AND THE TARGETING UNIT CAN BE TO EACHOTHER --------
    -------- IF THE CASTING UNIT AND THE TARGETED UNIT HAVE A DISTANCE MORE THEN THIS VALUE FROM --------
    -------- EACHOTHER THE SPELL WILL BREAK --------
    Set VariableSet SD_MaxDistance[SD_Index[1]] = 1200.00
    -------- THE AMOUNT OF DAMAGE THE SPELL WILL DO WHEN THE DURATION OF THE SPELL SUCCEED --------
    Set VariableSet SD_Damage[SD_Index[1]] = (250.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))
    -------- TIME IT WILL HAVE TO TAKE FOR THE SPELL TO "LOAD" UNTIL IT DEALS DAMAGE TO THE TARGETED UNIT --------
    Set VariableSet SD_TimeToDoDamage[SD_Index[1]] = 10.00
    -------- - - - - - - - - - - - --------
    -------- REMOVE LEAKS --------
    -------- - - - - - - - - - - - --------
    Custom script: call RemoveLocation(udg_SystemPoint[0])
    Custom script: call RemoveLocation(udg_SystemPoint[1])
Shadow Drain Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer SD_Index[3]) from 1 to SD_Index[1], do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            SD_Off[SD_Index[3]] Equal to False
          Then - Actions
            -------- - - - - - - - - - - - --------
            -------- CALCULATES THE TIME UNTIL THE SPELL WILL DEAL DAMAGE --------
            -------- - - - - - - - - - - - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                SD_Timer[SD_Index[3]] Greater than or equal to SD_TimeToDoDamage[SD_Index[3]]
              Then - Actions
                -------- - - - - - - - - - - - --------
                -------- CREATE EFFECT AND DAMAGE THE TARGETED UNIT --------
                -------- - - - - - - - - - - - --------
                Special Effect - Create a special effect attached to the origin (attachpoint) of SD_TargetedUnit[SD_Index[3]] using SD_DamageEffect[SD_Index[3]]
                Special Effect - Destroy (Last created special effect)
                Unit - Cause SD_Caster[SD_Index[3]] to damage SD_TargetedUnit[SD_Index[3]], dealing SD_Damage[SD_Index[3]] damage of attack type Spells and damage type Normal
                Animation - Change SD_TargetedUnit[SD_Index[3]]'s vertex coloring to (100%, 100%, 100%) with 0.00% transparency
                Set VariableSet SD_Off[SD_Index[3]] = True
                Set VariableSet SD_Index[2] = (SD_Index[2] - 1)
                Lightning - Destroy SD_LightningEffect[SD_Index[3]]
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    SD_Index[2] Less than or equal to 0
                  Then - Actions
                    Set VariableSet SD_Index[1] = 0
                    Trigger - Turn off Shadow_Drain_Loop <gen>
                  Else - Actions
              Else - Actions
                -------- - - - - - - - - - - - --------
                -------- CHANGES THE VISIBILITY EFFECT FOR THE TARGETED UNIT --------
                -------- - - - - - - - - - - - --------
                Animation - Change SD_TargetedUnit[SD_Index[3]]'s vertex coloring to (100%, 100%, 100%) with (SD_Timer[SD_Index[3]] x (100.00 / SD_TimeToDoDamage[SD_Index[3]]))% transparency
                -------- - - - - - - - - - - - --------
                -------- INCREASE THE TIMER AND SET LOCATIONS FOR THE SPELL --------
                -------- - - - - - - - - - - - --------
                Set VariableSet SD_Timer[SD_Index[3]] = (SD_Timer[SD_Index[3]] + 0.03)
                Set VariableSet SystemPoint[0] = (Position of SD_Caster[SD_Index[3]])
                Set VariableSet SystemPoint[1] = (Position of SD_TargetedUnit[SD_Index[3]])
                -------- - - - - - - - - - - - --------
                -------- CHECKS IF THE DISTANCE FROM THE CASTING UNIT AND THE TARGETED UNIT IS LONGER THAN MAXDISTANCE --------
                -------- ASLO CHECKS IF ONE OF THE UNITS IS DEAD --------
                -------- IF IT IS, THE SPELL WILL BREAK --------
                -------- - - - - - - - - - - - --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    Or - Any (Conditions) are true
                      Conditions
                        (Distance between SystemPoint[0] and SystemPoint[1]) Greater than or equal to SD_MaxDistance[SD_Index[3]]
                        (SD_Caster[SD_Index[3]] is alive) Equal to False
                        (SD_TargetedUnit[SD_Index[3]] is alive) Equal to False
                  Then - Actions
                    Animation - Change SD_TargetedUnit[SD_Index[3]]'s vertex coloring to (100%, 100%, 100%) with 0.00% transparency
                    Set VariableSet SD_Off[SD_Index[3]] = True
                    Set VariableSet SD_Index[2] = (SD_Index[2] - 1)
                    Lightning - Destroy SD_LightningEffect[SD_Index[3]]
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        SD_Index[2] Less than or equal to 0
                      Then - Actions
                        Set VariableSet SD_Index[1] = 0
                        Trigger - Turn off Shadow_Drain_Loop <gen>
                      Else - Actions
                  Else - Actions
                    -------- - - - - - - - - - - - --------
                    -------- CHANGES THE POSITION OF THE LIGHTNING EFFECT, THIS IS A SMALL CUSTOM SCRIPT (JASS) AND SHOULD NOT BE EDITED. --------
                    -------- - - - - - - - - - - - --------
                    Custom script: call MoveLightningEx(udg_SD_LightningEffect[udg_SD_Index[3]], true,GetLocationX(udg_SystemPoint[0]), GetLocationY(udg_SystemPoint[0]), 50, GetLocationX(udg_SystemPoint[1]), GetLocationY(udg_SystemPoint[1]), 50)
                -------- - - - - - - - - - - - --------
                -------- REMOVE LEAKS --------
                -------- - - - - - - - - - - - --------
                Custom script: call RemoveLocation(udg_SystemPoint[0])
                Custom script: call RemoveLocation(udg_SystemPoint[1])
          Else - Actions
Soul Tether Configuration
  Events
    Map initialization
  Conditions
  Actions
    -------- -------- --------
    -------- Determines the percentage of health needed to take control of a soul --------
    Set VariableSet ST_TriggeringHealthPercent = 20.00
    -------- Determines the area that the Tether will revive/hold units --------
    Set VariableSet ST_AoeBase = 200.00
    Set VariableSet ST_AoePerLevel = 50.00
    -------- Determines how much "space" in the barrier each rune reprisents --------
    -------- Decrease - More Barrier Segments, Increase - Fewer Barrier Segments --------
    Set VariableSet ST_BarrierSpaceTaken = 10.00
    -------- Determines how transparent a revived unit is --------
    Set VariableSet ST_UnitTransparency = 75.00
    -------- Determines how much damage a unit takes when the tether is gone/they leave the range of the tether --------
    Set VariableSet ST_HealthPenaltyPerSecond = 250.00
    -------- Determines how long the Tether will last for (seconds) --------
    Set VariableSet ST_TetherDurationBase = 10.00
    Set VariableSet ST_TetherDurationPerLevel = 5.00
    -------- Determines how long the Tether can hold onto the souls of the fallen --------
    Set VariableSet ST_UndeadDurationBase = 5.00
    Set VariableSet ST_UndeadDurationPerLevel = 2.50
    -------- Determines Lightning Colouration --------
    Set VariableSet ST_LightningRed = 1.00
    Set VariableSet ST_LightningGreen = 1.00
    Set VariableSet ST_LightningBlue = 0.00
    -------- Determines the scaling of the spawn sfx --------
    Set VariableSet ST_EffectScalingSpawn = 150.00
    -------- Determines the Height given to the lightning effects --------
    Set VariableSet ST_LightningZ = 100.00
    -------- Determines the unit model used as the Tether --------
    Set VariableSet ST_TetherModel = buildings\other\BookOfSummoning\BookOfSummoning.mdl
    -------- Determines the unit model used to reprisent the edge of the Tether's range --------
    Set VariableSet ST_BarrierModel = Doodads\Cinematic\GlowingRunes\GlowingRunes2.mdl
    -------- Determines the SFX used to create create the spell --------
    Set VariableSet ST_SpawnSFX = Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
    -------- Determines the SFX used to End the spell --------
    Set VariableSet ST_DissappearenceSFX = Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
    -------- Determines the Lightning Effect used --------
    Set VariableSet ST_LightningEffect = CLPB
    -------- Determines the spell used to act as the activation spell --------
    Set VariableSet ST_Spell = Soul Tether
    -------- Determines the Dummy used to attach all the effects to --------
    Set VariableSet ST_DummyType = Soul Tether
Soul Tether Activation
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to ST_Spell
  Actions
    Set VariableSet ST_TempPoint = (Target point of ability being cast)
    Unit - Create 1.ST_DummyType for Neutral Passive at ST_TempPoint facing Default building facing degrees
    Set VariableSet ST_TempUnit = (Last created unit)
    Special Effect - Create a special effect attached to the origin (attachpoint) of ST_TempUnit using ST_SpawnSFX
    Special Effect - Destroy (Last created special effect)
    Animation - Change ST_TempUnit's size to (ST_EffectScalingSpawn%, 0.00%, 0.00%) of its original size
    Unit - Add a 1.00 second Generic expiration timer to ST_TempUnit
    Unit - Create 1.ST_DummyType for Neutral Passive at ST_TempPoint facing Default building facing degrees
    Set VariableSet ST_TempUnit = (Last created unit)
    Set VariableSet ST_TempUnit3 = (Triggering unit)
    Special Effect - Create a special effect attached to the origin (attachpoint) of ST_TempUnit using ST_TetherModel
    Set VariableSet ST_MaxIndex = (ST_MaxIndex + 1)
    Set VariableSet ST_OriginalCaster[ST_MaxIndex] = ST_TempUnit3
    Set VariableSet ST_TempReal = (Real((Level of ST_Spell for ST_TempUnit3)))
    Set VariableSet ST_SpecialEffect[ST_MaxIndex] = (Last created special effect)
    Unit - Add a (ST_TetherDurationBase + (ST_TetherDurationPerLevel x ST_TempReal)) second Generic expiration timer to ST_TempUnit
    Set VariableSet ST_UndeadDuration[ST_MaxIndex] = (ST_UndeadDurationBase + (ST_UndeadDurationPerLevel x ST_TempReal))
    Set VariableSet ST_Core[ST_MaxIndex] = ST_TempUnit
    Set VariableSet ST_Aoe[ST_MaxIndex] = (ST_AoeBase + (ST_AoePerLevel x ST_TempReal))
    Set VariableSet ST_UnitIndex[ST_MaxIndex] = ST_TempUnit
    Set VariableSet ST_StageID[ST_MaxIndex] = 1
    Set VariableSet ST_TempInteger = (Integer((ST_Aoe[ST_MaxIndex] / ST_BarrierSpaceTaken)))
    Set VariableSet ST_TempReal = ST_Aoe[ST_MaxIndex]
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        ST_MaxIndex Equal to 1
      Then - Actions
        Trigger - Turn on Soul_Tether_Loop <gen>
      Else - Actions
    For each (Integer ST_Index) from 1 to ST_TempInteger, do (Actions)
      Loop - Actions
        Set VariableSet ST_Angle = (ST_Angle + (360.00 / (Real(ST_TempInteger))))
        Set VariableSet ST_TempPoint2 = (ST_TempPoint offset by ST_TempReal towards ST_Angle degrees.)
        Unit - Create 1.ST_DummyType for Neutral Passive at ST_TempPoint2 facing Default building facing degrees
        Set VariableSet ST_TempUnit2 = (Last created unit)
        Special Effect - Create a special effect attached to the origin (attachpoint) of ST_TempUnit2 using ST_BarrierModel
        Set VariableSet ST_MaxIndex = (ST_MaxIndex + 1)
        Set VariableSet ST_StageID[ST_MaxIndex] = 3
        Set VariableSet ST_SpecialEffect[ST_MaxIndex] = (Last created special effect)
        Set VariableSet ST_OriginalCaster[ST_MaxIndex] = ST_TempUnit3
        Set VariableSet ST_UnitIndex[ST_MaxIndex] = ST_TempUnit2
        Set VariableSet ST_Core[ST_MaxIndex] = ST_TempUnit
        Custom script: call RemoveLocation (udg_ST_TempPoint2)
    Custom script: call RemoveLocation (udg_ST_TempPoint)
Soul Tether Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer ST_Index) from 1 to ST_MaxIndex, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            ST_StageID[ST_Index] Equal to 1
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (ST_UnitIndex[ST_Index] is alive) Equal to True
              Then - Actions
                Set VariableSet ST_TempPoint = (Position of ST_UnitIndex[ST_Index])
                Set VariableSet ST_TempGroup = (Units within ST_Aoe[ST_Index] of ST_TempPoint.)
                Unit Group - Pick every unit in ST_TempGroup and do (Actions)
                  Loop - Actions
                    Set VariableSet ST_TempUnit = (Picked unit)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (ST_TempUnit is A structure) Equal to False
                        (ST_TempUnit is alive) Equal to True
                        ((Unit-type of ST_TempUnit) is Magic Immune) Equal to False
                        (ST_TempUnit belongs to an enemy of (Owner of ST_OriginalCaster[ST_Index]).) Equal to True
                        (Percentage life of ST_TempUnit) Less than or equal to ST_TriggeringHealthPercent
                        (ST_TempUnit is A Hero) Equal to False
                        (ST_TempUnit is A ground unit) Equal to True
                        (ST_TempUnit is Mechanical) Equal to False
                      Then - Actions
                        Unit - Change ownership of ST_TempUnit to (Owner of ST_OriginalCaster[ST_Index]) and Change color
                        Unit - Set life of ST_TempUnit to 100%
                        Animation - Change ST_TempUnit's vertex coloring to (100%, 100%, 100%) with ST_UnitTransparency% transparency
                        Unit - Add a ST_UndeadDuration[ST_Index] second Generic expiration timer to ST_TempUnit
                        Unit - Make ST_TempUnit Explode on death
                        Set VariableSet ST_TempPoint2 = (Position of ST_TempUnit)
                        Set VariableSet ST_MaxIndex = (ST_MaxIndex + 1)
                        Set VariableSet ST_Core[ST_MaxIndex] = ST_UnitIndex[ST_Index]
                        Set VariableSet ST_OriginalCaster[ST_MaxIndex] = ST_OriginalCaster[ST_Index]
                        Set VariableSet ST_Aoe[ST_MaxIndex] = ST_Aoe[ST_Index]
                        Set VariableSet ST_UnitIndex[ST_MaxIndex] = ST_TempUnit
                        Set VariableSet ST_StageID[ST_MaxIndex] = 2
                        Custom script: set udg_ST_TempX = GetUnitX(udg_ST_TempUnit)
                        Custom script: set udg_ST_TempY = GetUnitY(udg_ST_TempUnit)
                        Custom script: set udg_ST_TempX2 = GetUnitX(udg_ST_Core[udg_ST_Index])
                        Custom script: set udg_ST_TempY2 = GetUnitY(udg_ST_Core[udg_ST_Index])
                        Custom script: set udg_ST_TempZ = GetLocationZ(udg_ST_TempPoint2) + udg_ST_LightningZ
                        Custom script: set udg_ST_TempZ2 = GetLocationZ(udg_ST_TempPoint) + udg_ST_LightningZ
                        Custom script: set udg_ST_CurrentLightningEffect[udg_ST_MaxIndex] = AddLightningEx(udg_ST_LightningEffect, true, udg_ST_TempX2, udg_ST_TempY2, udg_ST_TempZ2, udg_ST_TempX, udg_ST_TempY, udg_ST_TempZ)
                        Lightning - Change color of ST_CurrentLightningEffect[ST_MaxIndex] to (ST_LightningRed ST_LightningGreen ST_LightningBlue) with 1 alpha
                        Custom script: call RemoveLocation (udg_ST_TempPoint2)
                      Else - Actions
                Custom script: call RemoveLocation (udg_ST_TempPoint)
                Custom script: call DestroyGroup(udg_ST_TempGroup)
              Else - Actions
                Set VariableSet ST_UnitIDStorage = ST_UnitIndex[ST_Index]
                Special Effect - Create a special effect attached to the origin (attachpoint) of ST_UnitIndex[ST_Index] using ST_DissappearenceSFX
                Special Effect - Destroy (Last created special effect)
                For each (Integer ST_SecondaryIndex) from 1 to ST_MaxIndex, do (Actions)
                  Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        ST_Core[ST_SecondaryIndex] Equal to ST_UnitIDStorage
                      Then - Actions
                        Unit - Add a 0.60 second Generic expiration timer to ST_UnitIndex[ST_SecondaryIndex]
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            ST_StageID[ST_SecondaryIndex] Equal to 2
                          Then - Actions
                            Lightning - Destroy ST_CurrentLightningEffect[ST_SecondaryIndex]
                          Else - Actions
                            Special Effect - Destroy ST_SpecialEffect[ST_SecondaryIndex]
                        Set VariableSet ST_OriginalCaster[ST_SecondaryIndex] = ST_OriginalCaster[ST_MaxIndex]
                        Set VariableSet ST_CurrentLightningEffect[ST_SecondaryIndex] = ST_CurrentLightningEffect[ST_MaxIndex]
                        Set VariableSet ST_SpecialEffect[ST_SecondaryIndex] = ST_SpecialEffect[ST_MaxIndex]
                        Set VariableSet ST_UndeadDuration[ST_SecondaryIndex] = ST_UndeadDuration[ST_MaxIndex]
                        Set VariableSet ST_Core[ST_SecondaryIndex] = ST_Core[ST_MaxIndex]
                        Set VariableSet ST_Aoe[ST_SecondaryIndex] = ST_Aoe[ST_MaxIndex]
                        Set VariableSet ST_UnitIndex[ST_SecondaryIndex] = ST_UnitIndex[ST_MaxIndex]
                        Set VariableSet ST_StageID[ST_SecondaryIndex] = ST_StageID[ST_MaxIndex]
                        Set VariableSet ST_MaxIndex = (ST_MaxIndex - 1)
                        Set VariableSet ST_SecondaryIndex = (ST_SecondaryIndex - 1)
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            ST_MaxIndex Equal to 0
                          Then - Actions
                            Trigger - Turn off (This trigger)
                          Else - Actions
                      Else - Actions
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                ST_StageID[ST_Index] Equal to 2
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (ST_UnitIndex[ST_Index] is alive) Equal to True
                  Then - Actions
                    Set VariableSet ST_TempPoint = (Position of ST_UnitIndex[ST_Index])
                    Set VariableSet ST_TempPoint2 = (Position of ST_Core[ST_Index])
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Distance between ST_TempPoint and ST_TempPoint2) Greater than ST_Aoe[ST_Index]
                      Then - Actions
                        Unit - Cause ST_OriginalCaster[ST_Index] to damage ST_UnitIndex[ST_Index], dealing (ST_HealthPenaltyPerSecond x 0.03) damage of attack type Spells and damage type Normal
                      Else - Actions
                    Custom script: set udg_ST_TempX = GetUnitX(udg_ST_UnitIndex[udg_ST_Index])
                    Custom script: set udg_ST_TempY = GetUnitY(udg_ST_UnitIndex[udg_ST_Index])
                    Custom script: set udg_ST_TempX2 = GetUnitX(udg_ST_Core[udg_ST_Index])
                    Custom script: set udg_ST_TempY2 = GetUnitY(udg_ST_Core[udg_ST_Index])
                    Custom script: call MoveLightningEx(udg_ST_CurrentLightningEffect[udg_ST_Index], true, udg_ST_TempX2, udg_ST_TempY2, udg_ST_TempZ2, udg_ST_TempX, udg_ST_TempY, udg_ST_TempZ)
                    Custom script: call RemoveLocation (udg_ST_TempPoint2)
                    Custom script: call RemoveLocation (udg_ST_TempPoint)
                  Else - Actions
                    Lightning - Destroy ST_CurrentLightningEffect[ST_Index]
                    Set VariableSet ST_OriginalCaster[ST_Index] = ST_OriginalCaster[ST_MaxIndex]
                    Set VariableSet ST_SpecialEffect[ST_Index] = ST_SpecialEffect[ST_MaxIndex]
                    Set VariableSet ST_UndeadDuration[ST_Index] = ST_UndeadDuration[ST_MaxIndex]
                    Set VariableSet ST_Core[ST_Index] = ST_Core[ST_MaxIndex]
                    Set VariableSet ST_Aoe[ST_Index] = ST_Aoe[ST_MaxIndex]
                    Set VariableSet ST_UnitIndex[ST_Index] = ST_UnitIndex[ST_MaxIndex]
                    Set VariableSet ST_StageID[ST_Index] = ST_StageID[ST_MaxIndex]
                    Set VariableSet ST_CurrentLightningEffect[ST_Index] = ST_CurrentLightningEffect[ST_MaxIndex]
                    Set VariableSet ST_MaxIndex = (ST_MaxIndex - 1)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        ST_MaxIndex Equal to 0
                      Then - Actions
                        Trigger - Turn off (This trigger)
                      Else - Actions
              Else - Actions
Walk of Shadows Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to Walk of Shadows
  Actions
    -------- - - - - - - - - - - - --------
    -------- DO NOT CHANGE --------
    -------- - - - - - - - - - - - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        WoS_Index[2] Less than or equal to 0
      Then - Actions
        Trigger - Turn on Walk_of_Shadows_Loop <gen>
      Else - Actions
    Set VariableSet WoS_Index[1] = (WoS_Index[1] + 1)
    Set VariableSet WoS_Index[2] = (WoS_Index[2] + 1)
    Set VariableSet WoS_Off[WoS_Index[1]] = False
    -------- - - - - - - - - - - - --------
    -------- DO NOT CHANGE --------
    -------- - - - - - - - - - - - --------
    Set VariableSet SystemPoint[0] = (Position of (Triggering unit))
    Set VariableSet SystemPoint[1] = (Position of (Target unit of ability being cast))
    Set VariableSet WoS_Caster[WoS_Index[1]] = (Triggering unit)
    Set VariableSet WoS_TargetedUnit[WoS_Index[1]] = (Target unit of ability being cast)
    Set VariableSet WoS_Angle[WoS_Index[1]] = (Angle from SystemPoint[0] to SystemPoint[1])
    Set VariableSet WoS_AttackTimer[WoS_Index[1]] = 1.00
    Set VariableSet WoS_ShadowEffectTimer[WoS_Index[1]] = 1.00
    Unit - Turn collision for WoS_Caster[WoS_Index[1]] Off.
    Unit - Make WoS_Caster[WoS_Index[1]] Invulnerable
    Animation - Change WoS_Caster[WoS_Index[1]]'s vertex coloring to (100%, 100%, 100%) with 100.00% transparency
    -------- - - - - - - - - - - - --------
    -------- CHANGE TO WHAT YOU WANT --------
    -------- - - - - - - - - - - - --------
    -------- THIS IS THE EFFECT THAT WILL APPEAR WHEN THE CASTING UNIT ATTACKS THE TARGETED UNIT --------
    Set VariableSet WoS_AttackEffect[WoS_Index[1]] = Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
    -------- THIS IS THE EFFECT THAT WILL APPEAR AT THE LOCATION OF THE HERO --------
    Set VariableSet WoS_ShadowEffect[WoS_Index[1]] = Abilities\Spells\Human\CloudOfFog\CloudOfFog.mdl
    -------- THIS IS THE DURATION OF THE SPAWNED EFFECTS (NOT ATTACKEFFECT) --------
    Set VariableSet WoS_ShadowEffectDuration[WoS_Index[1]] = 1.00
    -------- THIS IS THE DELAY (IN SECONDS) WHEN A NEW SHADOWEFFECT SHALL BE CREATED --------
    Set VariableSet WoS_ShadowEffectCreatingDelay[WoS_Index[1]] = 0.40
    -------- THIS IS THE DAMAGE THE SPELL WILL DO EACH ATTACK --------
    Set VariableSet WoS_Damage[WoS_Index[1]] = (40.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))
    -------- THIS IS THE SPEED OF THE CASTING UNIT --------
    Set VariableSet WoS_Speed[WoS_Index[1]] = 12.50
    -------- THIS IS THE AMOUNT OF INCREASED SPEED THE CASTING UNIT WILL GET OVER TIME --------
    Set VariableSet WoS_SpeedIncreasement[WoS_Index[1]] = 0.06
    -------- THIS IS THE MAX SPEED OF THE CASTING UNIT --------
    Set VariableSet WoS_MaxSpeed[WoS_Index[1]] = 20.00
    -------- THIS IS HOW MUCH THE CASTING UNITS SPEED WILL BE DECREASED ON AN ATTACK --------
    Set VariableSet WoS_OnAttackSpeedDecrease[WoS_Index[1]] = 7.50
    -------- THIS IS THE DURATION OF THE SPELL --------
    Set VariableSet WoS_SpellDuration[WoS_Index[1]] = (7.50 + (2.50 x (Real((Level of (Ability being cast) for (Triggering unit))))))
    -------- THIS IS THE ATTACKRANGE OF THE SPELL --------
    Set VariableSet WoS_AttackRange[WoS_Index[1]] = 128.00
    -------- - - - - - - - - - - - --------
    -------- REMOVE LEAKS --------
    -------- - - - - - - - - - - - --------
    Custom script: call RemoveLocation(udg_SystemPoint[0])
    Custom script: call RemoveLocation(udg_SystemPoint[1])
Walk of Shadows Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer WoS_Index[3]) from 1 to WoS_Index[1], do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            WoS_Off[WoS_Index[3]] Equal to False
          Then - Actions
            -------- - - - - - - - - - - - --------
            -------- SET LOCATIONS FOR THE SPELL --------
            -------- - - - - - - - - - - - --------
            Set VariableSet SystemPoint[0] = (Position of WoS_Caster[WoS_Index[3]])
            Set VariableSet SystemPoint[1] = (Position of WoS_TargetedUnit[WoS_Index[3]])
            -------- - - - - - - - - - - - --------
            -------- CALCULATE THE NEW ANGLE --------
            -------- - - - - - - - - - - - --------
            Set VariableSet WoS_Angle[WoS_Index[3]] = (Angle from SystemPoint[0] to SystemPoint[1])
            -------- - - - - - - - - - - - --------
            -------- CALCULATE THE NEW SPEED --------
            -------- - - - - - - - - - - - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                WoS_Speed[WoS_Index[3]] Greater than or equal to WoS_MaxSpeed[WoS_Index[3]]
              Then - Actions
                Set VariableSet WoS_Speed[WoS_Index[3]] = WoS_MaxSpeed[WoS_Index[3]]
              Else - Actions
                Set VariableSet WoS_Speed[WoS_Index[3]] = (WoS_Speed[WoS_Index[3]] + WoS_SpeedIncreasement[WoS_Index[3]])
            -------- - - - - - - - - - - - --------
            -------- THIS IS THE LOCATION YOUR HERO WILL MOVE TO --------
            -------- - - - - - - - - - - - --------
            Set VariableSet SystemPoint[2] = (SystemPoint[0] offset by WoS_Speed[WoS_Index[3]] towards WoS_Angle[WoS_Index[3]] degrees.)
            Unit - Move WoS_Caster[WoS_Index[3]] instantly to SystemPoint[2]
            -------- - - - - - - - - - - - --------
            -------- CREATE THE SHADOWEFFECTS --------
            -------- - - - - - - - - - - - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions