INIT BS

Events


Map initialization

Conditions

Actions


Hashtable - Create a hashtable


Set BS_Hash = (Last created hashtable)


-------- Base Duration(5) + Bonus Duration(2) * Spell Level = Full Duration --------


Set BS_BaseDuration = 5.00


Set BS_BonusDuration = 2.00


-------- 1.5 = 150% | 1 = 100% | 2 = 200% | etc. etc. --------


Set BS_MovespeedMult = 1.50
CAST BS

Events


Unit - A unit Starts the effect of an ability

Conditions


Or - Any (Conditions) are true



Conditions




(Ability being cast) Equal to Shadowstep




(Ability being cast) Equal to Vanish

Actions


Set BS_KeyTriggering = (Triggering unit)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




((Triggering unit) is in BS_ClosureGroup) Equal to False




(Ability being cast) Equal to Shadowstep



Then - Actions




Set BS_Caster = (Triggering unit)




Set BS_Target = (Target unit of ability being cast)




Set BS_MovespeedMIN = (Current movement speed of BS_Caster)




Set BS_CasterPoint = (Position of BS_Caster)




Set BS_TempEffectPoint = (Position of BS_Target)




Set BS_Degree = ((Facing of BS_Target) - 180.00)




Set BS_TargetPoint = (BS_TempEffectPoint offset by 50.00 towards BS_Degree degrees)




Set BS_SpellLevel = (Level of (Ability being cast) for BS_Caster)




Set BS_DURATION = (BS_BaseDuration + (BS_BonusDuration x (Real(BS_SpellLevel))))




Set BS_MovespeedMAX = ((Current movement speed of BS_Caster) x BS_MovespeedMult)




Unit - Set BS_Caster movement speed to BS_MovespeedMAX




Unit - Create 1 Dummy for (Triggering player) at BS_CasterPoint facing Default building facing degrees




Set BS_DUMMY = (Last created unit)




Set BS_KeyLastCreated = (Last created unit)




Unit - Make BS_DUMMY Explode on death




Unit - Add a BS_DURATION second Generic expiration timer to BS_DUMMY




Unit Group - Add BS_Caster to BS_ClosureGroup




Unit Group - Add BS_DUMMY to BS_ClosureGroup




For each (Integer BS_IntegerA) from 1 to 3, do (Actions)





Loop - Actions






Special Effect - Create a special effect at BS_CasterPoint using Abilities\Spells\Items\AIil\AIilTarget.mdl






Special Effect - Destroy (Last created special effect)




Custom script: call SetUnitX(udg_BS_Caster, GetLocationX(udg_BS_TargetPoint))




Custom script: call SetUnitY(udg_BS_Caster, GetLocationY(udg_BS_TargetPoint))




Unit - Remove Shadowstep from BS_Caster




Unit - Add Vanish to BS_Caster




Animation - Play BS_Caster's attack animation




Animation - Queue BS_Caster's stand animation




Hashtable - Save Handle OfBS_DUMMY as 1 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save Handle OfBS_Caster as 2 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save Handle OfBS_CasterPoint as 3 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save BS_MovespeedMIN as 4 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save BS_SpellLevel as 5 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save Handle OfBS_TargetPoint as 6 of (Key BS_KeyLastCreated) in BS_Hash




Hashtable - Save Handle OfBS_DUMMY as 1 of (Key BS_KeyTriggering) in BS_Hash




Hashtable - Save Handle OfBS_Caster as 2 of (Key BS_KeyTriggering) in BS_Hash




Hashtable - Save Handle OfBS_CasterPoint as 3 of (Key BS_KeyTriggering) in BS_Hash




Hashtable - Save BS_MovespeedMIN as 4 of (Key BS_KeyTriggering) in BS_Hash




Hashtable - Save BS_SpellLevel as 5 of (Key BS_KeyTriggering) in BS_Hash




Hashtable - Save Handle OfBS_TargetPoint as 6 of (Key BS_KeyTriggering) in BS_Hash




For each (Integer BS_IntegerA) from 1 to 3, do (Actions)





Loop - Actions






Special Effect - Create a special effect attached to the origin of BS_Caster using Abilities\Spells\Items\AIil\AIilTarget.mdl






Special Effect - Destroy (Last created special effect)




Unit - Order BS_Caster to Stop




If ((BS_Target belongs to an enemy of (Triggering player)) Equal to True) then do (Unit - Order BS_Caster to Attack BS_Target) else do (Do nothing)




Custom script: call RemoveLocation(udg_BS_TempEffectPoint)




Trigger - Turn on CLOSE BS <gen>




Skip remaining actions



Else - Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




((Triggering unit) is in BS_ClosureGroup) Equal to True




(Ability being cast) Equal to Vanish



Then - Actions




Set BS_Caster = (Triggering unit)




Set BS_DUMMY = (Load 1 of (Key BS_KeyTriggering) in BS_Hash)




Unit - Set BS_Caster movement speed to (Load 4 of (Key BS_KeyTriggering) from BS_Hash)




Set BS_TargetPoint = (Load 3 of (Key BS_KeyTriggering) in BS_Hash)




Set BS_CasterPoint = (Position of BS_Caster)




For each (Integer BS_IntegerA) from 1 to 3, do (Actions)





Loop - Actions






Special Effect - Create a special effect at BS_CasterPoint using Abilities\Spells\Items\AIil\AIilTarget.mdl






Special Effect - Destroy (Last created special effect)




Custom script: call SetUnitX(udg_BS_Caster, GetLocationX(udg_BS_TargetPoint))




Custom script: call SetUnitY(udg_BS_Caster, GetLocationY(udg_BS_TargetPoint))




For each (Integer BS_IntegerA) from 1 to 3, do (Actions)





Loop - Actions






Special Effect - Create a special effect attached to the origin of BS_Caster using Abilities\Spells\Items\AIil\AIilTarget.mdl






Special Effect - Destroy (Last created special effect)




Unit - Remove Vanish from BS_Caster




Unit - Add Shadowstep to BS_Caster




Unit - Set level of Shadowstep for BS_Caster to (Load 5 of (Key BS_KeyTriggering) from BS_Hash)




Unit - Order BS_Caster to Stop




Unit Group - Remove BS_Caster from BS_ClosureGroup




Unit Group - Remove BS_DUMMY from BS_ClosureGroup




If ((Number of units in BS_ClosureGroup) Equal to 0) then do (Trigger - Turn off CLOSE BS <gen>) else do (Do nothing)




Unit - Kill BS_DUMMY




Hashtable - Clear all child hashtables of child (Key BS_KeyTriggering) in BS_Hash




Custom script: call RemoveLocation(udg_BS_CasterPoint)




Custom script: call RemoveLocation(udg_BS_TargetPoint)



Else - Actions
CLOSE BS

Events


Unit - A unit Dies

Conditions


((Triggering unit) is in BS_ClosureGroup) Equal to True

Actions


Set BS_Caster = (Load 2 of (Key BS_KeyTriggering) in BS_Hash)


Set BS_DUMMY = (Load 1 of (Key BS_KeyTriggering) in BS_Hash)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Or - Any (Conditions) are true





Conditions






BS_DUMMY Equal to (Triggering unit)






BS_Caster Equal to (Triggering unit)



Then - Actions




Set BS_KeyTriggering = (Triggering unit)




Set BS_TargetPoint = (Load 3 of (Key BS_KeyTriggering) in BS_Hash)




Set BS_CasterPoint = (Position of BS_Caster)




Unit - Set BS_Caster movement speed to (Load 4 of (Key BS_KeyTriggering) from BS_Hash)




Unit - Kill BS_DUMMY




Unit - Remove Vanish from BS_Caster




Unit - Add Shadowstep to BS_Caster




Unit - Set level of Shadowstep for BS_Caster to (Load 5 of (Key BS_KeyTriggering) from BS_Hash)




Unit Group - Remove BS_Caster from BS_ClosureGroup




Unit Group - Remove BS_DUMMY from BS_ClosureGroup




If ((Number of units in BS_ClosureGroup) Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)




Hashtable - Clear all child hashtables of child (Key BS_KeyTriggering) in BS_Hash




Custom script: call RemoveLocation(udg_BS_CasterPoint)




Custom script: call RemoveLocation(udg_BS_TargetPoint)



Else - Actions