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

Omnistrike v0.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This is my new spell based on origin Omnislash:

OMNISTRIKE
The WTF warps around the battlefield slashing enemy units and leave some explosion with 100 Damage each at a random point around him, damaging them and sacrifice his blood to create a part of himself every hit. Each part has 50 HPmax, 2 damage and after 5 second, they explose, deal 20% (Max HP - CurrentHP) Damage to units in 300 AoE.

Level 1 - 3 Slashes, 50 Damage Base, 1.5x Agility Damage, 16,5% HP loses each slash and 4 explosions maximum.
Level 2 - 5 Slashes, 50 Damage Base, 2x Agility Damage, 10% HP loses each slash and 6 explosions maximum.
Level 3 - 7 Slashes, 50 Damage Base, 2.5x Agility Damage, 7% HP loses each slash and 8 explosions maximum.

I think Yurnero's Ultimate in Dota Imba should be replaced by this...

Keywords:
Yurnero, imba, omnislash, omnistrike, dota, insane
Contents

Omnistrike IMBA v0.1 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 18:14, November 17 2012 Magtheridon96: - Don't repeat things like (Attacking unit) and (Attacked unit). Store them into variables and use those. - Don't use an "Attack" event in your...

Moderator

M

Moderator

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

18:14, November 17 2012
Magtheridon96:

- Don't repeat things like (Attacking unit) and (Attacked unit). Store them into variables and use those.
- Don't use an "Attack" event in your spell, use a Damage event. Here's a resource that should be useful: Click here.
- You have leaks everywhere. Locations, groups and special effects all leak, so you need to remove them.
This thread should show you how to remove leaks properly.
Remember, store them, and then call either RemoveLocation or DestroyGroup. (for locations and groups respectively)
- Dying unit -> Triggering unit
- You should have configuration triggers that run on map initialization. These triggers allow the user to configure the spell and change things like the special effect path, damage per level, base damage or pretty much anything concerning the spell. Some spells even allow you to configure whether you want them to destroy trees or not.
- Casting unit -> Triggering unit
-
  • Set CL_RdLoc[Temp] = (Random point in (Region centered at (Position of CL_Caster[Temp]) with size (CL_AOE[Temp] CL_AOE[Temp])))
Over here, you're leaking the position of the caster, and the region.
Seriously though, you totally do not need regions here. Just store the position of the caster into a variable, then choose a random distance (store it in a real variable), and a random angle (store it in a real variable), and then use the distance and the angle to have a new location based on the position of the caster with an offset using the distance you got and the angle.

-
There are plenty of leaks in all your spells. Some examples:
  • Unit - Create 1 WTF for CL_Player[Temp] at (Position of CL_Caster[Temp]) facing (Facing of CL_Caster[Temp]) degrees
^ The position of the caster leaks here.
  • Special Effect - Create a special effect attached to the weapon of CL_illusion[Temp] using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
  • Special Effect - Create a special effect attached to the hand, left of CL_illusion[Temp] using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
^ These two special effects are never removed after they're created, so they leak.

-
  • Set CL_Group[1] = (Units within CL_AOE[Temp] of CL_Loc[1] matching ((((Matching unit) is A structure) Equal to false) and ((((Matching unit) is alive) Equal to true) and (((Matching unit) belongs to an enemy of CL_Player[Temp]) Equal to true))))
In your loop trigger, this line would only be useful if you needed to pick a random unit, but the only case in which you're going to pick a random unit lies within an If block. Why not move this line to the Else actions of the If block right under it, and then move the line that destroys the group (The one that does: call DestroyGroup(udg_CL_Group[1])) to the same block of code as well.

- Cache (Last created unit) into a variable and use that variable instead of repeating (Last created unit) more than once to increase performance and cleanliness of the code.
- In the OS Illuslash trigger, since you have this line of code: "Custom script: call DestroyGroup( udg_CL_Group2[1] )", in the Else and the Then actions, you might as well keep one of them and move it to the end of the trigger. This way, you don't have to repeat this line twice.
- In the OS Illuslash trigger, when you set the group variable, you're leaking a location. You're leaking a location when you move the unit too.
- I don't understand why you're using CL_Group[1] followed by an evaluation of CL_Group[Temp] in your OS Illuslash trigger. It's as if these spells aren't MUI. In order to make it MUI, merge both of those triggers that run every 0.4 seconds. They are going to execute in sync. Currently, the effects by the OS Illuslash trigger are not MUI, and only work for 1 instance of the spell casting.
- In the Dummy killing trigger, you have location leaks everywhere. You also have group leaks such as: ((Units of type WTF) is empty) Equal to true. Seriously forget that line. Keep the trigger on at all times because (Units of type something) will create a permanent leak.

This spell needs a lot of work in order to be approved.
 
Level 28
Joined
Oct 28, 2011
Messages
4,759
here is your trigger

  • Omnistrike
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Omnistrike
    • Actions
      • -------- Indexing Start --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI_1 Equal to 0
        • Then - Actions
          • -------- If there are currently no instances running, we turn on the loop. --------
          • Trigger - Turn on OS Loop <gen>
          • Trigger - Turn on Illusions Die <gen>
        • Else - Actions
      • -------- Increase the indexes --------
      • Set MUI_1 = (MUI_1 + 1)
      • -------- End of Indexing --------
      • -------- Start of Dynamic Indexing --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI_1 Greater than Max_Index
        • Then - Actions
          • -------- Indexing ~~ --------
          • Set MUI_2[MUI_1] = MUI_1
          • Set Max_Index = MUI_1
        • Else - Actions
      • -------- End of Dynamic Indexing --------
      • -------- Makes it easier to read and cleaner. --------
      • Set Temp = MUI_2[MUI_1]
      • -------- The MUI boolean --------
      • -------- Setting The Caster --------
      • Set CL_Caster[Temp] = (Casting unit)
      • -------- Setting the Player --------
      • Set CL_Player[Temp] = (Owner of CL_Caster[Temp])
      • -------- Setting the Targeted unit --------
      • Set CL_Target[Temp] = (Target unit of ability being cast)
      • -------- Setting the ability level for the caster --------
      • Set CL_AbilityLevel[Temp] = (Level of Omnistrike for CL_Caster[Temp])
      • -------- ***Here you can change the number of slashes*** --------
      • Set CL_Slashes[Temp] = (1 + (2 x CL_AbilityLevel[Temp]))
      • -------- ***Here you can change the damage dealt*** --------
      • Set CL_Damages[Temp] = (((Real((Agility of CL_Caster[Temp] (Include bonuses)))) x (((Real(CL_AbilityLevel[Temp])) / 2.00) + 1.00)) + 50.00)
      • -------- ***Here you can change the AOE in which the hero teleports and the explosion*** --------
      • Set CL_AOE[Temp] = 800.00
      • -------- This is used to count the slashes --------
      • Set CL_Count[Temp] = 0
      • -------- *** Change this to "False" if you dont want the targeted unit to get slashed first, instead a random unit near him. --------
      • Set CL_FirstTarget[Temp] = True
      • -------- The HP which it's sacrified each slash to create illusions. --------
      • Set CL_HPCost[Temp] = ((Life of CL_Caster[Temp]) / (((Real(CL_Slashes[Temp])) x 2.00) + 2.00))
      • -------- ***Here you can change the effect on the weapon of the hero*** --------
      • Special Effect - Create a special effect attached to the weapon of CL_Caster[Temp] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
      • Set CL_Special[Temp] = (Last created special effect)
      • Special Effect - Create a special effect attached to the hand, left of CL_Caster[Temp] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
      • Set CL_Special2[Temp] = (Last created special effect)
      • -------- Pausing the Caster --------
      • Unit - Make CL_Caster[Temp] Invulnerable
      • -------- Adding some vertex coloring and transparency (fade). --------
      • Animation - Change CL_Caster[Temp]'s vertex coloring to (50.00%, 40.00%, 40.00%) with 30.00% transparency
      • -------- Changes animation speed for smooth slashing. --------
      • Animation - Change CL_Caster[Temp]'s animation speed to 250.00% of its original speed
      • -------- --------------------------------------------------------- --------
  • OS Loop
    • Events
      • Time - Every 0.40 seconds of game time
    • Conditions
    • Actions
      • For each (Integer MUI_3) from 1 to MUI_1, do (Actions)
        • Loop - Actions
          • -------- Makes it easier to read and cleaner. --------
          • Set Temp = MUI_2[MUI_3]
          • -------- Counting the number of slashes --------
          • Set CL_Count[Temp] = (CL_Count[Temp] + 1)
          • -------- Setting loc to prevent leak --------
          • Set CL_Loc[1] = (Position of CL_Target[Temp])
          • -------- Sacrifices blood --------
          • Unit - Set life of CL_Caster[Temp] to ((Life of CL_Caster[Temp]) - CL_HPCost[Temp])
          • -------- ...Create a random location for the explosion... --------
          • Set CL_RdLoc[Temp] = (Random point in (Region centered at (Position of CL_Caster[Temp]) with size (CL_AOE[Temp], CL_AOE[Temp])))
          • -------- Explose SFX --------
          • Special Effect - Create a special effect at CL_RdLoc[Temp] using Abilities\Spells\Other\Doom\DoomDeath.mdl
          • Special Effect - Destroy (Last created special effect)
          • -------- Damage enemies in 350 AoE of that point --------
          • Set CL_Group[2] = (Units within 350.00 of CL_RdLoc[Temp] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of CL_Player[Temp]) Equal to True))))
          • Unit Group - Pick every unit in CL_Group[2] and do (Actions)
            • Loop - Actions
              • Unit - Cause CL_Caster[Temp] to damage (Picked unit), dealing 100.00 damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
              • Special Effect - Destroy (Last created special effect)
          • -------- Setting the group in which the hero warps --------
          • Set CL_Group[1] = (Units within CL_AOE[Temp] of CL_Loc[1] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of CL_Player[Temp]) Equal to True))))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CL_FirstTarget[Temp] Equal to True
            • Then - Actions
              • -------- Moving hero to target --------
              • Unit - Move CL_Caster[Temp] instantly to CL_Loc[1]
              • -------- Making the hero face the target --------
              • Unit - Make CL_Caster[Temp] face CL_Loc[1] over 0.00 seconds
              • -------- Damaging the target --------
              • Unit - Cause CL_Caster[Temp] to damage CL_Target[Temp], dealing CL_Damages[Temp] damage of attack type Hero and damage type Normal
              • -------- Attack animation for eye candy --------
              • Animation - Play CL_Caster[Temp]'s attack slam animation
              • -------- Create Illusion --------
              • Unit - Create 1 WTF for CL_Player[Temp] at (Position of CL_Caster[Temp]) facing (Facing of CL_Caster[Temp]) degrees
              • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
              • -------- Make it looks unlike the real one but the percentage HPs look the same --------
              • Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 25.00% transparency
              • Unit - Set life of (Last created unit) to (Percentage life of CL_Caster[Temp])%
              • Unit - Set (Last created unit) movement speed to ((Current movement speed of CL_Caster[Temp]) x 1.25)
              • Unit - Order (Last created unit) to Attack CL_Target[Temp]
              • -------- The "Blood" effect. It should be more than 1 to look clearly. You may change this. --------
              • Special Effect - Create a special effect attached to the chest of CL_Target[Temp] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
              • Special Effect - Destroy (Last created special effect)
              • -------- And the Blink effect. --------
              • Special Effect - Create a special effect attached to the weapon of CL_Caster[Temp] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
              • Special Effect - Destroy (Last created special effect)
              • -------- Setting the boolean to false else the target will get hit the whole time. --------
              • Set CL_FirstTarget[Temp] = False
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (CL_Caster[Temp] is alive) Equal to True
                  • CL_Count[Temp] Less than or equal to CL_Slashes[Temp]
                  • (Number of units in CL_Group[1]) Greater than 0
                • Then - Actions
                  • -------- Setting the next target of the hero --------
                  • Set CL_Victim[Temp] = (Random unit from CL_Group[1])
                  • -------- Setting the loc of the target to prevent leak --------
                  • Set CL_Loc[2] = (Position of CL_Victim[Temp])
                  • Set CL_Loc[3] = (CL_Loc[2] offset by 50.00 towards (Random angle) degrees)
                  • -------- Moving hero to target --------
                  • Unit - Move CL_Caster[Temp] instantly to CL_Loc[3]
                  • -------- Making the hero face the target --------
                  • Unit - Make CL_Caster[Temp] face CL_Loc[2] over 0.00 seconds
                  • -------- Damaging the target --------
                  • Unit - Cause CL_Caster[Temp] to damage CL_Victim[Temp], dealing CL_Damages[Temp] damage of attack type Hero and damage type Normal
                  • -------- Attack animation for eye candy --------
                  • Animation - Play CL_Caster[Temp]'s attack slam animation
                  • -------- Create Illusion --------
                  • Unit - Create 1 WTF for CL_Player[Temp] at (Position of CL_Caster[Temp]) facing (Facing of CL_Caster[Temp]) degrees
                  • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
                  • -------- Make it looks unlike the real one but the percentage HPs look the same --------
                  • Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 25.00% transparency
                  • Unit - Set life of (Last created unit) to (Percentage life of CL_Caster[Temp])%
                  • Unit - Set (Last created unit) movement speed to ((Current movement speed of CL_Caster[Temp]) x 1.25)
                  • Unit - Order (Last created unit) to Attack CL_Victim[Temp]
                  • -------- The "Blood" effect. You may change this. --------
                  • Special Effect - Create a special effect attached to the chest of CL_Victim[Temp] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- The Blink effect. You may change this too. --------
                  • Special Effect - Create a special effect attached to the weapon of CL_Caster[Temp] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Removing Point Leaks --------
                  • Custom script: call RemoveLocation( udg_CL_Loc[2] )
                  • Custom script: call RemoveLocation( udg_CL_Loc[3] )
                • Else - Actions
                  • -------- Destroying his weapon effect --------
                  • Special Effect - Destroy CL_Special[Temp]
                  • Special Effect - Destroy CL_Special2[Temp]
                  • -------- Unpausing the caster --------
                  • Unit - Make CL_Caster[Temp] Vulnerable
                  • -------- Resetting the casters animations --------
                  • Animation - Change CL_Caster[Temp]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                  • Animation - Reset CL_Caster[Temp]'s animation
                  • -------- Recycling all the indexes --------
                  • Set MUI_2[MUI_3] = MUI_2[MUI_1]
                  • Set MUI_2[MUI_1] = Temp
                  • Set MUI_1 = (MUI_1 - 1)
                  • Set MUI_3 = (MUI_3 - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • MUI_1 Equal to 0
                    • Then - Actions
                      • -------- Turning off this trigger. Pointless to keep running --------
                      • Trigger - Turn off (This trigger)
                      • -------- --------------------------------------------------------- --------
                    • Else - Actions
          • -------- Removing Point Leaks --------
          • Custom script: call RemoveLocation( udg_CL_Loc[1] )
          • Custom script: call RemoveLocation( udg_CL_RdLoc[udg_Temp] )
          • -------- Removing Group Leak --------
          • Custom script: call DestroyGroup( udg_CL_Group[1] )
          • Custom script: call DestroyGroup( udg_CL_Group[2] )
  • Illusions Die
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to WTF
    • Actions
      • -------- The Illusion's explose effect --------
      • Special Effect - Create a special effect at (Position of (Dying unit)) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at (Position of (Dying unit)) using Objects\Spawnmodels\Orc\OrcLargeDeathExplode\OrcLargeDeathExplode.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- Damage every enemies's unit in 300 AoE of the illusion's --------
      • Set CL_Group[2] = (Units within 300.00 of (Position of (Dying unit)) matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of
      • Unit Group - Pick every unit in CL_Group[2] and do (Actions)
        • Loop - Actions
          • Unit - Cause CL_Caster[Temp] to damage (Picked unit), dealing (((Max life of CL_Caster[Temp]) - (Life of CL_Caster[Temp])) / 5.00) damage of attack type Spells and damage type Normal
      • -------- Remove the Unit and Group leak --------
      • Custom script: call DestroyGroup( udg_CL_Group[2] )
      • Unit - Remove (Dying unit) from the game
      • -------- All the illusions are gone->shut off this trigger --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Units of type WTF) is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
Top