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

Aquaform Field v1.2

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Aquaform Field
[Channeling, Instant cast]
Description: Hero focus to channel an Aquatic Field which deal damage to any enemy comes close. In the magic of water conjunction, he (or she) form water into their shapes, having the same in damage (100%) and cannot be controlled nor attacked by any unit. If hero stop channel the spell, all illusions and damage are gone. While channeling, hero loses mana per second. If enemy hero is effected by this spell, the illusion will have 50% damage of the real one.
Has 600 AoE on all levels. Units already been copied by the same spell will not get copied again
Level 1: Dealing 55 damage per second. Illusions last for 30 seconds. Drains 6 mana/second
Level 2: Dealing 80 damage per second. Illusions last for 35 seconds. Drains 7 mana/second
Level 3: Dealing 105 damage/second. Illusions last for 40 seconds. Drains 8 mana/second
Level 4: Dealing 130 damage/second. Illusions last for 45 seconds. Drains 9 mana/second
  • Aquaform Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- DAMAGE SET --------
      • -------- Damage is deal each interval of the channel, base is 0.25 seconds --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_DamageSet[1] = 30.00
      • -------- Ability's Damage Base --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_DamageSet[2] = 25.00
      • -------- Damage Increment each ability level --------
      • -------- END OF DAMAGE SET --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_ManaBufferRequire = 4.00
      • -------- Mana Required to let the spell works. If caster's mana goes below this amount, he stop casting/spell won't work --------
      • -------- This amount should be lower than the mana drain per second --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Effect[1] = Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
      • -------- Special Effects on the creation of Units image. This effect attach to enemy units --------
      • -------- And on Illusions death --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Effect[2] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
      • -------- Special Effects in damage dealing. This effect attach to enemy units --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Effect[3] = Objects\Spawnmodels\NightElf\NEDeathMedium\NEDeath.mdl
      • -------- Special Effects on Caster every 0.25second --------

  • Aquaform Field Start
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Aquaform Field
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set MUIID = (Custom value of TempUnit)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- SPELL SETTINGS --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_ManaperSecond[MUIID] = (5.00 + (1.00 x (Real((Level of (Ability being cast) for TempUnit)))))
      • -------- Mana Cost per second while channeling the spell --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_IllusionDurations[MUIID] = (25.00 + (5.00 x (Real((Level of (Ability being cast) for TempUnit)))))
      • -------- Illusions Timed Life --------
      • -------- If wanted, you could set them to pemanent. Which will make them disappear when the caster stop channel the spell --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Caster[MUIID] = TempUnit
      • -------- Caster Set --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Check[MUIID] = True
      • -------- When this boolean goes False, the spell stops --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- This could be a problem to who using the caster's custom value on something else. But i just can think of this way --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Damage[MUIID] = (Aquaform_DamageSet[1] + (Aquaform_DamageSet[2] x (Real((Level of (Ability being cast) for TempUnit)))))
      • -------- Damage per second --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Range[MUIID] = 600.00
      • -------- Arena of Effect --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Aquaform_Loc[MUIID] = (Position of TempUnit)
      • -------- Some points --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- END OF SPELL SETTINGS --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Aquaform_CasterGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn on Aquaform Field Act <gen>
        • Else - Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Unit Group - Add Aquaform_Caster[MUIID] to Aquaform_CasterGroup
      • -------- Add Caster to group for later usage --------
  • Aquaform Field Act
    • Events
      • Time - Every 0.25 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Aquaform_CasterGroup and do (Actions)
        • Loop - Actions
          • -------- The Bribe's Unit Indexing system's magic --------
          • Set TempUnit = (Picked unit)
          • Set MUIID = (Custom value of TempUnit)
          • Set Aquaform_TempPoint = (Position of TempUnit)
          • -------- The Bribe's Unit Indexing system's magic --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Aquaform_Check[MUIID] Equal to True
            • Then - Actions
              • Special Effect - Create a special effect at Aquaform_TempPoint using Aquaform_Effect[3]
              • Special Effect - Destroy (Last created special effect)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Mana of TempUnit) Less than or equal to Aquaform_ManaBufferRequire
                • Then - Actions
                  • Unit - Order TempUnit to Stop
                  • -------- The Caster is out of mana, so he's got a stop to stop channeling the spell --------
                  • Unit Group - Remove TempUnit from Aquaform_CasterGroup
                  • -------- Then we remove caster from caster group --------
                  • -------- And if the Group is empty, this trigger is useless, so we do this: --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Aquaform_CasterGroup is empty) Equal to True
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
                  • Unit - Set mana of TempUnit to ((Mana of TempUnit) - (Aquaform_ManaperSecond[MUIID] / 4.00))
                  • -------- //////////////////////////////////////////// --------
                  • -------- Wondering why I devide the value to 4? --------
                  • -------- Since the inteval of the trigger is 0.25 --------
                  • -------- That's mean in one second, trigger needs to run 4 times --------
                  • -------- Doing this will make it more relistic in the mana drainning --------
                  • -------- //////////////////////////////////////////// --------
                  • -------- Picking Unit in AoE --------
                  • -------- //////////////////////////////////////////// --------
                  • Set Aquaform_EffectedGroup = (Units within Aquaform_Range[MUIID] of Aquaform_TempPoint matching ((((Matching unit) belongs to an enemy of (Owner of TempUnit)) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is A structure) Equal to False) and
                  • Unit Group - Pick every unit in Aquaform_EffectedGroup and do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is in Aquaform_IllusionCreatedGroup) Equal to False
                        • Then - Actions
                          • Unit - Create 1 (Unit-type of (Picked unit)) for (Owner of TempUnit) at Aquaform_TempPoint facing Default building facing degrees
                          • Unit Group - Add (Picked unit) to Aquaform_IllusionCreatedGroup
                          • Unit - Set the custom value of (Last created unit) to MUIID
                          • Unit - Add a Aquaform_IllusionDurations[MUIID] second Generic expiration timer to (Last created unit)
                          • Unit - Add Locust to (Last created unit)
                          • Animation - Change (Last created unit)'s vertex coloring to (0.00%, 0.00%, 100.00%) with 35.00% transparency
                          • -------- Change transperence and color --------
                          • Unit Group - Add (Last created unit) to Aquaform_IllusionGroup
                          • -------- Add to Illusion Group for later usage --------
                          • Unit - Order (Last created unit) to Attack (Picked unit)
                          • -------- You can't control it so I order it for you >:D --------
                          • Unit - Cause Aquaform_Caster[MUIID] to damage (Picked unit), dealing Aquaform_Damage[MUIID] damage of attack type Spells and damage type Normal
                          • -------- Blast the water into enemy faces --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked unit) is A Hero) Equal to True
                            • Then - Actions
                              • Hero - Set (Last created unit) Hero-level to ((Hero level of (Picked unit)) / 2), Hide level-up graphics
                              • Hero - Disable experience gain for (Last created unit)
                            • Else - Actions
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Aquaform_Effect[1]
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                          • Unit - Cause Aquaform_Caster[MUIID] to damage (Picked unit), dealing Aquaform_Damage[MUIID] damage of attack type Spells and damage type Normal
                          • -------- Blast the water into enemy faces --------
                          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Aquaform_Effect[2]
                          • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • Unit Group - Remove TempUnit from Aquaform_CasterGroup
              • Unit Group - Pick every unit in Aquaform_IllusionGroup and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Aquaform_IllusionGroup is empty) Equal to True
                    • Then - Actions
                      • Custom script: call DestroyGroup(udg_Aquaform_IllusionGroup)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Aquaform_IllusionCreatedGroup is empty) Equal to True
                    • Then - Actions
                      • Custom script: call DestroyGroup(udg_Aquaform_IllusionCreatedGroup)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Custom value of (Picked unit)) Equal to MUIID
                    • Then - Actions
                      • Special Effect - Create a special effect attached to the origin of (Picked unit) using Aquaform_Effect[1]
                      • Special Effect - Destroy (Last created special effect)
                      • Unit Group - Remove (Picked unit) from Aquaform_IllusionGroup
                      • Unit - Remove (Picked unit) from the game
                    • Else - Actions
              • Unit Group - Pick every unit in Aquaform_IllusionCreatedGroup and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is in Aquaform_EffectedGroup) Equal to True
                    • Then - Actions
                      • Do nothing
                    • Else - Actions
                      • Unit Group - Remove (Picked unit) from Aquaform_IllusionCreatedGroup
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Aquaform_CasterGroup is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
  • Custom script: call RemoveLocation(udg_Aquaform_TempPoint)
    • -------- Those action above to clean leaks/decrease memory usage --------
  • Aquaform Field End
    • Events
      • Unit - A unit Stops casting an ability
    • Conditions
      • (Ability being cast) Equal to Aquaform Field
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set MUIID = (Custom value of TempUnit)
      • Set Aquaform_Check[MUIID] = False
      • -------- Set the active boolean to false so the trigger stop getting this unit --------
  • Effected Group Remove
    • Events
      • Unit - A unit Dies
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • ((Triggering unit) is in Aquaform_EffectedGroup) Equal to True
          • ((Triggering unit) is in Aquaform_IllusionGroup) Equal to True
    • Actions
      • Set TempUnit = (Picked unit)
      • Set Aquaform_TempPoint = (Position of TempUnit)
      • Special Effect - Create a special effect at Aquaform_TempPoint using Aquaform_Effect[1]
      • Special Effect - Destroy (Last created special effect)
      • Unit Group - Remove (Triggering unit) from Aquaform_IllusionGroup
      • Unit - Remove (Triggering unit) from the game
      • Custom script: call RemoveLocation(udg_Aquaform_TempPoint)


Credits:
Bribe - for his unit indexing system
defskull - for inspiring me making spells in more advances and more fun
Magtheridon96 - for suggestions lead to improvements
Blizzard - for their awesome game called Warcraft 3

The Idea inspired by Morphing hero in DotA. Not the ability, but the hero with water form and can copy another unit's shape made me come up to this
This is my very first spell on HIVE. I created spells but this is the 1st one in MUI-intention :ogre_haosis: [facepalm]
Hope you can show me mistakes (if there is) and help me fix them out in order to improve the spell as well as my skill :ogre_love:
Credits to me if you wanted to :), and please give feedbacks/comment/rating. Thanks

Changelogs
+10/08/2012 - Upload on HIVE with version 1.0
+10/08/2012 - Update to version 1.1
Improve/Replace the Unit Indexing System as Magtheridon96's suggestion
Improve some point pointed out by Magtheridon96
=>>Thank you<<=
+10/08/2012 - Update to version 1.2
Remove some leaks
Remove unused variables

Keywords:
aquaform, field, AoE, Striker21, marine, sea, water, blast, copy, illusion, image
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 11:03, 10th Aug 2012 Magtheridon96: Set Aquaform_EffectedGroup = (Units within Aquaform_Range[MUIID] of Aquaform_TempPoint matching ((((Matching unit) belongs to an enemy of (Owner of...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

11:03, 10th Aug 2012
Magtheridon96:

    • Set Aquaform_EffectedGroup = (Units within Aquaform_Range[MUIID] of Aquaform_TempPoint matching ((((Matching unit) belongs to an enemy of (Owner of TempUnit)) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is A structure) Equal to False) and
    You're not removing this group.
  • When you create the dummy unit in the loop store it into a variable. Don't repeat (Last created unit) multiple times, it's quite slow. Use the variable instead.
  • In the "Cast" trigger, store the level of the ability into a variable instead of repeating (Level of ...) multiple times. It's quite slow.
  • Do the same thing for (Picked unit) inside the group enumeration blocks.
  • Delete the "Do nothing" line. It does nothing but consume CPU.
 
Top