• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

buff /effect trigger

Status
Not open for further replies.
Level 4
Joined
Aug 18, 2011
Messages
73
hi everyone
i tried to use this trigger to add a freeze effect and slowing down enemy units with buff Cold of cone

what wrong with this trigger and why it wont work?
  • Cone of Cold buff
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Picked unit) has buff Cone of Cold ) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Set (Picked unit) movement speed to ((Current movement speed of (Picked unit)) - ((Current movement speed of (Picked unit)) x 0.60))
          • Animation - Change (Picked unit)'s vertex coloring to (0.00%, 0.00%, 100.00%) with 0.00% transparency
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) has buff Cone of Cold ) Equal to False
            • Then - Actions
              • Animation - Change (Picked unit)'s vertex coloring to (0.00%, 0.00%, 100.00%) with 0.00% transparency
              • Unit - Set (Picked unit) movement speed to (Default movement speed of (Picked unit))
            • Else - Actions
and how can i fix it? i need the pros guide!
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
I think you should do;
  • Unit - Set (Picked unit) movement speed to ((Default movement speed of (Picked unit)) - ((Default movement speed of (Picked unit)) x 0.60))
but that is bad also, coz you're checking everytime, so you should put a condition to run it just one time...

BTW:
- your group leaks
- This is useless " ((Picked unit) has buff Cone of Cold ) Equal to False" since it will filter the ONLY the unit who has that buff
- Picking units in playable map area to check buff using a looper 1.0/sec is bad coz you need to off this trigger somehow

SUGGETIONS:
- Make a group variable, if this is a spell, add the target to that group
- PIck all units in THAT GROUP and put conditions like you mentioned above, this way it will pick units with or w/o buff
- If no buff detecetd, remove unit from group

EDIT; something like this
  • Cone of Cold buff
  • Events
    • Time - Every 1.00 seconds of game time
  • Conditions
  • Actions
    • Unit Group - Pick every unit in (YOUR_GROUP) and do (Actions)
      • Loop - Actions
        • If - Conditions ((Picked unit) has buff Cone of Cold ) Equal to False
        • Then - Actions
          • Animation - Change (Picked unit)'s vertex coloring to (0.00%, 0.00%, 100.00%) with 0.00% transparency
          • Unit - Set (Picked unit) movement speed to (Default movement speed of (Picked unit))
          • Custom script: call GroupRemoveUnit(udg_YOUR_GROUP, GetEnumUnit())
          • Custom script: if IsUnitGroupEmptyBJ(udg_YOUR_GROUP) then
          • Trigger - Turn Off this trigger
          • Custom script: endif
        • Else - Actions
 
Status
Not open for further replies.
Top