Destroying special effects

YourFace

<span style="color:#9C9C9C;"><strong>Runner Up - T
Reaction score
91
Well you can destroy it but that won't actually stop the special effect from appearing (in many cases)
 

darkbeer

Beer is Good!
Reaction score
84
Code:
events: skip
conditions: skip
set EffectCount = 0
Unit Group - Pick every unit in (Units of type Footman) and do (Actions)
    Loop - Actions <--- AVOID LOOP thx
        If (All Conditions are True) then do (Then Actions) else do (ElseActions)
            If - Conditions
                (Unit-type of (picked unit)) Equal to Footman
            Then - Actions
                Set EffectCount = EffectCount + 1
                Special Effect - Create special effect (Picked unit) "effect"
                set Effect[EffectCount] = Last created special effect
            Else - Actions
Wait 1.00 seconds
For each integerA from 1 to EffectCount do Actions 
     Loop -Actions 
          Special Effect - Destroy Effect[integerA]

not MUI :(
 

YourFace

<span style="color:#9C9C9C;"><strong>Runner Up - T
Reaction score
91
yeah like flare said, when you're picking units/players a wait will unpick the units/ anything you're picking

so you can't actually wait one second

try creating 2 loops
one creating and one destroying
put the wait between there
 

Exide

I am amazingly focused right now!
Reaction score
448
Problem:
Its picking every "unit" meaning more than 1 so also creating multiple effects
Its an effect that still appears on the map until it is destroyed, such as trigger "destroy - special effect"
Destroy special effect <---- Only destroys 1 of the effects
What to fix: How do can I make this so it destroys all effects for all picked units?

Solution:
Add this trigger:
Code:
Special Effect Destruction
    Events
    Conditions
    Actions
        Custom script:   local effect tempEffect
        Custom script:   set tempEffect = udg_SpecialFX
        Custom script:   call PolledWait( 5.00 )
        Custom script:   set udg_SpecialFX = tempEffect
        Custom script:   call DestroyEffect( udg_SpecialFX )

This trigger needs a variable called SpecialFX of the type Special Effect.

If you prefer it in JASS: (It matters not.)
JASS:

function Trig_Special_Effect_Destruction_Actions takes nothing returns nothing
    local effect tempEffect
    set tempEffect = udg_SpecialFX
    call PolledWait( 5.00 )
    set udg_SpecialFX = tempEffect
    call DestroyEffect( udg_SpecialFX )
endfunction

//===========================================================================
function InitTrig_Special_Effect_Destruction takes nothing returns nothing
    local trigger gg_trg_Special_Effect_Destruction = CreateTrigger(  )
    call DisableTrigger( gg_trg_Special_Effect_Destruction )
    call TriggerAddAction( gg_trg_Special_Effect_Destruction, function Trig_Special_Effect_Destruction_Actions )
endfunction


Then simply add these two lines when you are using a special effect:
Code:
!example trigger!
events: skip
conditions: skip
set EffectCount = 0
Unit Group - Pick every unit in (Units of type Footman) and do (Actions)
    Loop - Actions <--- AVOID LOOP thx
        If (All Conditions are True) then do (Then Actions) else do (ElseActions)
            If - Conditions
                (Unit-type of (picked unit)) Equal to Footman
            Then - Actions
                Special Effect - Create special effect (Picked unit) "effect"
                [COLOR="Red"]Set SpecialFX = (Last created special effect)
                Trigger - Run Special Effect Destruction <gen> (ignoring conditions)[/COLOR]
            Else - Actions

And there you go!
 
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