• 🏆 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!

Aura by Klingo v1.00

There's a spell that I've made. This spell should be MUI , MPI , leakless and bugless.
NOTE: My spell is called Aura and there's nothing related to aura in warcraft 3 (like unholy aura)

~Aura~
The Sorcerer call divine's power to help him into his combat by sending a ray of light from the heaven which go hurt the ground. But the ray have special effect, If there's more ally in the area of effect , it will heal ally and if there's more enemy it will damage enemy.
Level 1: Heal/Deal 100.
Level 2: Heal/Deal 200.
Level 3: Heal/Deal 300.



  • Aura Init(initially on)
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Aura
    • Actions
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- I hope you enjoy my spell --------
      • -------- There's the triggers of my spell --------
      • -------- I've made documentation to explain to new (or maybe pro) how I've made the spell and how change somes things --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Those things are important for MUI, So , just don't touch to that --------
      • -------- As you can see, there's 2 integer variable which look same. Yes they are same but have 2 different function into the trigger so keep both --------
      • -------- The first one will be used as the Index, we set it +1 because the first time someone cast it will be 1 and the second time it will be 2 , so the values of variables won't get replaced by the new one --------
      • -------- The second will be require for recycle the index because the index can't go to infinity --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AuIndex[2] Equal to 0
        • Then - Actions
          • Trigger - Turn on Aura Periodic <gen>
        • Else - Actions
      • Set AuIndex[1] = (AuIndex[1] + 1)
      • Set AuIndex[2] = (AuIndex[2] + 1)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Here we set some values require for the spell --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Set AuCaster[AuIndex[1]] = (Triggering unit)
      • Set AuPlayer[AuIndex[1]] = (Owner of AuCaster[AuIndex[1]])
      • Set AuTargetPoint = (Target point of ability being cast)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- This is the Heal/Damage , that variable will be the heal or the damage , feel free to change the value --------
      • -------- Here I used a simple formula which change the value depending of the spell's level --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Set AuDamageHeal[AuIndex[1]] = (100.00 x (Real((Level of Aura for AuCaster[AuIndex[1]]))))
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Here we create the orb which will fall from the air. --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- simply don't touch to the 2 first action --------
      • Unit - Create 1 Aura[Orb] for AuPlayer[AuIndex[1]] at AuTargetPoint facing AuTargetPoint
      • Set AuOrb[AuIndex[1]] = (Last created unit)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Here we set the size of the orb , feel free to change this value --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Animation - Change AuOrb[AuIndex[1]]'s size to (300.00%, 300.00%, 300.00%) of its original size
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Here we set how far in the sky the orb will be , the "800.00" set his flying heigh and the "0.00" just don't touch that --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Animation - Change AuOrb[AuIndex[1]] flying height to 800.00 at 0.00
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- No comment on that , just don't touch it --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Unit Group - Add AuOrb[AuIndex[1]] to AuOrbGroup[AuIndex[1]]
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Here we create somes lights which add some eye candy to the spell --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • For each (Integer A) from 1 to 20, do (Actions)
        • Loop - Actions
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- the "20" is the number of lights --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Those two next variable are there to make their position random --------
          • -------- I recommand you to don't touch execpt if you want to change the Aoe , if you want it , change the "400.00" its the maximum they can go --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set AuLightsDistance = (Random real number between 0.00 and 400.00)
          • Set AuLightsAngle = (Random real number between 0.00 and 360.00)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Now we set where they'll appear --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set AuLightsPoint = (AuTargetPoint offset by AuLightsDistance towards AuLightsAngle degrees)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Now we create the lights and set the lights into a variable --------
          • -------- don't modify anything in those two actions --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Unit - Create 1 Aura[Lights] for AuPlayer[AuIndex[1]] at AuLightsPoint facing AuLightsPoint
          • Set AuLights = (Last created unit)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- I've set the size of lights to be more thin so it look like heaven's ray --------
          • -------- I don't recommend you to change the value but you still can do it at your own risk --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Animation - Change AuLights's size to (100.00%, 10.00%, 100.00%) of its original size
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Here i changed they animation speed to make them stay longer --------
          • -------- Again , I don't recommand you to change.......... --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Animation - Change AuLights's animation speed to 10.00% of its original speed
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- This will kill the lights after 3 seconds --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Unit - Add a 3.00 second Generic expiration timer to AuLights
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Here we set the random number to 0 , so we can avoid any kind of bug --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set AuLightsAngle = 0.00
          • Set AuLightsDistance = 0.00
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Removing Leaks , this is realy important because it can cause lag and other unwanted things --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: call RemoveLocation(udg_AuLightsPoint)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Removing Leaks , this is realy important because it can cause lag and other unwanted things --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_AuTargetPoint)
  • Aura Periodic(initally off)
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Putting action into a loop will make it MUI --------
      • -------- And it's important to use a custom integer variable instead of integer A or B --------
      • -------- Integer A or B can cause bug and we don't want bug --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • For each (Integer Au) from 1 to AuIndex[1], do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in AuOrbGroup[Au] and do (Actions)
            • Loop - Actions
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • -------- No comment about this , I think it's obvious what it suppose to do --------
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • Set AuOrb[Au] = (Picked unit)
              • Set AuOrbPoint[Au] = (Position of AuOrb[Au])
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • -------- Those two actions make the orb fall --------
              • -------- to change the falling speed , try to modify the "4.00" --------
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • Set AuFlyingHeight[Au] = ((Current flying height of AuOrb[Au]) - 4.00)
              • Animation - Change AuOrb[Au] flying height to AuFlyingHeight[Au] at 0.00
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • AuFlyingHeight[Au] Less than or equal to 0.00
                  • (AuOrb[Au] is alive) Equal to True
                • Then - Actions
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- This condition will kill the orb and make the explosion when the orb will hit the ground --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Unit - Kill AuOrb[Au]
                  • Unit - Create 1 Aura[Explosion] for AuPlayer[Au] at AuOrbPoint[Au] facing AuOrbPoint[Au]
                  • Set AuExplosion = (Last created unit)
                  • Animation - Change AuExplosion's size to (600.00%, 600.00%, 600.00%) of its original size
                  • Unit - Add a 1.00 second Generic expiration timer to AuExplosion
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- All below this , except remove leak , is the part if there's more enemy than ally , it damage enemy and if there's more ally it heal them --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Set AuDamageGroup = (Units within 400.00 of AuOrbPoint[Au] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of AuPlayer[Au]) Equal to True))))
                  • Set AuHealGroup = (Units within 400.00 of AuOrbPoint[Au] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an ally of AuPlayer[Au]) Equal to True))))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in AuDamageGroup) Greater than or equal to (Number of units in AuHealGroup)
                    • Then - Actions
                      • Unit Group - Pick every unit in AuDamageGroup and do (Actions)
                        • Loop - Actions
                          • Set AuTarget = (Picked unit)
                          • Special Effect - Create a special effect attached to the chest of AuTarget using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Unit - Cause AuCaster[Au] to damage AuTarget, dealing AuDamageHeal[Au] damage of attack type Spells and damage type Normal
                    • Else - Actions
                      • Unit Group - Pick every unit in AuHealGroup and do (Actions)
                        • Loop - Actions
                          • Set AuTarget = (Picked unit)
                          • Special Effect - Create a special effect attached to the chest of AuTarget using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Unit - Set life of AuTarget to ((Life of AuTarget) + AuDamageHeal[Au])
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- Those actions below are essential for the recycling index --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Set AuIndex[2] = (AuIndex[2] - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • AuIndex[2] Equal to 0
                    • Then - Actions
                      • Set AuIndex[1] = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- Removing Leaks , this is realy important because it can cause lag and other unwanted things --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Custom script: call DestroyGroup(udg_AuDamageGroup)
                  • Custom script: call DestroyGroup(udg_AuHealGroup)
                • Else - Actions
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • -------- Removing Leaks , this is realy important because it can cause lag and other unwanted things --------
              • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_AuOrbPoint[udg_Au])


Give Credit if you use it or edit it.

v1.00 : Upload the spell

Keywords:
Holy, Klingo, Heaven, Lights, Aura, Heal, Damage, Aoe.
Contents

Aura (Map)

Reviews
23:02, 16th Jun 2010 Hanky: Looks good enough. Approved! Just as hint: You could maybe improve the indexing system.

Moderator

M

Moderator

23:02, 16th Jun 2010
Hanky:
Looks good enough. Approved!

Just as hint: You could maybe improve the indexing system.
 
Level 9
Joined
Sep 5, 2015
Messages
369
the spell auto detected my "A001 ability" (or whatever) and auto filled it in
so if you want to download this
just be AWARE THAT THIS WILL HAPPEN MOST LIKELY

_All you have to do is go through the trigger and replace the spell it auto detected with the "aura spell" (the one you copy over from the map that is the actual ability)
_and also the 3 dummy's werent in place in the code either so you have to put them in (one time each into 3 different places where it was missing)
_also i believe this spell doesnt heal you or your units or allies. IT DOES DO DAMAGE AND LOOKS GREAT.

edit: still cant figure out how to make it heal. everything is working though maybe ill make my own trigger "when this is cast. wait 5 seconds and heal allies 25% of max health" or something xP

awesome ability though its pretty. im using it.
 
Last edited:
Top