- Joined
- Jul 19, 2007
- Messages
- 855
I have imported a spell named "Shade Shield" into my map and it works like this
"The hero creates around him 4 black arrows that rotates around him and if that arrow collide with a unit it will deal 100/200/300 damage and knocks that unit for 200/300/400 distance away, the sheilds last 8 seconds at all levels."
but the problem is that is seems to knockback everything in their way, even buildings! How do I make it to only knockback enemies and NOT buildings or magic immune units?
"The hero creates around him 4 black arrows that rotates around him and if that arrow collide with a unit it will deal 100/200/300 damage and knocks that unit for 200/300/400 distance away, the sheilds last 8 seconds at all levels."
but the problem is that is seems to knockback everything in their way, even buildings! How do I make it to only knockback enemies and NOT buildings or magic immune units?
-
Shade Sheild On
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Spirit Shield
-
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Skip Equal to 0
-
-
Then - Actions
-
Trigger - Turn on Shade Sheild Loop <gen>
-
-
Else - Actions
-
-
Set VariableSet SS_LEVEL = (Level of Spirit Shield for (Casting unit))
-
Set VariableSet Sheild_How_Many = 4
-
Set VariableSet SS_Number[1] = (360.00 / (Real(Sheild_How_Many)))
-
Set VariableSet SS_Number[2] = SS_Number[1]
-
For each (Integer A) from 1 to Sheild_How_Many, do (Actions)
-
Loop - Actions
-
Set VariableSet SS_Times = (SS_Times + 1)
-
Set VariableSet SS_Skip = (SS_Skip + 1)
-
Set VariableSet SS_Rotate_Off[SS_Times] = True
-
Set VariableSet SS_Knockback_Off[SS_Times] = False
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Hero[SS_Times] = (Casting unit)
-
Set VariableSet SS_Point[1] = (Position of SS_Hero[SS_Times])
-
Set VariableSet SS_Point[2] = (SS_Point[1] offset by 165.00 towards SS_Number[2] degrees.)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Unit - Create 1 Dummy X for (Owner of SS_Hero[SS_Times]) at SS_Point[2] facing ((Angle from SS_Point[1] to SS_Point[2]) + 90.00) degrees
-
Set VariableSet SS_Dummy[SS_Times] = (Last created unit)
-
Special Effect - Create a special effect attached to the chest of SS_Dummy[SS_Times] using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
-
Set VariableSet SS_Special[SS_Times] = (Last created special effect)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Angle[SS_Times] = SS_Number[2]
-
Set VariableSet SS_Angle_Speed_Rotation[SS_Times] = 6.00
-
Set VariableSet SS_Countdown[SS_Times] = 267
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Damage[SS_Times] = (100.00 x (Real(SS_LEVEL)))
-
Set VariableSet SS_Distance[SS_Times] = (SS_Damage[SS_Times] + 100.00)
-
Set VariableSet SS_Speed[SS_Times] = 15.00
-
Set VariableSet SS_Formula[SS_Times] = (SS_Distance[SS_Times] / SS_Speed[SS_Times])
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Number[2] = (SS_Number[2] + SS_Number[1])
-
Custom script: call RemoveLocation(udg_SS_Point[1])
-
Custom script: call RemoveLocation(udg_SS_Point[2])
-
-
-
Set VariableSet SS_LEVEL = 0
-
Set VariableSet Sheild_How_Many = 0
-
Set VariableSet SS_Number[1] = 0.00
-
Set VariableSet SS_Number[2] = 0.00
-
-
-
Shade Sheild Loop
-
Events
-
Time - Every 0.03 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer SS) from 1 to SS_Times, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Rotate_Off[SS] Equal to True
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Countdown[SS] Equal to 0
-
-
Then - Actions
-
Set VariableSet SS_Rotate_Off[SS] = False
-
Set VariableSet SS_Skip = (SS_Skip - 1)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Special Effect - Destroy SS_Special[SS]
-
Unit - Add a 0.03 second Generic expiration timer to SS_Dummy[SS]
-
Set VariableSet SS_Dummy[SS] = No unit
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Angle[SS] = 0.00
-
Set VariableSet SS_Countdown[SS] = 0
-
Set VariableSet SS_Angle_Speed_Rotation[SS] = 0.00
-
Set VariableSet SS_Damage[SS] = 0.00
-
Set VariableSet SS_Distance[SS] = 0.00
-
Set VariableSet SS_Speed[SS] = 0.00
-
Set VariableSet SS_Formula[SS] = 0.00
-
Set VariableSet SS_Hero[SS] = No unit
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Skip Equal to 0
-
-
Then - Actions
-
Set VariableSet SS_Times = 0
-
Trigger - Turn off Shade Sheild Loop <gen>
-
-
Else - Actions
-
-
-
Else - Actions
-
Set VariableSet SS_Countdown[SS] = (SS_Countdown[SS] - 1)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Point[3] = (Position of SS_Hero[SS])
-
Set VariableSet SS_Point[4] = (SS_Point[3] offset by 165.00 towards SS_Angle[SS] degrees.)
-
Unit - Move SS_Dummy[SS] instantly to SS_Point[4], facing ((Angle from SS_Point[3] to SS_Point[4]) + 90.00) degrees
-
Set VariableSet SS_Angle[SS] = (SS_Angle[SS] + SS_Angle_Speed_Rotation[SS])
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Group[SS] = (Units within 65.00 of SS_Point[4] matching (((Owner of (Matching unit)) Not equal to (Owner of SS_Hero[SS])) and (((Matching unit) is alive) Equal to True)).)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of units in SS_Group[SS]) Greater than or equal to 1
-
-
Then - Actions
-
Unit Group - Pick every unit in SS_Group[SS] and do (Actions)
-
Loop - Actions
-
Set VariableSet SS_Rotate_Off[SS] = False
-
Set VariableSet SS_Knockback_Off[SS] = True
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Special Effect - Destroy SS_Special[SS]
-
Unit - Add a 0.03 second Generic expiration timer to SS_Dummy[SS]
-
Set VariableSet SS_Dummy[SS] = No unit
-
Special Effect - Create a special effect at SS_Point[4] using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
-
Special Effect - Destroy (Last created special effect)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Unit[SS] = (Picked unit)
-
Unit - Cause SS_Hero[SS] to damage SS_Unit[SS], dealing SS_Damage[SS] damage of attack type Spells and damage type Magic
-
Special Effect - Create a special effect attached to the chest of SS_Unit[SS] using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
-
Set VariableSet SS_Special[SS] = (Last created special effect)
-
Set VariableSet SS_Angle[SS] = (SS_Angle[SS] + 90.00)
-
Set VariableSet SS_Countdown[SS] = 0
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Angle_Speed_Rotation[SS] = 0.00
-
Set VariableSet SS_Damage[SS] = 0.00
-
Set VariableSet SS_Hero[SS] = No unit
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
-
-
-
Else - Actions
-
-
Custom script: call DestroyGroup(udg_SS_Group[udg_SS])
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Custom script: call RemoveLocation(udg_SS_Point[3])
-
Custom script: call RemoveLocation(udg_SS_Point[4])
-
-
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Knockback_Off[SS] Equal to True
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
SS_Distance[SS] Less than or equal to 0.00
-
(SS_Unit[SS] is dead) Equal to True
-
-
-
-
Then - Actions
-
Set VariableSet SS_Knockback_Off[SS] = False
-
Set VariableSet SS_Skip = (SS_Skip - 1)
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Special Effect - Destroy SS_Special[SS]
-
Set VariableSet SS_Unit[SS] = No unit
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Angle[SS] = 0.00
-
Set VariableSet SS_Countdown[SS] = 0
-
Set VariableSet SS_Distance[SS] = 0.00
-
Set VariableSet SS_Speed[SS] = 0.00
-
Set VariableSet SS_Formula[SS] = 0.00
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Skip Equal to 0
-
-
Then - Actions
-
Set VariableSet SS_Times = 0
-
Trigger - Turn off Shade Sheild Loop <gen>
-
-
Else - Actions
-
-
-
Else - Actions
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Point[5] = (Position of SS_Unit[SS])
-
Set VariableSet SS_Speed[SS] = (SS_Distance[SS] / SS_Formula[SS])
-
Set VariableSet SS_Speed[SS] = (SS_Speed[SS] + 1.00)
-
Set VariableSet SS_Point[6] = (SS_Point[5] offset by SS_Speed[SS] towards SS_Angle[SS] degrees.)
-
Unit - Move SS_Unit[SS] instantly to SS_Point[6]
-
Set VariableSet SS_Countdown[SS] = (SS_Countdown[SS] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Countdown[SS] Equal to 4
-
-
Then - Actions
-
Special Effect - Create a special effect at SS_Point[5] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SS_Countdown[SS] Equal to 6
-
-
Then - Actions
-
Set VariableSet SS_Countdown[SS] = 0
-
Special Effect - Create a special effect at SS_Point[5] using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-
-
Destructible - Pick every destructible within 150.00 of SS_Point[6] and do (Destructible - Kill (Picked destructible))
-
Custom script: call RemoveLocation(udg_SS_Point[5])
-
Custom script: call RemoveLocation(udg_SS_Point[6])
-
-------- ----------------------------------------------------------------------------------------------------------- --------
-
Set VariableSet SS_Distance[SS] = (SS_Distance[SS] - SS_Speed[SS])
-
-
-
-
Else - Actions
-
-
-
-
-
-
-