Moderator
M
Moderator
Double Spinning Blade v1.1.4 | Reviewed by Maker | 27th Sep 2013 | ||||
| APPROVED | ||||
|
|
| Double Spinning Blade |
| The User throw a spinning blade towards the target point, for set amount of time the blade will destroyed and the user's illusion will appeared at blade's location. Then he throw a spinning blade again to the user's current location. Level 1 - 75 damage. Level 2 - 100 damage. Level 3 - 125 damage. |
Configuration

Events


Map initialization

Conditions

Actions


-------- --------------------------------------------- --------


-------- Store your ability id here --------


Set DSB_Ability_ID = Double Spinning Blade


-------- Store your dummy here --------


Set DSB_Dummy_Type = Spinning Blade


Set DSB_Dummy_Type2 = Rokhan Dummy


-------- Your Dummy's animation when cast the spell --------


Set DSB_Dummy2_Animation = attack


-------- Your Dummy's animation speed when play it's animation --------


Set DSB_Animation_Speed = 200.00


-------- Your 2nd Dummy's expiration timer --------


Set DSB_Dummy2_Lifetime = 1.00


-------- Your 2nd Dummy's color (RGB) --------


Set DSB_Dummy2_RED = 60.00


Set DSB_Dummy2_GREEN = 60.00


Set DSB_Dummy2_BLUE = 60.00


-------- Your 2nd Dummy's transparency --------


Set DSB_Dummy2_Transparency = 60.00


-------- Your ability's damage when it's hit enemies in the line --------


Set DSB_Damage[1] = 75.00


Set DSB_Damage[2] = 100.00


Set DSB_Damage[3] = 125.00


-------- Area of Effect of the ability --------


Set DSB_AoE = 150.00


-------- How far your blade travels --------


Set DSB_Distance = 1000.00


-------- How far your blade spawns --------


Set 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 DSB_SoundEffect = HeroShadowhunterMissileLaunch1 <gen>


-------- Special Effect which spawn when the blade hits your enemies --------


Set DSB_Special_Effect = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl


-------- which point your special effect will spawned at? head/chest/hand/overhead/origin, etc --------


Set DSB_Special_Effect_Location = chest


-------- Yes = Will Destroy Trees / No = Won't Destroy Trees --------


Set 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 DSB_Shadow = True


-------- --------------------------------------------- --------


-------- Conditions Configuration --------


-------- --------------------------------------------- --------


-------- Units Belongs to enemy player --------


Set DSB_Conditions[1] = True


-------- Units is Alive --------


Set DSB_Conditions[2] = True


-------- Units is Magic Immune --------


Set DSB_Conditions[3] = False


-------- Units is a Structure --------


Set DSB_Conditions[4] = False


-------- Units is in UnDamage Group (to prevent damage looping) --------


Set 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 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 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 DSB_Max_Index = (DSB_Max_Index + 1)


Set DSB_Owner[DSB_Max_Index] = (Triggering player)


Set DSB_Caster[DSB_Max_Index] = (Triggering unit)


Set DSB_Ability_Level[DSB_Max_Index] = (Level of DSB_Ability_ID for DSB_Caster[DSB_Max_Index])


Set TempPoint = (Position of DSB_Caster[DSB_Max_Index])


Set TempPoint2 = (Target point of ability being cast)


Set DSB_Angle[DSB_Max_Index] = (Angle from TempPoint to TempPoint2)


Set TempPoint3 = (TempPoint offset by DSB_Start_Range towards DSB_Angle[DSB_Max_Index] degrees)


Sound - Play DSB_SoundEffect at 100.00% volume, located at TempPoint with Z offset 0.00


Unit - Create 1 DSB_Dummy_Type for DSB_Owner[DSB_Max_Index] at TempPoint3 facing DSB_Angle[DSB_Max_Index] degrees


Set 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 DSB_Shdow[DSB_Max_Index] = True


Set 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 TempPoint = (Position of DSB_Dummy[DSB_Current_Index])






Set 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 DSB_Damage_Group = (Units within DSB_AoE of TempPoint)






Unit Group - Pick every unit in DSB_Damage_Group and do (Actions)







Loop - Actions








Set 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 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 DSB_Stage[DSB_Current_Index] = 2










Set 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 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 TempPoint = (Position of DSB_Dummy2[DSB_Current_Index])










Set DSB_Angle[DSB_Current_Index] = (Angle from TempPoint to TempPoint2)










Custom script: call RemoveLocation(udg_TempPoint2)










Set 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 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 DSB_Shdow[DSB_Current_Index] = DSB_Shdow[DSB_Max_Index]










Set DSB_Dummy[DSB_Current_Index] = DSB_Dummy[DSB_Max_Index]










Set DSB_Dummy[DSB_Max_Index] = No unit










Set DSB_Caster[DSB_Current_Index] = DSB_Caster[DSB_Max_Index]










Set DSB_Caster[DSB_Max_Index] = No unit










Set DSB_Angle[DSB_Current_Index] = DSB_Angle[DSB_Max_Index]










Set DSB_Angle[DSB_Max_Index] = 0.00










Set DSB_Ability_Level[DSB_Current_Index] = DSB_Ability_Level[DSB_Max_Index]










Set DSB_Ability_Level[DSB_Max_Index] = 0










Set DSB_Stage[DSB_Current_Index] = DSB_Stage[DSB_Max_Index]










Set DSB_Stage[DSB_Max_Index] = 0










Set DSB_Current_Index = (DSB_Current_Index - 1)










Set 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 TempPoint = (Position of DSB_Dummy[DSB_Current_Index])








Set 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 DSB_Damage_Group = (Units within DSB_AoE of TempPoint)








Unit Group - Pick every unit in DSB_Damage_Group and do (Actions)









Loop - Actions










Set 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 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 DSB_Shdow[DSB_Current_Index] = False










Set DSB_Stage[DSB_Current_Index] = 1









Else - Actions








Custom script: call RemoveLocation(udg_TempPoint)








Custom script: call RemoveLocation(udg_TempPoint2)







Else - Actions