- Joined
- Jul 19, 2007
- Messages
- 824
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
-
If - Conditions
- 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])
-
Loop - Actions
- 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
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Events
-
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
-
If - Conditions
-
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
- -------- ----------------------------------------------------------------------------------------------------------- --------
-
Loop - Actions
-
Unit Group - Pick every unit in SS_Group[SS] and do (Actions)
- Else - Actions
-
If - Conditions
- 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])
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
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
-
Conditions
-
Or - Any (Conditions) are 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
-
If - Conditions
-
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
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- 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])
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer SS) from 1 to SS_Times, do (Actions)
-
Events