Zedzy
ℑΣÐℑΨ
- Reaction score
- 41
I have a triggered spell that creates spikes on the ground, and whenever a unit (except the hero-type of the unit that cast it) steps on one of the spikes, they get damaged, and their movement speed decreases for a duration, then the spikes are removed. The issue is that the spikes aren't being removed, and that the hero who cast it, can still be hurt from it. To make the spell easier to make, only one spike trap can be on the ground at once.
Now, on with the triggers (wow what a mouthful)!
The leak removing is a WIP.
I will give reputation(2) to whoever contributes.
Now, on with the triggers (wow what a mouthful)!
Code:
Spike Baracade Init
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spike Baracade
(SB_SpikeGroup_UnitGroup is empty) Equal to True
Actions
Set SB_CasterStart_Point = (Position of (Triggering unit))
Set SB_SpikeStart_Point[1] = (SB_CasterStart_Point offset by 256.00 towards (Facing of (Triggering unit)) degrees)
Set SB_SpikeStart_Point[2] = (SB_SpikeStart_Point[1] offset by 128.00 towards ((Facing of (Triggering unit)) - 90.00) degrees)
Set SB_SpikeStart_Point[3] = (SB_SpikeStart_Point[2] offset by 128.00 towards ((Facing of (Triggering unit)) - 90.00) degrees)
Set SB_SpikeStart_Point[4] = (SB_SpikeStart_Point[1] offset by 128.00 towards ((Facing of (Triggering unit)) + 90.00) degrees)
Set SB_SpikeStart_Point[5] = (SB_SpikeStart_Point[4] offset by 128.00 towards ((Facing of (Triggering unit)) + 90.00) degrees)
For each (Integer A) from 1 to 5, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 Spike Level 3 for (Owner of (Triggering unit)) at SB_SpikeStart_Point[(Integer A)] facing (Facing of (Triggering unit)) degrees
Trigger - Add to Spike Baracade Damage Neg Speed <gen> the event (Unit - A unit comes within 256.00 of (Last created unit))
Set SB_Spike_Unit[(Integer A)] = (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 Spike Level 2 for (Owner of (Triggering unit)) at SB_SpikeStart_Point[(Integer A)] facing (Facing of (Triggering unit)) degrees
Trigger - Add to Spike Baracade Damage Neg Speed <gen> the event (Unit - A unit comes within 256.00 of (Last created unit))
Else - Actions
Unit - Create 1 Spike Level 1 for (Owner of (Triggering unit)) at SB_SpikeStart_Point[(Integer A)] facing (Facing of (Triggering unit)) degrees
Trigger - Add to Spike Baracade Damage Neg Speed <gen> the event (Unit - A unit comes within 256.00 of (Last created unit))
Set SB_Spike_Unit[(Integer A)] = (Last created unit)
Unit Group - Add (Last created unit) to SB_SpikeGroup_UnitGroup
Code:
Spike Baracade Damage Neg Speed
Events
Conditions
(Unit-type of (Triggering unit)) Not equal to Spike Level 1
(Unit-type of (Triggering unit)) Not equal to Spike Level 2
(Unit-type of (Triggering unit)) Not equal to Spike Level 3
(Unit-type of (Triggering unit)) Not equal to Attack Flag
(Unit-type of (Triggering unit)) Not equal to Azog
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Unit - Cause (Triggering unit) to damage (Triggering unit), dealing 850.00 damage of attack type Pierce and damage type Normal
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) - 300.00)
Wait 10.00 seconds
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) + 300.00)
Unit Group - Pick every unit in SB_SpikeGroup_UnitGroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Custom script: call DestroyGroup(udg_SB_SpikeGroup_UnitGroup)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Unit - Cause (Triggering unit) to damage (Triggering unit), dealing 650.00 damage of attack type Pierce and damage type Normal
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) - 200.00)
Wait 10.00 seconds
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) + 200.00)
Unit Group - Pick every unit in SB_SpikeGroup_UnitGroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Custom script: call DestroyGroup(udg_SB_SpikeGroup_UnitGroup)
Else - Actions
Unit - Cause (Triggering unit) to damage (Triggering unit), dealing 450.00 damage of attack type Pierce and damage type Normal
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) - 100.00)
Wait 10.00 seconds
Unit - Set (Triggering unit) movement speed to ((Current movement speed of (Triggering unit)) + 100.00)
Unit Group - Pick every unit in SB_SpikeGroup_UnitGroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Custom script: call DestroyGroup(udg_SB_SpikeGroup_UnitGroup)
Code:
Spiked Baracade
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Spike Baracade
(SB_SpikeGroup_UnitGroup is empty) Not equal to True
Actions
Unit - Order (Triggering unit) to Stop
The leak removing is a WIP.
I will give reputation(2) to whoever contributes.