• Check out the results of the Techtree Contest #19!
  • Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

[SD/Modeling] Looking for a basic AOE contracting/inward pull effect

Status
Not open for further replies.
Level 5
Joined
Mar 18, 2023
Messages
63
Hello Hiveworkshop folks. I'm looking something like this but having it be the opposite. I want it to start in a large circle that contracts inward. I don't mind it being basic and looking like the exact example I posted, but I do wish its color to be brown or orange if possible. Thank you ahead of time if someone can help me!
 
Apologies for the disturbance but can you share the triggers? I'm interested too!
Hey there. So I'm just attaching the AOE model to a dummy unit and then using Animation Speed to change how fast it animates. Then I use Expiration Timer to change how long I want it to last for

  • Untitled Trigger 001
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Animate Dead
    • Actions
      • Set VariableSet TempPoint[0] = (Position of (Triggering unit))
      • Unit - Create 1 Orange Contract AOE (Godzilla W) for (Owner of (Triggering unit)) at TempPoint[0] facing Default building facing degrees
      • Animation - Change (Last created unit)'s animation speed to 165.00% of its original speed
      • Unit - Add a 3.40 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation (udg_TempPoint[0])
 
^ You can also use Special Effects, which is recommended if you care about performance. Gets rid of the overhead that comes with spawning in an entire Unit along with avoiding bloat in the Object Editor. To destroy the effect after a delay (like your expiration timer) you could setup a rather simple system that relies on Waits or Timers if you want exact precision.
 
Hey there. So I'm just attaching the AOE model to a dummy unit and then using Animation Speed to change how fast it animates. Then I use Expiration Timer to change how long I want it to last for

  • Untitled Trigger 001
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Animate Dead
    • Actions
      • Set VariableSet TempPoint[0] = (Position of (Triggering unit))
      • Unit - Create 1 Orange Contract AOE (Godzilla W) for (Owner of (Triggering unit)) at TempPoint[0] facing Default building facing degrees
      • Animation - Change (Last created unit)'s animation speed to 165.00% of its original speed
      • Unit - Add a 3.40 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation (udg_TempPoint[0])
Thanks! Also I thought this was a w3x file, not an mdx one. Sorry for the confusion!
 
^ You can also use Special Effects, which is recommended if you care about performance. Gets rid of the overhead that comes with spawning in an entire Unit along with avoiding bloat in the Object Editor. To destroy the effect after a delay (like your expiration timer) you could setup a rather simple system that relies on Waits or Timers if you want exact precision.
Unfortunately, I didn't know about Special Effects till much later and wasn't able to find the universal dummy.mdx. I exported mine recently from an unprotected map. I do intend on revisting all my dummies and clearing them up, with the exception of a few due to specific mechanics
 
Unfortunately, I didn't know about Special Effects till much later and wasn't able to find the universal dummy.mdx. I exported mine recently from an unprotected map. I do intend on revisting all my dummies and clearing them up, with the exception of a few due to specific mechanics
Another thing about Dummy units that most get wrong - If your Dummy unit doesn't act like a Missile (another obsolete mechanic) then it should be setup as follows: Copy and paste the Locust -> Set Movement Type = None, Speed Base = 0, Attacks Enabled = None, Model = None, Shadow = None.

That allows it to cast spells "instantly", assuming the spell is setup to be requirement-free.

Also, just to clarify on the trigger:
  • Actions
    • Set VariableSet TempPoint[0] = (Position of (Triggering unit))
    • Special Effect - Create a special effect at TempPoint[0] using AOE.mdx
    • Custom script: call RemoveLocation( udg_TempPoint[0] )
    • Special Effect - Set Time Scale of (Last created special effect) to 1.65
    • Set VariableSet SFX_Destroy_After = 1.40
    • Trigger - Run SFX_Destroy_System (ignoring conditions)
The last bit is an example system to handle destroying it, which would either run a Jass function or another trigger that runs some Jass code that detects the (Last created special effect), stores it in a Hashtable along with a Timer, starts the Timer, and Destroys both when the Timer expires.
 
Another thing about Dummy units that most get wrong - If your Dummy unit doesn't act like a Missile (another obsolete mechanic) then it should be setup as follows: Copy and paste the Locust -> Set Movement Type = None, Speed Base = 0, Attacks Enabled = None, Model = None, Shadow = None.

That allows it to cast spells "instantly", assuming the spell is setup to be requirement-free.

Also, just to clarify on the trigger:
  • Actions
    • Set VariableSet TempPoint[0] = (Position of (Triggering unit))
    • Special Effect - Create a special effect at TempPoint[0] using AOE.mdx
    • Custom script: call RemoveLocation( udg_TempPoint[0] )
    • Special Effect - Set Time Scale of (Last created special effect) to 1.65
    • Set VariableSet SFX_Destroy_After = 1.40
    • Trigger - Run SFX_Destroy_System (ignoring conditions)
The last bit is an example system to handle destroying it, which would either run a Jass function or another trigger that runs some Jass code that detects the (Last created special effect), stores it in a Hashtable along with a Timer, starts the Timer, and Destroys both when the Timer expires.
This going to be bad, but I haven't used any hashtables yet, despite knowing it too :xxd:. My mate already used 1. So far for me, there isn't a need for it (for now), but I know I'll use it in future. For what you posted here, I SSed it and will try it when I can. I'm more motivated for stuff like this since its not as time consuming as having to go back and updating a buncha stuff haha
 
Status
Not open for further replies.
Back
Top