Triggered Spell Not Working Properly

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)!
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.
 

Ivach

New Member
Reaction score
18
About the issue of the spikes not being removed, the part where your trigger has a wait function to restore the movement speed of the unit also applies to the removal of the spikes. Thus, the spikes will be removed after the unit has stepped on it 10 seconds ago. Is this intended?

And on a side note, instead of using if then else functions for each level, you can shorten the trigger using simple arithmetics.

Code:
Unit - Cause (Triggering unit) to damage (Triggering unit), dealing (250.00 + (200 x Level of Spiked Barricade for Triggering Unit))  damage of attack type Pierce and damage type Normal

Same applies for the movespeed reduction.
 

Zedzy

ℑΣÐℑΨ
Reaction score
41
:) No, that's not intended.

Code:
Unit - Cause (Triggering unit) to damage (Triggering unit), dealing (250.00 + (200 x Level of Spiked Barricade for Triggering Unit))  damage of attack type Pierce and damage type Normal

The triggering unit is the unit that stepped onto the spike, and I have made it so that the unit-type that made it isn't affected by by the damage or speed reduction.

Code:
        (Unit-type of (Triggering unit)) Not equal to Azog
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.

See?

Thanks for pointing out the problem with removing the units from the unit group, surprisingly that made it work, thank you.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top