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

Reign of Blades v1.4

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This spell was originated from f0rsAk3n. Not exactly CnP, just added extra stuff.

I enhanced the effects of the spell, making it into multiple blink strikes by multiple units at the same time. Mainly for enhancing AoS & Arena gameplay.

1. Hero casts the spell.
2. Two additional heroes are created.
3. Initiator strikes first.
4. 2nd hero strikes next.
5. 3rd hero strikes subsequently.
6. The team of 3 heroes takes turn to strike their targets respectively, creating an optical illusion of a gank in process.
7. Additional heroes are removed at the end of spell.


I'm posting this to see if the in-game effects are eye-candy or not (probably gonna replace with the Pandaren's 3 little pandas).

I will update this to a customizable version upon any request.

  • RoB
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Reign of Blades
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI1 Equal to 0
        • Then - Actions
          • Trigger - Turn on RoB Loop <gen>
        • Else - Actions
      • Set MUI1 = (MUI1 + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI1 Greater than Max_Index
        • Then - Actions
          • Set MUI2[MUI1] = MUI1
          • Set Max_Index = MUI1
        • Else - Actions
      • Set TempInteger = MUI2[MUI1]
      • Set TempInteger2 = TempInteger
      • Set User[TempInteger] = (Triggering unit)
      • Set Player[TempInteger] = (Owner of User[TempInteger])
      • Set User_Target[TempInteger] = (Target unit of ability being cast)
      • Set User_AbilityLevel[TempInteger] = (Level of Reign of Blades for User[TempInteger])
      • Set Slashes[TempInteger] = (5 x User_AbilityLevel[TempInteger])
      • Set Damage[TempInteger] = (75 x User_AbilityLevel[TempInteger])
      • Set User_AOE[TempInteger] = 400.00
      • Set Facing[TempInteger] = (Facing of User[TempInteger])
      • Set Count[TempInteger] = 0
      • Set FirstTarget[TempInteger] = True
      • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 20.00% transparency
      • Unit - Make User[TempInteger] Invulnerable
      • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
      • Set User_Special[TempInteger] = (Last created special effect)
      • Set User_Interval[TempInteger] = 0
      • Set User_Location[TempInteger2] = (Position of User[TempInteger])
      • Set SpawnRight_Location[TempInteger2] = (User_Location[TempInteger2] offset by 150.00 towards (Facing[TempInteger2] + 60.00) degrees)
      • Set SpawnLeft_Location[TempInteger2] = (User_Location[TempInteger2] offset by 150.00 towards (Facing[TempInteger2] + 300.00) degrees)
      • -------- Clone --------
      • For each (Integer TempInteger3) from 1 to 2, do (Actions)
        • Loop - Actions
          • Set MUI1 = (MUI1 + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • MUI1 Greater than Max_Index
            • Then - Actions
              • Set MUI2[MUI1] = MUI1
              • Set Max_Index = MUI1
            • Else - Actions
          • Set TempInteger = MUI2[MUI1]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TempInteger3 Equal to 1
            • Then - Actions
              • Set TempLocation = SpawnRight_Location[TempInteger2]
            • Else - Actions
              • Set TempLocation = SpawnLeft_Location[TempInteger2]
          • Unit - Create 1 CloneType[TempInteger3] for Player[TempInteger2] at TempLocation facing Facing[TempInteger2] degrees
          • Custom script: call RemoveLocation(udg_TempLocation)
          • Set User[TempInteger] = (Last created unit)
          • Set Player[TempInteger] = Player[TempInteger2]
          • Set User_Target[TempInteger] = User_Target[TempInteger2]
          • Set User_AbilityLevel[TempInteger] = User_AbilityLevel[TempInteger2]
          • Set Slashes[TempInteger] = Slashes[TempInteger2]
          • Set Damage[TempInteger] = Damage[TempInteger2]
          • Set User_AOE[TempInteger] = User_AOE[TempInteger2]
          • Set Count[TempInteger] = 0
          • Set FirstTarget[TempInteger] = True
          • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 20.00% transparency
          • Unit - Make User[TempInteger] Invulnerable
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TempInteger3 Equal to 1
            • Then - Actions
              • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
            • Else - Actions
              • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
          • Set User_Special[TempInteger] = (Last created special effect)
          • Set User_Interval[TempInteger] = TempInteger3
      • Custom script: call RemoveLocation(udg_User_Location[udg_TempInteger2])

  • RoB Loop
    • Events
      • Time - Every 0.30 seconds of game time
    • Conditions
    • Actions
      • For each (Integer MUI3) from 1 to MUI1, do (Actions)
        • Loop - Actions
          • Set TempInteger = MUI2[MUI3]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • User_Interval[TempInteger] Equal to 0
            • Then - Actions
              • Set User_Interval[TempInteger] = 2
              • Set Count[TempInteger] = (Count[TempInteger] + 1)
              • Set User_Location[1] = (Position of User_Target[TempInteger])
              • Set Group[1] = (Units within User_AOE[TempInteger] of User_Location[1] matching ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of Player[TempInteger]) Equal to True))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FirstTarget[TempInteger] Equal to True
                • Then - Actions
                  • Unit - Move User[TempInteger] instantly to User_Location[1]
                  • Unit - Make User[TempInteger] face User_Location[1] over 0.00 seconds
                  • Unit - Cause User[TempInteger] to damage User_Target[TempInteger], dealing (Real(Damage[TempInteger])) damage of attack type Normal and damage type Normal
                  • Special Effect - Create a special effect attached to the origin of User_Target[TempInteger] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Purely for attack animation purpose --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of User[TempInteger]) Equal to CloneType[2]
                    • Then - Actions
                      • Animation - Play User[TempInteger]'s slam animation
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Unit-type of User[TempInteger]) Equal to CloneType[1]
                        • Then - Actions
                          • Animation - Play User[TempInteger]'s attack animation
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Random integer number between 1 and 2) Equal to 1
                            • Then - Actions
                              • Animation - Play User[TempInteger]'s attack animation
                            • Else - Actions
                              • Animation - Play User[TempInteger]'s slam animation
                  • Special Effect - Create a special effect attached to the origin of User[TempInteger] using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set FirstTarget[TempInteger] = False
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (User[TempInteger] is alive) Equal to True
                      • Count[TempInteger] Less than or equal to Slashes[TempInteger]
                      • (Number of units in Group[1]) Greater than 0
                    • Then - Actions
                      • Set User_Target[TempInteger] = (Random unit from Group[1])
                      • Set User_Location[2] = (Position of User_Target[TempInteger])
                      • Set User_Location[3] = (User_Location[2] offset by 50.00 towards (Random angle) degrees)
                      • Unit - Move User[TempInteger] instantly to User_Location[3]
                      • Unit - Make User[TempInteger] face User_Location[2] over 0.00 seconds
                      • Unit - Cause User[TempInteger] to damage User_Target[TempInteger], dealing (Real(Damage[TempInteger])) damage of attack type Normal and damage type Normal
                      • Special Effect - Create a special effect attached to the origin of User_Target[TempInteger] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Unit-type of User[TempInteger]) Equal to CloneType[2]
                        • Then - Actions
                          • Animation - Play User[TempInteger]'s slam animation
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Unit-type of User[TempInteger]) Equal to CloneType[1]
                            • Then - Actions
                              • Animation - Play User[TempInteger]'s attack animation
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Random integer number between 1 and 2) Equal to 1
                                • Then - Actions
                                  • Animation - Play User[TempInteger]'s attack animation
                                • Else - Actions
                                  • Animation - Play User[TempInteger]'s slam animation
                      • Special Effect - Create a special effect attached to the origin of User[TempInteger] using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation( udg_User_Location[2] )
                      • Custom script: call RemoveLocation( udg_User_Location[3] )
                    • Else - Actions
                      • Special Effect - Destroy User_Special[TempInteger]
                      • Unit - Make User[TempInteger] Vulnerable
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Or - Any (Conditions) are true
                            • Conditions
                              • (Unit-type of User[TempInteger]) Equal to CloneType[1]
                              • (Unit-type of User[TempInteger]) Equal to CloneType[2]
                        • Then - Actions
                          • Unit - Remove User[TempInteger] from the game
                        • Else - Actions
                      • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                      • Animation - Reset User[TempInteger]'s animation
                      • Set MUI2[MUI3] = MUI2[MUI1]
                      • Set MUI2[MUI1] = TempInteger
                      • Set MUI1 = (MUI1 - 1)
                      • Set MUI3 = (MUI3 - 1)
              • Custom script: call RemoveLocation( udg_User_Location[1] )
              • Custom script: call DestroyGroup( udg_Group[1] )
            • Else - Actions
              • Set User_Interval[TempInteger] = (User_Interval[TempInteger] - 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI1 Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions

v1.0
- Uploaded.

v1.1
- Removed invulverability after the end of spell.
- Slashing interval duration increased to make the visual effect more visible.

v1.2
- Fixed the amount of slashes as indicated in spell tooltip.

v1.3
- Reduced trigger size, clones are created using loop now.
- Reduced creep's max hit points so that Level 3 kills them directly in one strike.
- Added computer-controlled units for testing MUI.
- Reduced search range from 800 to 400.

v1.4
- Fixed a careless point leak.
- Fixed few issues with variable referencing.


Keywords:
slash, multiple, blade, blademaster, sword, blink, strike
Contents

Reign of Blades v1.4 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 6 Dec 2011 Bribe: "User_Location" and "Group" do not need to be arrays, it is pointless, they should be normal variables because they are not dynamic like arrays. I am sure I have said this...

Moderator

M

Moderator

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

6 Dec 2011
Bribe: "User_Location" and "Group" do not need to be arrays, it is pointless, they should be normal variables because they are not dynamic like arrays. I am sure I have said this already.

You need to prefix your variables better. Currently the system could really break when a user tries to import it.

You could add a seperate trigger for configuring things that could be configured (like the "50.00" value in your offset location for example).

Also keep in mind when setting vertex coloring that the original unit coloring could have had different RGB values from what you got here.
 
Well, at least you didn't call it Omnislash. (We have >30 of those)
Did f0rsAk3n give you permission to use his code?

Also, you need to post the triggers.
You can post them inside [trigger][/trigger] tags.
The code remains his. I'm just adding some ideas to "renovate" his codes. But of course, I'm waiting for his reply. Triggers are posted up.

Was that supposed to be good or bad? Or just a meaningless spam?
 
In the 'Initiating' trigger, you set the (Triggering unit) to User[TempInt], and yet you continued to use (Triggering unit) in the rest of the trigger instead of the variable (in some areas)

Also, you shouldn't repeat reference things, you should store them into variables.
For example, here:

  • Set TempLocation = (User_Location[TempInteger2] offset by 150.00 towards ((Facing of User[TempInteger2]) + 300.00) degrees)
  • Unit - Create 1 Grom Hellscream (Possessed) for Player[TempInteger2] at TempLocation facing (Facing of User[TempInteger2]) degrees
You should store the (Facing of User[TempInteger2]) into a variable and use that instead (in the rest of the trigger)

Also, the unittype of the unit that's you're creating should be configurable (Put it in a variable and set it on Map Initialization for users to change easily)

And all this:

  • -------- First Clone --------
  • Set MUI1 = (MUI1 + 1)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • MUI1 Greater than Max_Index
      • Then - Actions
        • Set MUI2[MUI1] = MUI1
        • Set Max_Index = MUI1
      • Else - Actions
    • Set TempInteger = MUI2[MUI1]
    • Set TempLocation = (User_Location[TempInteger2] offset by 150.00 towards ((Facing of User[TempInteger2]) + 60.00) degrees)
    • Unit - Create 1 Blademaster of Blackrock Clan for Player[TempInteger2] at TempLocation facing (Facing of User[TempInteger2]) degrees
    • Custom script: call RemoveLocation(udg_TempLocation)
    • Set User[TempInteger] = (Last created unit)
    • Set Player[TempInteger] = Player[TempInteger2]
    • Set User_Target[TempInteger] = User_Target[TempInteger2]
    • Set User_AbilityLevel[TempInteger] = User_AbilityLevel[TempInteger2]
    • Set Slashes[TempInteger] = Slashes[TempInteger2]
    • Set Damage[TempInteger] = Damage[TempInteger2]
    • Set User_AOE[TempInteger] = User_AOE[TempInteger2]
    • Set Count[TempInteger] = 0
    • Set FirstTarget[TempInteger] = True
    • Unit - Pause User[TempInteger]
    • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
    • Animation - Change User[TempInteger]'s animation speed to 200.00% of its original speed
    • Unit - Make User[TempInteger] Invulnerable
    • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
    • Set User_Special[TempInteger] = (Last created special effect)
    • Set User_Interval[TempInteger] = 1
    • -------- Second Clone --------
    • Set MUI1 = (MUI1 + 1)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • MUI1 Greater than Max_Index
      • Then - Actions
        • Set MUI2[MUI1] = MUI1
        • Set Max_Index = MUI1
      • Else - Actions
    • Set TempInteger = MUI2[MUI1]
    • Set TempLocation = (User_Location[TempInteger2] offset by 150.00 towards ((Facing of User[TempInteger2]) + 300.00) degrees)
    • Unit - Create 1 Grom Hellscream (Possessed) for Player[TempInteger2] at TempLocation facing (Facing of User[TempInteger2]) degrees
    • Custom script: call RemoveLocation(udg_TempLocation)
    • Set User[TempInteger] = (Last created unit)
    • Set Player[TempInteger] = Player[TempInteger2]
    • Set User_Target[TempInteger] = User_Target[TempInteger2]
    • Set User_AbilityLevel[TempInteger] = User_AbilityLevel[TempInteger2]
    • Set Slashes[TempInteger] = Slashes[TempInteger2]
    • Set Damage[TempInteger] = Damage[TempInteger2]
    • Set User_AOE[TempInteger] = User_AOE[TempInteger2]
    • Set Count[TempInteger] = 0
    • Set FirstTarget[TempInteger] = True
    • Unit - Pause User[TempInteger]
    • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
    • Animation - Change User[TempInteger]'s animation speed to 200.00% of its original speed
    • Unit - Make User[TempInteger] Invulnerable
    • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
    • Set User_Special[TempInteger] = (Last created special effect)
    • Set User_Interval[TempInteger] = 2
Can be done in a "For Integer Loop"
Don't use Integer A or Integer B though, you should use your own integer variable for it.

Since there are only some differences between those chunks of code, you should store things like:

  • Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
into arrays.

  • For Each TempInt from 1 to 2, Do (Actions)
    • Loop - Actions
      • Set MUI1 = (MUI1 + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MUI1 Greater than Max_Index
        • Then - Actions
          • Set MUI2[MUI1] = MUI1
          • Set Max_Index = MUI1
        • Else - Actions
      • Set TempInteger = MUI2[MUI1]
      • Set TempLocation = (User_Location[TempInteger2] offset by 150.00 towards ((Facing of User[TempInteger2]) + Angles[TempInt]) degrees)
      • Unit - Create 1 UnitTypes[TempInt] for Player[TempInteger2] at TempLocation facing (Facing of User[TempInteger2]) degrees
      • Custom script: call RemoveLocation(udg_TempLocation)
      • Set User[TempInteger] = (Last created unit)
      • Set Player[TempInteger] = Player[TempInteger2]
      • Set User_Target[TempInteger] = User_Target[TempInteger2]
      • Set User_AbilityLevel[TempInteger] = User_AbilityLevel[TempInteger2]
      • Set Slashes[TempInteger] = Slashes[TempInteger2]
      • Set Damage[TempInteger] = Damage[TempInteger2]
      • Set User_AOE[TempInteger] = User_AOE[TempInteger2]
      • Set Count[TempInteger] = 0
      • Set FirstTarget[TempInteger] = True
      • Unit - Pause User[TempInteger]
      • Animation - Change User[TempInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
      • Animation - Change User[TempInteger]'s animation speed to 200.00% of its original speed
      • Unit - Make User[TempInteger] Invulnerable
      • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using SpecialEffects[TempInt]
      • Set User_Special[TempInteger] = (Last created special effect)
      • Set User_Interval[TempInteger] = TempInt
As you can see, the key areas are:


  • Set TempLocation = (User_Location[TempInteger2] offset by 150.00 towards ((Facing of User[TempInteger2]) + Angles[TempInt]) degrees)
  • Set User_Interval[TempInteger] = TempInt
  • Special Effect - Create a special effect attached to the weapon of User[TempInteger] using SpecialEffects[TempInt]
  • Unit - Create 1 UnitTypes[TempInt] for Player[TempInteger2] at TempLocation facing (Facing of User[TempInteger2]) degrees
Hope this helps.
 
Thanks for your comment!

I'm rather bad at simplifying things. =P

Appreciate your feedback heaps! I'm gonna start working on it.

EDIT:
the unittype of the unit that's you're creating should be configurable (Put it in a variable and set it on Map Initialization for users to change easily)
I think this isn't THAT important. The most important thing about spell is after all, about how it works. I'll leave it as Blademaster, but will put it in a variable.
 
Last edited:
Level 7
Joined
Sep 2, 2011
Messages
350
I have nothing to say. Basically, you create an illusion that casts omnislash along with you.

Rating: 2/5
Simple yet not so surprising
The spell is already made yet you recreated it
The effects are quite unpleasing
The spell works and does what it is written on the description
It is MUI. That's great
 
Top